Лампа "высокое" управляется по CAN
This commit is contained in:
parent
111ec362b4
commit
ca3ffe0d98
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/Debug/
|
||||
/UKSSTMS320F28335.CS_/
|
||||
/Debug.lkf
|
||||
/cc_build_Debug.log
|
||||
/UKSSTMS320F28335.map
|
||||
/UKSSTMS320F28335.paf2
|
||||
/UKSSTMS320F28335.sbl
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -12,7 +12,7 @@ PHYSICAL MEMORY PARAMETERS
|
||||
|
||||
BOOT LOADER PARAMETERS
|
||||
Table Type: SERIAL PORT (SCI 8 bit Mode)
|
||||
Entry Point: 0x0000b42a
|
||||
Entry Point: 0x0000b4a9
|
||||
|
||||
|
||||
OUTPUT TRANSLATION MAP
|
||||
@ -21,9 +21,9 @@ OUTPUT TRANSLATION MAP
|
||||
--------------------------------------------------------------------------------
|
||||
OUTPUT FILES: D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.bin [b0..b7]
|
||||
|
||||
CONTENTS: 00000000..000071df BOOT TABLE
|
||||
.cinit : dest=0000b57f size=000001f2 width=00000002
|
||||
.text : dest=00008000 size=0000357f width=00000002
|
||||
CONTENTS: 00000000..000072df BOOT TABLE
|
||||
.cinit : dest=0000b5fe size=000001f3 width=00000002
|
||||
.text : dest=00008000 size=000035fe width=00000002
|
||||
ramfuncs : dest=0000c13c size=0000002b width=00000002
|
||||
.econst : dest=0000c000 size=00000111 width=00000002
|
||||
.switch : dest=0000c168 size=00000028 width=00000002
|
||||
|
Binary file not shown.
Binary file not shown.
@ -112,7 +112,7 @@ AdcRegs.ADCREFSEL.bit.REF_SEL=1;
|
||||
COUNT_DISCHARGE = ADC_FREQ/145; // 25;
|
||||
COUNT_TRANSICIA = ADC_FREQ/25; // 150;
|
||||
FILTER_CLIP = 200;
|
||||
WAKE_TIME =3L * ADC_FREQ;
|
||||
WAKE_TIME =5L * ADC_FREQ;
|
||||
}
|
||||
|
||||
WAKE = WAKE_TIME;
|
||||
@ -140,15 +140,20 @@ interrupt void adc_isr(void)
|
||||
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
|
||||
EINT;
|
||||
|
||||
if(WAKE) WAKE--;
|
||||
if( WAKE)
|
||||
{ WAKE--;
|
||||
if(!WAKE) cCanReset = 1;
|
||||
}
|
||||
|
||||
if(WAKE > WAKE_TIME - 10) goto fin;
|
||||
|
||||
if(Caliber_time)
|
||||
{
|
||||
if(!--Caliber_time)
|
||||
{
|
||||
cTermoCal = 0;
|
||||
cSaveParam = 1;
|
||||
cTermoCal = 0;
|
||||
cSaveParam = 1;
|
||||
cCanReset = 1;
|
||||
} }
|
||||
|
||||
if(cownt_one_canal==COUNT_DISCHARGE)
|
||||
|
@ -6,10 +6,7 @@ interrupt void cpu_timer1_isr_SENS(void);
|
||||
|
||||
void Init_sensors(void);
|
||||
void Init_packMask(void);
|
||||
//void measure_all(void);
|
||||
void Temper_count(int chan);
|
||||
//void Current_count(int chan);
|
||||
//void Power_count(int chan);
|
||||
void calc_sensor_koef();
|
||||
|
||||
typedef union
|
||||
@ -104,9 +101,8 @@ extern float tmpK[];
|
||||
extern int sens_type[];
|
||||
|
||||
extern unsigned long LoneLeft,LoneRite;
|
||||
|
||||
extern unsigned long Caliber_time;
|
||||
extern unsigned int CanPowse,CanGO;
|
||||
extern unsigned int Caliber_time;
|
||||
extern long WAKE;
|
||||
|
||||
#endif //_MEASURE
|
||||
|
@ -29,7 +29,6 @@ typedef struct
|
||||
} CMD_TO_TMS;
|
||||
|
||||
extern int modbus[],archiv[],county[],espero[];
|
||||
|
||||
extern unsigned int Maska[][8];
|
||||
|
||||
void ReceiveCommandModbus3(RS_DATA *rs_arr);
|
||||
|
@ -69,7 +69,7 @@
|
||||
#define sens_hi_edge (modbus+start_hi_edge)
|
||||
#define sens_lo_edge (modbus+start_lo_edge)
|
||||
|
||||
#define keys 0x10
|
||||
#define keys 0x10 // àäðåñ ïîâòîðàåìîé ïîñûëêè «keys»
|
||||
|
||||
#define Inputs Modbus[keys]
|
||||
#define inputs modbus[keys]
|
||||
@ -81,13 +81,14 @@
|
||||
#define bTermoCal Buttons.bit.bit2
|
||||
|
||||
#define RSleng modbus[0x20] // äëèíà ïîñûëêè RS485
|
||||
#define RScount modbus[0x21] // ďŕóçŕ ěĺćäó I ďîńűëęŕěč RS485
|
||||
#define RSpack (modbus+0x22) // ńŕěîĺ ďîńűëęŕ RS485
|
||||
#define RScount modbus[0x21] // ïàóçà ìåæäó ïîñûëêàìè RS485
|
||||
#define RSpack (modbus+0x22) // íà÷àëî ïîñûëêè RS485
|
||||
|
||||
#define Cancount (modbus+0x60) // ďŕóçŕ ěĺćäó I ďîńűëęŕěč CAN
|
||||
#define CanWait (modbus+0x62) // ěŕęńčěŕëüíŕŕ ďŕóçŕ
|
||||
#define Cancount (modbus+0x60) // ïàóçà ìåæäó ïîñûëêàìè CAN
|
||||
#define CanWait (modbus+0x62) // ïàóçà ïîñëå ïðîõîæäåíèà öèêëà
|
||||
#define CanRestart (modbus+0x64) // ïåðåçàïóñê ïîñûëêè
|
||||
#define CanRepeat modbus[0x66] // ńęîëüęî đŕç ďîâňîđŕňü íŕäî
|
||||
#define CanRptVez modbus[0x66] // êîë-âî ïîâòîðåíèé ïîñûëêè «keys»
|
||||
#define CanRptLen modbus[0x67] // äëèíà ïîâòîðàåìîé ïîñûëêè «keys»
|
||||
|
||||
#define Bright (modbus+0x68) // àðêîñòü ñèãíàëüíûõ ëàìïî÷åê
|
||||
#define Brightness modbus[0x68] // àðêîñòü ñèãíàëüíîé ëàìïî÷êè
|
||||
@ -107,8 +108,8 @@
|
||||
#define K150_D TCaliber[1]
|
||||
|
||||
#define cancyclo 0x78 // åãî àäðåñ
|
||||
#define CanCycle (modbus+0x78) // ń÷ĺň÷čę öčęëîâ CAN
|
||||
#define CanRound (modbus+0x7A) // ń÷ĺň÷čę ĺůĺ áîëĺĺ ďîëíűő öčęëîâ CAN
|
||||
#define CanCycle (modbus+0x78) // ñ÷åò÷èê ïðîõîæäåíèé öèêëîâ CAN
|
||||
#define CanRound (modbus+0x7A) // ñ÷åò÷èê îòîñëàííûõ ìàññèâîâ
|
||||
|
||||
#define Protokol modbus[125]
|
||||
#define LastMode modbus[126]
|
||||
@ -123,6 +124,8 @@
|
||||
#define cSecretBt Modbus[127].bit.bit6
|
||||
#define cCanReset Modbus[127].bit.bit7
|
||||
#define cRawMeat Modbus[127].bit.bit8
|
||||
#define cLiteFire Modbus[127].bit.bit9
|
||||
#define cHighVolt Modbus[127].bit.bitA
|
||||
|
||||
#define cReset Modbus[127].bit.bitF
|
||||
|
||||
|
@ -37,27 +37,27 @@ void timer_Init()
|
||||
IER |= M_INT13;
|
||||
}
|
||||
|
||||
int Isit(int num, int i)
|
||||
int Isit(int num, int i, int z)
|
||||
{
|
||||
int res, pls;
|
||||
|
||||
if((num<0)||(num>=0x80)) return 0;
|
||||
res = Maska[0][num/0x10]; if(i)
|
||||
res|= Maska[1][num/0x10];
|
||||
res = Maska[i][num/0x10];
|
||||
res &= (1<<(num&0x0F));
|
||||
|
||||
pls = (espero[num]>CanRestart[i]/3);
|
||||
|
||||
pls = pls || county[num];
|
||||
|
||||
res = res && pls;
|
||||
if(z) // äàííûå ðåàëüíî èçìåíèëèñ
|
||||
{
|
||||
pls = (espero[num]>CanRestart[i]/2);
|
||||
pls = pls || county[num];
|
||||
res = res && pls;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
int i,j,n,mask,qua;
|
||||
int i,j,n,z,mask,qua;
|
||||
static int rscount, cancount[2]={1,2},cancell[2]={0,0},candid[2]={0,0};
|
||||
static unsigned int masca[8], presbyt;
|
||||
|
||||
@ -115,6 +115,8 @@ void main()
|
||||
LastMode = Mode;
|
||||
Protokol = PROTOKOL;
|
||||
|
||||
for(i=0;i<0x80;i++)
|
||||
county[i]=1;
|
||||
for(i=0;i<8;i++)
|
||||
masca[i]=0;
|
||||
for(i=0;i<2;i++)
|
||||
@ -144,6 +146,7 @@ void main()
|
||||
|
||||
for(i=0;i<2;i++)
|
||||
if(cancount[i]) cancount[i]--;
|
||||
else cancell[i] = 0;
|
||||
}
|
||||
|
||||
for(i=0;i<2;i++)
|
||||
@ -152,14 +155,15 @@ void main()
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
|
||||
if( cancell[i]>= 0x80)
|
||||
{ cancell[i]=0;
|
||||
|
||||
if( candid[i])
|
||||
{ candid[i]=0;
|
||||
CanCycle[i]++;
|
||||
cancount[i] = CanWait[i];
|
||||
continue;
|
||||
cancount[i] += CanWait[i];
|
||||
goto Next;
|
||||
} }
|
||||
|
||||
mask = Maska[i][cancell[i]/0x10] >> (cancell[i]&0x0F);
|
||||
@ -173,23 +177,33 @@ void main()
|
||||
break;
|
||||
} }
|
||||
|
||||
z=1;
|
||||
if(espero[cancell[i]]>CanRestart[i])
|
||||
county[cancell[i]]=1;
|
||||
{
|
||||
county[cancell[i]]=1;
|
||||
z=0;
|
||||
}
|
||||
|
||||
n=1;
|
||||
if( (Desk==dsk_COMM)||(Desk==dsk_BKSD) )
|
||||
if(cancell[i]>=start_data)
|
||||
if(cancell[i]<=start_hi_edge)
|
||||
if(sens_type[cancell[i]-start_data]>=TERMO_AD)
|
||||
n=5;
|
||||
|
||||
if(abs(modbus[cancell[i]]-archiv[cancell[i]])>=n)
|
||||
|
||||
county[cancell[i]] = (cancell[i]==keys) ? CanRepeat:1;
|
||||
{
|
||||
if(cancell[i]==keys)
|
||||
for(j=0;j<CanRptLen;j++)
|
||||
county[cancell[i]+j] = CanRptVez;
|
||||
else
|
||||
county[cancell[i]] = 1;
|
||||
}
|
||||
|
||||
if (county[cancell[i]])
|
||||
{
|
||||
for(j= 3; j>0 && !Isit(cancell[i]+j,i); j--);
|
||||
for(n=j-3; n<0 && !Isit(cancell[i]+n,i); n++);
|
||||
for(j= 3; j>0 && !Isit(cancell[i]+j,i,z); j--);
|
||||
for(n=j-3; n<0 && !Isit(cancell[i]+n,i,1); n++);
|
||||
|
||||
qua = 1 + j - n;
|
||||
cancell[i]+= n;
|
||||
@ -197,8 +211,9 @@ void main()
|
||||
for(j=0;j<qua;j++)
|
||||
{
|
||||
n=cancell[i]+j;
|
||||
archiv[n]= modbus[n];
|
||||
espero[n]=0;
|
||||
|
||||
archiv[n]= modbus[n]; espero[n]= 0;
|
||||
if( county[n])
|
||||
{ county[n]--;
|
||||
if(!county[n] && n != cancyclo+i) candid[i]=1;
|
||||
@ -219,12 +234,15 @@ void main()
|
||||
CanRound[i]++;
|
||||
}
|
||||
|
||||
if( Cancount[i]>1)
|
||||
if(!cancount[!i])
|
||||
cancount[!i]=1; // ÷òîáû íå ñðàçó
|
||||
}
|
||||
else cancell[i]++;
|
||||
else cancell[i]++;
|
||||
}
|
||||
|
||||
Next:
|
||||
|
||||
get_Buttons();
|
||||
|
||||
if(cDefParam)
|
||||
@ -251,8 +269,11 @@ void main()
|
||||
calc_sensor_koef();
|
||||
}
|
||||
|
||||
if(WAKE) bTermoCal=0;
|
||||
if(!bTermoCal & presbyt) cSaveParam=1;
|
||||
if(!bTermoCal & presbyt)
|
||||
{
|
||||
cSaveParam = 1;
|
||||
cCanReset = 1;
|
||||
}
|
||||
presbyt = bTermoCal;
|
||||
|
||||
if(cCanReset)
|
||||
|
@ -31,7 +31,7 @@ FILTERBAT adc_filter[ADC_MAX];
|
||||
float out_filter[ADC_MAX];
|
||||
|
||||
unsigned int CanPowse=CANPOWSE,CanGO=0;
|
||||
unsigned int Caliber_time=0;
|
||||
unsigned long Caliber_time=0;
|
||||
|
||||
int GOOD[0x10];
|
||||
int ZERO[0x10];
|
||||
@ -91,10 +91,9 @@ interrupt void cpu_timer1_isr_SENS()
|
||||
}
|
||||
|
||||
if(!TST)
|
||||
if(count_bright == Brightness)
|
||||
{
|
||||
clear_LED_OUT_2();
|
||||
clear_LED_OUT_1();
|
||||
if(count_bright == Bright[0]) clear_LED_OUT_1();
|
||||
if(count_bright == Bright[1]) clear_LED_OUT_2();
|
||||
}
|
||||
|
||||
if(TST & !preTest)
|
||||
@ -116,11 +115,21 @@ interrupt void cpu_timer1_isr_SENS()
|
||||
work_lamp = blink_over;
|
||||
}
|
||||
else
|
||||
if(cLiteFire)
|
||||
{
|
||||
if(sig.bit.Error) work_lamp = blink_over;
|
||||
else work_lamp = 1;
|
||||
heat_lamp = 1;
|
||||
work_lamp = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(Desk==dsk_BKSD)
|
||||
{
|
||||
if(sig.bit.Error) work_lamp = blink_over;
|
||||
else work_lamp = 1;
|
||||
|
||||
if(bSecretBt|cSecretBt) work_lamp = blink_alarm;
|
||||
if(bSecretBt|cSecretBt) work_lamp = blink_alarm;
|
||||
}
|
||||
else work_lamp = cHighVolt;
|
||||
|
||||
if(sig.bit.OverHeat) heat_lamp = 1;
|
||||
else if(sig.bit.SubHeat) heat_lamp = blink_over;
|
||||
@ -150,7 +159,10 @@ void Init_sensors()
|
||||
}
|
||||
|
||||
for(i=0;i<ADC_MAX;i++)
|
||||
{
|
||||
adc_filter[i] = def_FILTERBAT;
|
||||
out_filter[i] = 0;
|
||||
}
|
||||
|
||||
if(Desk==dsk_COMM)
|
||||
{
|
||||
@ -172,8 +184,6 @@ void Init_sensors()
|
||||
MesPerSec = MesPerSec*3/cans; // òèïà, òðè ñåêóíäû
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Init_packMask()
|
||||
{
|
||||
int i,j;
|
||||
@ -203,7 +213,7 @@ void Init_packMask()
|
||||
for(i=0;i<3; i++)
|
||||
Maska[m_SLOW][i+3] = Maska[m_FAST][i]; // Óñòàâêè
|
||||
|
||||
Maska[m_SLOW][6]|=0x0100; // ßðêîñòü ëàìï
|
||||
Maska[m_SLOW][6]|=0x0300; // ßðêîñòü 2 ëàìï
|
||||
|
||||
if(Desk == dsk_BKSD)
|
||||
Maska[m_SLOW][7]|=0x0003; // Êàëèáð òåðìîäàò÷èêîâ
|
||||
@ -222,9 +232,9 @@ void Init_packMask()
|
||||
} }
|
||||
|
||||
Maska[m_FAST][1]|= 0x0003; // Äèñêðåòíûå kíîïêè
|
||||
Maska[m_SLOW][6]|= 0x00FF; // Ïåðèîäû ïîñûëîê
|
||||
Maska[m_FAST][7]|= 0x0100; // Ñ÷åò÷èê ïîñûëîê
|
||||
Maska[m_SLOW][7]|= 0x0E00; // Ñ÷åò÷èê ïîñûëîê
|
||||
Maska[m_SLOW][6]|= 0x007F; // Ïåðèîäû ïîñûëîê
|
||||
Maska[m_SLOW][7]|= 0xE000; // Ïðîòîêîë, àäðåñ, êîìàíäû
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,9 @@ void Default_params()
|
||||
|
||||
if(Desk == dsk_PULT)
|
||||
{
|
||||
for(i=0;i<7;i++)
|
||||
Bright[i] = bright[Mode-adr_PLT1][i];
|
||||
|
||||
Cancount[m_FAST] = 2; // * 10msec, ïàóçà ìåæäó ïîñûëêàìè CAN
|
||||
Cancount[m_SLOW] = 100; // * 10msec, ïàóçà ìåæäó ïîñûëêàìè CAN
|
||||
|
||||
@ -49,20 +52,22 @@ void Default_params()
|
||||
CanRestart[m_FAST] = 500; // * 10msec, ïåðåçàïóñê ïîñûëêè
|
||||
CanRestart[m_SLOW] = 1000; // * 10msec, ïåðåçàïóñê ïîñûëêè
|
||||
|
||||
CanRepeat = 5; // ñêîëüêî ðàç ïîâòîðàòü íàäî
|
||||
CanRptVez = 5; // кол-во повторений посылки «keys»
|
||||
CanRptLen = 1; // длина повтораемой посылки «keys»
|
||||
}
|
||||
else
|
||||
{
|
||||
Cancount[m_FAST] = 20; // * 10msec, ïàóçà ìåæäó ïîñûëêàìè CAN
|
||||
Cancount[m_SLOW] = 100; // * 10msec, ïàóçà ìåæäó ïîñûëêàìè CAN
|
||||
|
||||
CanWait[m_FAST] = 100; // * 10msec, ïàóçà ïîñëå öèêëà
|
||||
CanWait[m_FAST] = 1; // * 10msec, пауза после цикла
|
||||
CanWait[m_SLOW] = 1; // * 10msec, ïàóçà ïîñëå öèêëà
|
||||
|
||||
CanRestart[m_FAST] = 500; // * 10msec, ïåðåçàïóñê ïîñûëêè
|
||||
CanRestart[m_SLOW] = 1000; // * 10msec, ïåðåçàïóñê ïîñûëêè
|
||||
|
||||
CanRepeat = 1; // ñêîëüêî ðàç ïîâòîðàòü íàäî
|
||||
CanRptVez = 1; // кол-во повторений посылки «keys»
|
||||
CanRptLen = 1; // длина повтораемой посылки «keys»
|
||||
}
|
||||
|
||||
if(Mode == adr_PLT1)
|
||||
@ -71,13 +76,11 @@ void Default_params()
|
||||
RScount = 25; // * 10msec, ïàóçà ìåæäó ïîñûëêàìè RS485
|
||||
}
|
||||
|
||||
if(Desk==dsk_PULT) for(i=0;i<7;i++)
|
||||
Bright[i] = bright[Mode-adr_PLT1][i];
|
||||
if(Desk==dsk_SHKF) Brightness = 10;
|
||||
if(Desk==dsk_BKSD) Brightness = 8;
|
||||
|
||||
if(Desk == dsk_COMM)
|
||||
{
|
||||
Bright[0] = 10;
|
||||
Bright[1] = 6;
|
||||
|
||||
K300_1 = 1900;
|
||||
K300_2 = 1900;
|
||||
K400_1 = 2500;
|
||||
@ -92,6 +95,9 @@ void Default_params()
|
||||
|
||||
if(Desk==dsk_BKSD)
|
||||
{
|
||||
Bright[0] = 8;
|
||||
Bright[1] = 8;
|
||||
|
||||
K100_D = 700;
|
||||
K150_D = 2500;
|
||||
|
||||
@ -136,7 +142,7 @@ void Load_params()
|
||||
if(TermoSW)
|
||||
{
|
||||
cTermoCal = 1;
|
||||
Caliber_time = 0xFFFF;
|
||||
Caliber_time = 25L * ADC_FREQ;
|
||||
} } }
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user