UKSS_ICE/test.c
nelolik b8a0477c5c init commit.
Проект каким он достался от Димы.
2021-02-15 09:56:27 +03:00

184 lines
3.2 KiB
C

#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_SWPrioritizedIsrLevels.h"
#include "RS485.h"
#include "message.h"
#include "filter_bat2.h"
#include "measure.h"
#include "package.h"
#include "test.h"
#include "kanal.h"
#include "peripher.h"
WORDE PRES;
int isMask = 1;
int isLamp = 0;
int isBrit = 0;
int isNumb = 1111;
long cownt=0;
unsigned int Light = 0xFFFF;
int quaLamp = 6;
void what_is()
{
static int numb=0;
if(keyTest)
{
if(keyNext & !preNext)
{
if(!isBrit)
{
isBrit=1;
isMask=1;
isLamp=0;
}
else
{
isMask<<=1;
if(++isLamp >= quaLamp)
{
isMask=1;
isLamp=0;
} } }
if(isBrit)
{
if(keyUp && !preUp)
if(Bright[isLamp]<10) Bright[isLamp]++;
if(keyDown & !preDown)
if(Bright[isLamp]>0) Bright[isLamp]--;
}
else
{
if(cownt) cownt--;
else
{
cownt = BLN_FREQ/4;
numb++; if(numb==10) numb=1;
isNumb = numb*1111;
if(!isMask) isMask = 0xFFFF;
else isMask = 0;
} } }
else
{
if(isBrit)
{
isBrit=0;
Save_params();
} }
PRES = KEYS;
}
interrupt void cpu_timer1_isr_PULT(void)
{
static int count_bright=0;
unsigned int light=0, i;
static LONGE Diod1,Diod2;
static unsigned int Cownt,cownt;
int dig1,dig2;
EALLOW;
CpuTimer1.InterruptCount++;
IER |= MINT13; // Set "global" priority
EINT;
EDIS; // This is needed to disable write to EALLOW protected registers
GpioDataRegs.GPATOGGLE.bit.GPIO0=1; // Ready
if(count_bright) count_bright --;
else count_bright = 9;
for(i=0; i<quaLamp; i++)
{
if(count_bright < Bright[i]) light+=(1<<i);
}
Light = light;
Modbus[16].all = Inputs.all | cTestLamp;
if(Modbus[16].bit.bit4) GpioDataRegs.GPASET.bit.GPIO2=1; //
else GpioDataRegs.GPACLEAR.bit.GPIO2=1; //
Cownt++; cownt = Cownt&3;
what_is();
if(isBrit)
{
if(cownt==0) kanal_Send(adr_digg1,isLamp,0);
if(cownt==1) kanal_Send(adr_digg2,Bright[isLamp],0);
}
else
{
if(keyTest)
{
dig1 = isNumb;
dig2 = isNumb;
}
else
{
dig1 = Modbus[0].all;
dig2 = Modbus[1].all;
}
if(cownt==0) kanal_Send(adr_digg1,dig1,0);
if(cownt==1) kanal_Send(adr_digg2,dig2,0);
}
if(keyTest) kanal_Send(adr_lamps, isMask & Light,0);
else kanal_Send(adr_lamps, Modbus[2].all & Light,0);
if(Mode==adr_PLT1)
{
if(keyTest)
{
Diod1.wrd.word_0 = isMask;
Diod1.wrd.word_1 = isMask;
Diod2.wrd.word_0 = isMask;
Diod2.wrd.word_1 = isMask;
}
else
{
Diod1.wrd.word_0 = Modbus[3].all;
Diod1.wrd.word_1 = Modbus[4].all;
Diod2.wrd.word_0 = Modbus[5].all;
Diod2.wrd.word_1 = Modbus[6].all;
}
if(cownt==2) kanal_Send(adr_diod1,Diod1.all,0);
if(cownt==3) kanal_Send(adr_diod2,Diod2.all,0);
}
ServiceDog();
}
void timer_Init()
{
#ifdef TUBER
if(Mode==adr_PLT2) quaLamp = 4;
#endif
#ifdef P20183
if(Mode==adr_PLT2) quaLamp = 4;
if(Mode==adr_PLT3) quaLamp = 4;
#endif
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.XINT13 = &cpu_timer1_isr_PULT;
EDIS; // This is needed to disable write to EALLOW protected registers
ConfigCpuTimer(&CpuTimer1, SYSCLKOUT/1000000, 1000000/BLN_FREQ);
CpuTimer1Regs.TCR.all = 0x4020; // Use write-only instruction to set TSS bit = 0
IER |= M_INT13;
}