From d35c66f00dcb4bb382202c2cc67db913e892db8f Mon Sep 17 00:00:00 2001 From: Dimas Date: Tue, 30 Nov 2021 17:58:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20Data=20Stru?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Doc/Balsam 165 data stru.xls | Bin 0 -> 86528 bytes Source/Internal/Include/package.h | 3 +- Source/Internal/ecan.c | 105 ++++-------------------------- Source/Internal/main.c | 1 - Source/Internal/measure.c | 7 +- Source/Internal/peripher.c | 6 +- 6 files changed, 21 insertions(+), 101 deletions(-) create mode 100644 Doc/Balsam 165 data stru.xls diff --git a/Doc/Balsam 165 data stru.xls b/Doc/Balsam 165 data stru.xls new file mode 100644 index 0000000000000000000000000000000000000000..d50315bf807306d5886c952615c51d20564b9e23 GIT binary patch literal 86528 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 literal 0 HcmV?d00001 diff --git a/Source/Internal/Include/package.h b/Source/Internal/Include/package.h index 986042a..18af18b 100644 --- a/Source/Internal/Include/package.h +++ b/Source/Internal/Include/package.h @@ -113,13 +113,14 @@ #define cTermoCal Modbus[127].bit.bit4 #define cKoefCalc Modbus[127].bit.bit5 -#define cSecretBt Modbus[127].bit.bit6 #define cUMPreset Modbus[127].bit.bit6 #define cUMPstart Modbus[127].bit.bit7 #define cInitDac Modbus[127].bit.bit8 #define cCalibrDac Modbus[127].bit.bit9 +#define cSecretBt Modbus[127].bit.bitA + /* #define cUMPstart Modbus[127].bit.bit8 #define cUMPreset Modbus[127].bit.bit9 diff --git a/Source/Internal/ecan.c b/Source/Internal/ecan.c index 8bc42ad..a5972eb 100644 --- a/Source/Internal/ecan.c +++ b/Source/Internal/ecan.c @@ -11,7 +11,6 @@ #include "RS485.h" #include "message.h" - // Prototype statements for functions found within this file. interrupt void CANa_handler(void); interrupt void CANa_reset_err(void); @@ -50,26 +49,13 @@ void InitCan(int Port, int DevNum) // Configure CAN pins using GPIO regs here EALLOW; -// if(!Port) - { - ECanRegs = &ECanaRegs; - ECanMboxes = &ECanaMboxes; - ECanMOTORegs = &ECanaMOTORegs; + ECanRegs = &ECanaRegs; + ECanMboxes = &ECanaMboxes; + ECanMOTORegs = &ECanaMOTORegs; - GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1; - GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; - } -#ifdef TUBER - else - { - ECanRegs = &ECanbRegs; - ECanMboxes = &ECanbMboxes; - ECanMOTORegs = &ECanbMOTORegs; + GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1; + GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; - GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 2; - GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 2; - } -#endif // Configure the eCAN RX and TX pins for eCAN transmissions ECanRegs->CANTIOC.all = 8; // only 3rd bit, TXFUNC, is significant ECanRegs->CANRIOC.all = 8; // only 3rd bit, RXFUNC, is significant @@ -148,23 +134,12 @@ void InitCan(int Port, int DevNum) ECanShadow.CANGIM.bit.GIL = 1; ECanRegs->CANGIM.all = ECanShadow.CANGIM.all; -// if(!Port) - { - PieVectTable.ECAN0INTA = &CANa_handler; - PieCtrlRegs.PIEIER9.bit.INTx5=1; // PIE Group 9, INT6 - PieVectTable.ECAN1INTA = &CANa_reset_err; - PieCtrlRegs.PIEIER9.bit.INTx6=1; // PIE Group 9, INT6 - } -#ifdef TUBER - else - { - PieVectTable.ECAN0INTB = &CANb_handler; - PieCtrlRegs.PIEIER9.bit.INTx7=1; // PIE Group 9, INT6 - PieVectTable.ECAN1INTB = &CANb_reset_err; - PieCtrlRegs.PIEIER9.bit.INTx8=1; // PIE Group 9, INT6 - } -#endif - IER |= M_INT9; // Enable CPU INT + PieVectTable.ECAN0INTA = &CANa_handler; + PieCtrlRegs.PIEIER9.bit.INTx5=1; // PIE Group 9, INT6 + PieVectTable.ECAN1INTA = &CANa_reset_err; + PieCtrlRegs.PIEIER9.bit.INTx6=1; // PIE Group 9, INT6 + + IER |= M_INT9; // Enable CPU INT EDIS; @@ -182,19 +157,8 @@ void CAN_send(int Port, int data[], int Addr) volatile struct ECAN_REGS * ECanRegs; volatile struct ECAN_MBOXES * ECanMboxes; -// if(!Port) - { - ECanRegs = &ECanaRegs; - ECanMboxes = &ECanaMboxes; - } -#ifdef TUBER - else - { - ECanRegs = &ECanbRegs; - ECanMboxes = &ECanbMboxes; - - } -#endif + ECanRegs = &ECanaRegs; + ECanMboxes = &ECanaMboxes; if(wait) if(!(ECanRegs->CANTA.all & 1)) @@ -293,49 +257,6 @@ interrupt void CANa_reset_err(void) PieCtrlRegs.PIEIER9.all = TempPIEIER; } -interrupt void CANb_handler(void) -{ -#ifdef TUBER - // Set interrupt priority: - volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; - IER |= M_INT9; - IER &= MINT9; // Set "global" priority - PieCtrlRegs.PIEIER9.all &= MG97; // Set "group" priority - PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts - EINT; - - Handlai(&ECanbMboxes); - - ECanbRegs.CANRMP.all = 2; - PieCtrlRegs.PIEACK.bit.ACK9 |= 1; - // Restore registers saved: - DINT; - PieCtrlRegs.PIEIER9.all = TempPIEIER; -#endif -} - -interrupt void CANb_reset_err(void) -{ -#ifdef TUBER - // Set interrupt priority: - volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; - IER |= M_INT9; - IER &= MINT9; // Set "global" priority - PieCtrlRegs.PIEIER9.all &= MG98; // Set "group" priority - PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts - EINT; - - ECanbRegs.CANTRR.all = 1; - CanTimeOutErrorTR++; - - PieCtrlRegs.PIEACK.bit.ACK9 |= 1; - - // Restore registers saved: - DINT; - PieCtrlRegs.PIEIER9.all = TempPIEIER; -#endif -} - //=========================================================================== // No more. //=========================================================================== diff --git a/Source/Internal/main.c b/Source/Internal/main.c index 473f85f..a84e752 100644 --- a/Source/Internal/main.c +++ b/Source/Internal/main.c @@ -154,7 +154,6 @@ void main() calc_temper_koef(); } - get_Buttons(); if(WAKEpowse) bTermoCal=0; diff --git a/Source/Internal/measure.c b/Source/Internal/measure.c index bd962fe..4fbe3a5 100644 --- a/Source/Internal/measure.c +++ b/Source/Internal/measure.c @@ -128,7 +128,6 @@ interrupt void cpu_timer1_isr_SENS(void) CanPowse = 0; CanGO = 1; } - TST = cTestLamp;//|bTestLamp; if(!sig.bit.Error|TST) toggle_READY(); @@ -507,7 +506,7 @@ modbus[0x64+chan]=Numb; // if(Desk == dsk_COMM) // if(ist) Current = -Current; - lev_count[chan] += (fabs(Current)-lev_count[chan])/1000.0; + lev_count[chan] += (fabs(Current)-lev_count[chan])/(ADC_FREQ/5); // Запомним if(ist) @@ -524,7 +523,7 @@ modbus[0x64+chan]=Numb; if((sens_type[chan]==CURRENT)||(Desk==dsk_COMM)) { - ffLev += (fLev-ffLev)/1000.0; + ffLev += (fLev-ffLev)/(ADC_FREQ/5); modbus[sens+DATASTART-1] = ffLev; } else @@ -536,7 +535,7 @@ modbus[0x64+chan]=Numb; if(Desk==dsk_COMM) Numb = Current-aCurrent; else Numb =-Current-aCurrent; - lev_count[thrd] += (fabs(Numb)-lev_count[thrd])/1000.0; + lev_count[thrd] += (fabs(Numb)-lev_count[thrd])/(ADC_FREQ/5); Modbus[0x68 + (chan >>1)*3 + 0].all = lev_count[chan]; Modbus[0x68 + (chan >>1)*3 + 1].all = lev_count[pair]; diff --git a/Source/Internal/peripher.c b/Source/Internal/peripher.c index 3694345..e8259e5 100644 --- a/Source/Internal/peripher.c +++ b/Source/Internal/peripher.c @@ -32,10 +32,10 @@ void get_Mode() Mode=1; - if(!GpioDataRegs.GPBDAT.bit.GPIO51) Mode += 8; - if(!GpioDataRegs.GPADAT.bit.GPIO22) Mode += 4; - if(!GpioDataRegs.GPADAT.bit.GPIO20) Mode += 2; if(!GpioDataRegs.GPADAT.bit.GPIO21) Mode += 1; + if(!GpioDataRegs.GPADAT.bit.GPIO20) Mode += 2; + if(!GpioDataRegs.GPADAT.bit.GPIO22) Mode += 4; + if(!GpioDataRegs.GPBDAT.bit.GPIO51) Mode += 8; if( (Mode==adr_POW1)||(Mode==adr_POW2)|| (Mode==adr_LOA1)||(Mode==adr_LOA2) ) Currentoz = 1;