Balsam_165/Source/Internal/main.c

237 lines
4.4 KiB
C
Raw Blame History

#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "cntrl_adr.h"
#include "RS485.h"
#include "BIOS_DSP.h"
#include "Message.h"
#include "filter_bat2.h"
#include "measure.h"
#include "package.h"
#include "spise2p.h"
#include "tools.h"
#include "peripher.h"
#include "ADC.h"
#include "DAC.h"
#include "ecan.h"
#include "kanal.h"
#include "pulto.h"
#include "log_to_mem.h"
#include "measure.h"
extern void DSP28x_usDelay(Uint32 Count);
void timer_Init()
{
EALLOW; // This is needed to write to EALLOW protected registers
if(Desk==dsk_EPLT) PieVectTable.XINT13 = &cpu_timer1_isr_PULT;
else PieVectTable.XINT13 = &cpu_timer1_isr_SENS;
EDIS; // This is needed to disable write to EALLOW protected registers
ConfigCpuTimer(&CpuTimer1, SYSCLKOUT/1000000, 1000000/READY_FREQ);
CpuTimer1Regs.TCR.all = 0x4020; // Use write-only instruction to set TSS bit = 0
IER |= M_INT13;
}
void main()
{
int i,j,mask;
static unsigned int cancount[2], cancell[2];
static int preCstart=1,preCstop=1;
RS_DATA * rs;
int presbyt=0;
InitSysCtrl();
// Disable CPU interrupts and clear all CPU interrupt flags:
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
init_zone7();
create_uart_vars(sizeof(CMD_TO_TMS));
setup_uart(COM_1,115200);
setup_uart(COM_2,115200);
InitSeeprom();
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();
InitCan(0,Mode);
set_cntrl_addr(Mode,16);
timer_Init();
EnableInterrupts();
if(Desk!=dsk_EPLT)
{
setup_adc();
Init_sensors();
}
Init_packMask();
Load_params();
Init_sensors_more();
LastMode = Mode;
EALLOW;
SysCtrlRegs.WDCR= 0x2F;
EDIS;
READY = 1;
while(1)
{
if(CanGO)
{
CanGO=0;
for(i=0;i<2;i++)
if(Cancount[i])
if(++cancount[i] >= Cancount[i])
{
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,modbus,cancell[i]);
cancell[i]+=3;
} }
if(cDefParam)
{
cDefParam=0;
Default_params();
}
if(cSaveParam)
{
cSaveParam=0;
Save_params();
}
if(cLoadParam)
{
cLoadParam=0;
Load_params();
}
if(cKoefCalc)
{
cKoefCalc=0;
calc_temper_koef();
}
get_Buttons();
if(WAKEpowse) bTermoCal=0;
if(!bTermoCal & presbyt) cSaveParam=1;
presbyt = bTermoCal;
if(Desk==dsk_LOAD)
{
/* ---------------------------------------------------------
if (bStartBit !=prestart)
if(prestart) { cUMPreset=1; cUMPstart=0; }
else { cUMPstart=1; cUMPreset=0; }
prestart=bStartBit;
// ---------------------------------------------------------
*/
if(cUMPreset!=preCstop)
if(cUMPreset)
{
set_STOP_DPTB(); STOPpowse = READY_FREQ; /*set_RES_OUT_1();*//* set_LED_OUT_1();*/ }
else
{
clear_STOP_DPTB(); /*clear_RES_OUT_1();*//* clear_LED_OUT_1();*/ }
preCstop = cUMPreset;
if(cUMPstart!=preCstart)
if(cUMPstart)
{
set_START_DPTB();
set_RES_OUT_2();
STOPpowse = READY_FREQ; /* set_LED_OUT_2(); */
}
else
{
clear_START_DPTB();
clear_RES_OUT_2();
/*clear_RES_OUT_1(); clear_LED_OUT_2(); */
}
preCstart = cUMPstart;
if(!STOPpowse) { clear_START_DPTB(); clear_STOP_DPTB(); }
}
for(i=0;i<2;i++)
{
if(i) rs = &rs_a;
else rs = &rs_b;
j = get_command(rs);
if(j!=-1)
{
Lonely=0;
led2_toggle();
switch(j)
{
case CMD_INIT: init(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case CMD_INITLOAD: initload(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case CMD_RUN: run(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
case CMD_LOAD: load(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
case CMD_PEEK: peek(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case CMD_POKE: poke(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case CMD_UPLOAD: upload(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case CMD_EXTEND: extendbios(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
case CMD_TFLASH: tflash(rs); break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TMS
case CMD_MODBUS_3: ReceiveCommandModbus3(rs); break;
case CMD_MODBUS_6: ReceiveCommandModbus6(rs); break;
default: break;
} } } } }