Clean project. Change receiveCpuModbusData function
							parent
							
								
									3abcb43b33
								
							
						
					
					
						commit
						4315b2865d
					
				@ -1,308 +0,0 @@
 | 
			
		||||
// Some comments about author
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include "DSP2833x_Device.h"
 | 
			
		||||
#include "DSP28x_Project.h"         // Device Headerfile and Examples Include File
 | 
			
		||||
#include "DSP2833x_Examples.h"
 | 
			
		||||
// #include "Protocol/CAN.h"
 | 
			
		||||
// #include "Protocol/CAN_data.h"
 | 
			
		||||
// #include "Protocol/DigitalIO.h"
 | 
			
		||||
#include "Periphery.h"
 | 
			
		||||
 | 
			
		||||
// #include "DSP28335/GPIO.h"
 | 
			
		||||
 | 
			
		||||
#include "DSP28335/SCIB.h"
 | 
			
		||||
#include "DSP28335/SCIBase.h"
 | 
			
		||||
 | 
			
		||||
// #include "MODBUSRTU/ModbusRTUCRC.h"
 | 
			
		||||
// #include "MODBUSRTU/ModbusRTUDefines.h"
 | 
			
		||||
// #include "MODBUSRTU/ModbusRTUTransceiver.h"
 | 
			
		||||
// #include "MODBUSRTU/ModbusRTUVariant.h"
 | 
			
		||||
// #include "MODBUSRTU/ModbusRTUTransceiverBase.h"
 | 
			
		||||
 | 
			
		||||
// #include "DSP28335/MeasureTimeInterval.h"
 | 
			
		||||
 | 
			
		||||
// #include "WEINBUS/HeaderWeinbus.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Functions declarations
 | 
			
		||||
void idle_loop(void);
 | 
			
		||||
 | 
			
		||||
interrupt void cpu_timer0_isr(void);
 | 
			
		||||
interrupt void cpu_timer1_isr(void);
 | 
			
		||||
interrupt void canb_isr(void);
 | 
			
		||||
interrupt void canb_box_isr(void);
 | 
			
		||||
 | 
			
		||||
Periphery periphery;
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------------
 | 
			
		||||
// DSP28335::SCISetup              SCIbSetup;
 | 
			
		||||
// DSP28335::SCIB                  scib(ScibRegs);
 | 
			
		||||
 | 
			
		||||
// DSP28335::MeasureTimeInterval   interval_measure(CpuTimer2);
 | 
			
		||||
 | 
			
		||||
// MODBUS RTU - PORT & HMI
 | 
			
		||||
// MODBUSRTU::ModbusRTUTransceiverSetup modbus;
 | 
			
		||||
// MODBUSRTU::ModbusRTUCRC     crc;
 | 
			
		||||
// MODBUSRTU::ModbusRTUTransceiver                 modbus_port(scib, interval_measure, crc);
 | 
			
		||||
 | 
			
		||||
// WEINBUS::WeinbusSlave       hmi(crc);
 | 
			
		||||
// MODBUSRTU::ModbusRTUTransceiverConfiguration    modbus_port_configuration;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// // Registers to testing HMI interface
 | 
			
		||||
// WEINBUS::REGISTER_32 test_hmi_float_reg_400 = WEINBUS::REGISTER_32(0);
 | 
			
		||||
// WEINBUS::REGISTER_32 test_hmi_float_reg_401 = WEINBUS::REGISTER_32(0);
 | 
			
		||||
// WEINBUS::REGISTER_32 test_hmi_float_reg_402 = WEINBUS::REGISTER_32(0);
 | 
			
		||||
// WEINBUS::REGISTER_32 test_hmi_float_reg_403 = WEINBUS::REGISTER_32(0);
 | 
			
		||||
// WEINBUS::REGISTER_32 test_hmi_float_reg_404 = WEINBUS::REGISTER_32(0);
 | 
			
		||||
// //<>
 | 
			
		||||
 | 
			
		||||
// void test_init_hmi_buffers();
 | 
			
		||||
void clear_array(uint16_t *pointer, uint16_t sizearray);
 | 
			
		||||
//----------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
volatile Uint16 infCounter = 0;
 | 
			
		||||
volatile Uint16 canISRcounter = 0;
 | 
			
		||||
volatile Uint16 canBoxISRcounter = 0;
 | 
			
		||||
volatile Uint16 testCounter = 0;
 | 
			
		||||
 | 
			
		||||
volatile bool init = true;
 | 
			
		||||
volatile bool startTX = false;
 | 
			
		||||
volatile bool update = false;
 | 
			
		||||
volatile bool sendRemote = false;
 | 
			
		||||
 | 
			
		||||
Uint16 modbusInit = 0;
 | 
			
		||||
int32 testVar = 0;
 | 
			
		||||
 | 
			
		||||
float test = 55;
 | 
			
		||||
 | 
			
		||||
void main()
 | 
			
		||||
{
 | 
			
		||||
    ServiceDog();
 | 
			
		||||
    DisableDog();
 | 
			
		||||
 | 
			
		||||
    InitSysCtrl();
 | 
			
		||||
 | 
			
		||||
    DINT;
 | 
			
		||||
 | 
			
		||||
    InitPieCtrl();
 | 
			
		||||
 | 
			
		||||
    IER = 0x0000;
 | 
			
		||||
    IFR = 0x0000;
 | 
			
		||||
 | 
			
		||||
    InitPieVectTable();
 | 
			
		||||
 | 
			
		||||
    EALLOW;
 | 
			
		||||
    PieVectTable.TINT0 = &cpu_timer0_isr;
 | 
			
		||||
    PieVectTable.XINT13 = &cpu_timer1_isr;
 | 
			
		||||
    PieVectTable.ECAN0INTB = &canb_isr;
 | 
			
		||||
    PieVectTable.ECAN1INTB = &canb_box_isr;
 | 
			
		||||
    EDIS;
 | 
			
		||||
 | 
			
		||||
    InitCpuTimers();
 | 
			
		||||
    ConfigCpuTimer(&CpuTimer0, 150, 1000);  // 1ms
 | 
			
		||||
    ConfigCpuTimer(&CpuTimer1, 150, 5000);  // 5ms
 | 
			
		||||
 | 
			
		||||
    IER |= M_INT1;  // Enable CPU Interrupt 1
 | 
			
		||||
    IER |= M_INT9;  // Enable CPU Interrupt 9
 | 
			
		||||
    IER |= M_INT13; // Enable CPU Interrupt 13
 | 
			
		||||
 | 
			
		||||
    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
 | 
			
		||||
    PieCtrlRegs.PIEIER9.bit.INTx7 = 1;  // from 5 to 8
 | 
			
		||||
    PieCtrlRegs.PIEIER9.bit.INTx8 = 1;
 | 
			
		||||
 | 
			
		||||
    periphery.config();
 | 
			
		||||
    periphery.init_modbus_table();
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------------
 | 
			
		||||
    // SCIbSetup.config.baudrate = SCIB_BAUDRATE_DEFAULT;
 | 
			
		||||
    // SCIbSetup.config.parity   = SCIB_PARITY_DEFAULT;
 | 
			
		||||
    // SCIbSetup.config.stopbits = SCIB_STOPBITS_DEFAULT;
 | 
			
		||||
    // SCIbSetup.config.lenght   = SCIB_LENGHT_DEFAULT;
 | 
			
		||||
    // SCIbSetup.gpio_setup      = SCIB_GPIO_SETUP_DEFAULT;
 | 
			
		||||
 | 
			
		||||
    // modbus.gpio_re_de_setup = &DSP28335::GPIO::gpio_scib_re_de_setup;
 | 
			
		||||
    // modbus.gpio_driver_enable = &DSP28335::GPIO::gpio_scib_re_de_set;
 | 
			
		||||
    // modbus.gpio_receiver_enable = &DSP28335::GPIO::gpio_scib_re_de_clear;
 | 
			
		||||
 | 
			
		||||
    // scib.setup(SCIbSetup);
 | 
			
		||||
 | 
			
		||||
    // interval_measure.set_magic((Uint32)0);
 | 
			
		||||
    // interval_measure.reset();
 | 
			
		||||
 | 
			
		||||
    // modbus_port.setup(modbus);
 | 
			
		||||
//----------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    // Enable global Interrupts and higher priority real-time debug events:
 | 
			
		||||
    EINT;   // Enable Global interrupt INTM
 | 
			
		||||
    ERTM;   // Enable Global realtime interrupt DBGM
 | 
			
		||||
 | 
			
		||||
    periphery.updateVersionFPGA();
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------------    
 | 
			
		||||
    
 | 
			
		||||
    // MODBUS RTU
 | 
			
		||||
    //
 | 
			
		||||
    // modbus_port_configuration.node_id         = 0x5;
 | 
			
		||||
    // modbus_port_configuration.config.baudrate = DSP28335::BR9600;
 | 
			
		||||
    // modbus_port_configuration.config.parity   = DSP28335::NO;
 | 
			
		||||
    // modbus_port_configuration.config.stopbits = DSP28335::ONE;
 | 
			
		||||
    // modbus_port_configuration.config.lenght   = DSP28335::LEN8;
 | 
			
		||||
    //
 | 
			
		||||
    // test_init_hmi_buffers();
 | 
			
		||||
    // periphery.test_init_hmi_buffers();
 | 
			
		||||
 | 
			
		||||
    // modbus_port.configure(modbus_port_configuration);
 | 
			
		||||
 | 
			
		||||
    // clear_array((uint16_t *)hmi.rxStack, sizeof(hmi.rxStack)/sizeof(uint16_t));
 | 
			
		||||
    // clear_array((uint16_t *)hmi.txStack, sizeof(hmi.txStack)/sizeof(uint16_t));
 | 
			
		||||
 | 
			
		||||
    // modbus_port.setRXBuffer((uint16_t*)hmi.rxStack, &hmi.rxLength);
 | 
			
		||||
    // modbus_port.setTXBuffer((uint16_t*)hmi.txStack, &hmi.txLength);
 | 
			
		||||
    // periphery.setModbusBuffers();
 | 
			
		||||
    // periphery.addInputRegFloat(5, test);
 | 
			
		||||
 | 
			
		||||
    // interval_measure.set_magic(19);
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    CpuTimer0.RegsAddr->TCR.bit.TSS = 0;
 | 
			
		||||
    CpuTimer1.RegsAddr->TCR.bit.TSS = 0;
 | 
			
		||||
 | 
			
		||||
    idle_loop();
 | 
			
		||||
    //
 | 
			
		||||
}//end main()
 | 
			
		||||
//
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
void idle_loop()
 | 
			
		||||
{
 | 
			
		||||
    while (true)
 | 
			
		||||
    {
 | 
			
		||||
        infCounter++;
 | 
			
		||||
 | 
			
		||||
        if (!periphery.isModbusInit()){
 | 
			
		||||
            periphery.receiveModbusParameters();
 | 
			
		||||
            // modbus_port.configure(modbus_port_configuration);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //
 | 
			
		||||
        // MODBUS RTU HMI Service
 | 
			
		||||
        //
 | 
			
		||||
        if (periphery.isModbusInit()){
 | 
			
		||||
            periphery.modbusRTU.execute();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        periphery.receiveCpuModbusData();
 | 
			
		||||
        //<>
 | 
			
		||||
    }//end while
 | 
			
		||||
 | 
			
		||||
}//end idle_loop()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
interrupt void cpu_timer0_isr(void)
 | 
			
		||||
{
 | 
			
		||||
    periphery.processDigitalOutput();
 | 
			
		||||
    periphery.sendModbusDataToCPU();
 | 
			
		||||
 | 
			
		||||
    PieCtrlRegs.PIEACK.all |= PIEACK_GROUP1;
 | 
			
		||||
}//end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
interrupt void cpu_timer1_isr(){
 | 
			
		||||
    CpuTimer1.InterruptCount++;
 | 
			
		||||
 | 
			
		||||
    periphery.processDigitalInput();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
interrupt void canb_isr(void){
 | 
			
		||||
    canISRcounter++;
 | 
			
		||||
 | 
			
		||||
    CANGIF0_REG CANGIF0_SHADOW;
 | 
			
		||||
    volatile Uint32 resetBit;
 | 
			
		||||
 | 
			
		||||
    CANGIF0_SHADOW.all = ECanbRegs.CANGIF0.all;
 | 
			
		||||
 | 
			
		||||
    if (CANGIF0_SHADOW.bit.WLIF0){
 | 
			
		||||
        resetBit = 256;
 | 
			
		||||
        ECanbRegs.CANGIF0.all = 256ul;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (CANGIF0_SHADOW.bit.EPIF0){
 | 
			
		||||
        ECanbRegs.CANGIF0.all = 528ul;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interrupt void canb_box_isr(void){
 | 
			
		||||
    canBoxISRcounter++;
 | 
			
		||||
 | 
			
		||||
    // Just example
 | 
			
		||||
    //
 | 
			
		||||
    // volatile Uint32 boxNumberIsr;
 | 
			
		||||
    // boxNumberIsr = ECanbRegs.CANGIF1.bit.MIV1;
 | 
			
		||||
 | 
			
		||||
    // CANRMP_REG temp;
 | 
			
		||||
    // temp.all = 0;
 | 
			
		||||
    // temp.all = 1ul << 27;
 | 
			
		||||
 | 
			
		||||
    // ECanbRegs.CANRMP.all = temp.all;
 | 
			
		||||
 | 
			
		||||
    // MODBUS_COMM_CPU_Message27.mdh.all = ECanbMboxes.MBOX27.MDH.all;
 | 
			
		||||
    // MODBUS_COMM_CPU_Message27.mdl.all = ECanbMboxes.MBOX27.MDL.all;
 | 
			
		||||
 | 
			
		||||
    // temp.all = ECanbRegs.CANRMP.all;
 | 
			
		||||
    // if (temp.bit.RMP25){
 | 
			
		||||
    //     temp.all = 1ul << 25;
 | 
			
		||||
    //     ECanbRegs.CANRMP.all = temp.all;
 | 
			
		||||
 | 
			
		||||
    //     MODBUS_COMM_CPU_Message25.mdh.all = ECanbMboxes.MBOX25.MDH.all;
 | 
			
		||||
    //     MODBUS_COMM_CPU_Message25.mdl.all = ECanbMboxes.MBOX25.MDL.all;
 | 
			
		||||
    // }
 | 
			
		||||
 | 
			
		||||
    PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// void test_init_hmi_buffers()
 | 
			
		||||
// {
 | 
			
		||||
//     //
 | 
			
		||||
//     // hmi writeable registers
 | 
			
		||||
//     hmi.inputRegisters.set(WEINBUS::INPUTREGISTERS, 400);
 | 
			
		||||
//     hmi.inputRegisters.add( 0, &test_hmi_float_reg_400.f);
 | 
			
		||||
//     hmi.inputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f);
 | 
			
		||||
//     hmi.inputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f);
 | 
			
		||||
//     hmi.inputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f);
 | 
			
		||||
//     hmi.inputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f);
 | 
			
		||||
//     //
 | 
			
		||||
//     // hmi readable registers
 | 
			
		||||
//     hmi.outputRegisters.set(WEINBUS::OUTPUTREGISTERS, 400);
 | 
			
		||||
//     hmi.outputRegisters.add( 0 , &(float&)test_hmi_float_reg_400.f);
 | 
			
		||||
//     hmi.outputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f);
 | 
			
		||||
//     hmi.outputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f);
 | 
			
		||||
//     hmi.outputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f);
 | 
			
		||||
//     hmi.outputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f);
 | 
			
		||||
//     //
 | 
			
		||||
// }//
 | 
			
		||||
// //
 | 
			
		||||
 | 
			
		||||
void clear_array(uint16_t *pointer, uint16_t sizearray)
 | 
			
		||||
{
 | 
			
		||||
    static uint16_t *p_array = 0;
 | 
			
		||||
    static uint16_t size_array = 0;
 | 
			
		||||
 | 
			
		||||
    p_array = pointer;
 | 
			
		||||
    size_array = sizearray;
 | 
			
		||||
 | 
			
		||||
    while(size_array--)
 | 
			
		||||
    {
 | 
			
		||||
        *p_array++ = 0;
 | 
			
		||||
    }
 | 
			
		||||
    //
 | 
			
		||||
}//
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue