Files
ICE_22220_1/main.c
2026-07-09 14:50:52 +03:00

221 lines
3.9 KiB
C

#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "cntrl_adr.h"
#include "RS485.h"
#include "BIOS_DSP.h"
#include "filter_bat2.h"
#include "measure.h"
#include "Message.h"
#include "package.h"
#include "spise2p.h"
#include "i2c.h"
#include "tools.h"
#include "peripher.h"
#include "ADC.h"
#include "ecan.h"
#include "log_to_mem.h"
#include "measure.h"
#include "isolatio.h"
extern void DSP28x_usDelay(Uint32 Count);
void main()
{
int i,j,mask;
static int cancount[2],cancell[2];
RS_DATA * rs;
InitSysCtrl();
// Disable CPU interrupts and clear all CPU interrupt flags:
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
init_zone7();
setup_leds_line();
led1_on();
led2_off();
for (i=0;i<10;i++)
{
pause_us(50000);
led2_toggle();
led1_toggle();
}
led1_off();
led2_off();
get_Mode();
set_cntrl_addr(Mode,16);
create_uart_vars(sizeof(CMD_TO_TMS));
setup_uart(COM_1,115200);
setup_uart(COM_2,115200);
Init_Can(0,Addrr);
Init_Seeprom();
// clear_mem();
EnableInterrupts();
if(Desk!=dsk_ISOL)
{
setup_adc();
Init_sensors();
I2CA_Init(); pause_us(500000);
Load_caliber();
}
else
{
// timer_Init();
Init_optic();
}
Load_params();
Init_packMask();
if(Desk==dsk_ISOL)
{
timer_Init();
// Init_optic();
}
LastMode = Addrr;
for(i=0;i<3;i++)
{
cancount[i]= 0;
cancell[i] = CAN_send_start;
}
EALLOW;
SysCtrlRegs.WDCR= 0x2F;
EDIS;
MAY=1;
while(1)
{
if(CanGO)
{
CanGO=0;
for(i=0;i<2;i++)
if(Cancount[i])
if(++cancount[i] >= Cancount[i])
if(cancount[0])
{
cancount[i] = 0;
while(1)
{
if(cancell[i] >= 0x80) cancell[i]=0;
mask = Maska[i][cancell[i]/16] >> (cancell[i]%16);
if(!mask) cancell[i] = (cancell[i] + 0x10) & 0xFFF0;
else
{
while(!(mask & 1))
{
cancell[i]++; mask >>= 1;
}
break;
} }
CAN_send(0,(int *)Modbus,cancell[i]);
cancell[i]+=3;
} }
/*
CanGO=0;
for(i=0;i<3;i++)
{
if(cancount[i]) cancount[i]--;
else
{
cancount[i] = Cancount[i]; circ[i] = 0;
while( !((Maska[i][cancell[i]/16]>>(cancell[i]%16))&1) && circ[i] < 2 )
if(cancell[i]>CAN_send_finis)
{
cancell[i] = CAN_send_start; circ[i]++;
}
else cancell[i]++;
if(cancell[i]<=CAN_send_finis && circ[i] < 2)
{
CAN_send(0,(int *)Modbus,cancell[i]);
cancell[i]+=3;
} } } }
*/
if(cSaveParam)
{
cSaveParam=0;
Save_params();
}
if(cReadCal)
{
cReadCal=0;
Load_caliber();
}
if(cDefParam)
{
cDefParam=0;
Default_params();
}
if(cKoefCalc)
{
cKoefCalc=0;
Calcul_Iso_Koef();
}
get_Inputs();
if(Desk!=dsk_SHKF)
{
Modbus[23].all = Inputs.wrd.word_0;
}
if(Desk==dsk_ISOL)
{
IsShimON = cShimON;
if(!cShimON)
isolation_calc();
}
for(i=0;i<2;i++)
{
if(i) rs = &rs_a;
else rs = &rs_b;
j = get_command(rs);
if(j!=-1)
switch(j)
{
case CMD_INIT: init(rs); led2_toggle();break; // íà÷àëüíûå óñòàíîâêè
case CMD_INITLOAD: initload(rs); led2_toggle();break; // íàñòðîéêà çàãðóçêè
case CMD_RUN: run(rs); led2_toggle();break; // çàãðóçèòü áëîê
case CMD_LOAD: load(rs); led2_toggle();break; // çàãðóçèòü áëîê
case CMD_PEEK: peek(rs); led2_toggle();break; // ïðî÷èòàòü à÷åéêó ïàìàòè
case CMD_POKE: poke(rs); led2_toggle();break; // çàïèñàòü â à÷åéêó ïàìàòè
case CMD_UPLOAD: upload(rs); led2_toggle();break; // ïåðåäàòü áëîê ïàìàòè
case CMD_EXTEND: extendbios(rs); led2_toggle();break; // ðàñøèðåííûå êîìàíäû äëà áèîñà
case CMD_TFLASH: tflash(rs); led2_toggle();break; // ïðîøèòü TMS
// case CMD_STD: ReceiveCommand(rs); led2_toggle();break;
case CMD_MODBUS_3: ReceiveCommandModbus3(rs); led2_toggle();break;
case CMD_MODBUS_6: ReceiveCommandModbus6(rs); led2_toggle();break;
default: break;
} } } }