/************************************************************************** Description: Ïðîãðàììà óïðàâëåíèÿ INU. Âûçûâàåò ï/ï èíèöèàëèçàöèè ïðîöåññîðà è ï/ï îáìåíà. Àâòîð: Óëèòîâñêèé Ä.È. Äàòà ïîñëåäíåãî îáíîâëåíèÿ: 2021.10.05 **************************************************************************/ #include "def.h" #include "main.h" void control_processor_led(void); void talk_with_desk(void); void talk_with_mst(void); void write_eeprom(void); extern void detcoeff(void); extern void init28335(void); #ifndef ML void main(void) { // disable the watchdog EALLOW; SysCtrlRegs.WDCR = 0x0068; EDIS; // èíèöèàëèçàöèÿ ïðîöåññîðà init28335(); // èíèöèàëèçàöèÿ ïðîãðàììû detcoeff(); // re-enable the watchdog EALLOW; SysCtrlRegs.WDCR = 0x00A8; // ... clear the WD counter SysCtrlRegs.WDKEY = 0x55; SysCtrlRegs.WDKEY = 0xAA; EDIS; // clear Interrupt Flag ADC Sequencer 1 AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // clear PIEIFR1 register PieCtrlRegs.PIEIFR1.all = 0; // before we can start we have to enable interrupt mask in the PIE unit PieCtrlRegs.PIEIER1.bit.INTx6 = 1; // core line 1 (INT1) IER |= M_INT1; // enable global interrupts and higher priority real-time debug events EINT; ERTM; // çàïóñêàåì òàéìåðû (up-down-count mode) EPwm1Regs.TBCTL.bit.CTRMODE = 2; EPwm2Regs.TBCTL.bit.CTRMODE = 2; EPwm3Regs.TBCTL.bit.CTRMODE = 2; EPwm4Regs.TBCTL.bit.CTRMODE = 2; EPwm5Regs.TBCTL.bit.CTRMODE = 2; EPwm6Regs.TBCTL.bit.CTRMODE = 2; #ifdef ML EPwm7Regs.TBCTL.bit.CTRMODE = 2; EPwm8Regs.TBCTL.bit.CTRMODE = 2; EPwm9Regs.TBCTL.bit.CTRMODE = 2; EPwm10Regs.TBCTL.bit.CTRMODE = 2; EPwm11Regs.TBCTL.bit.CTRMODE = 2; EPwm12Regs.TBCTL.bit.CTRMODE = 2; #endif // loop forever while(1) { // îáìåí ñ ÂÓ // ( -> mst) talk_with_mst(); // îáìåí ñ ÏÓ // ( -> param[], eprom.writeRequestNumber) talk_with_desk(); // çàïèñü â EEPROM // (param[], eprom.writeRequestNumber -> eprom.writeRequestNumber) if ( eprom.writeRequestNumber > 0 ) { write_eeprom(); } // óïðàâëÿåì ñâåòîäèîäàìè íà ïðîöåññîðíîé ïëàòå control_processor_led(); } //while(1) } //void main(void) // Óïðàâëÿåò ñâåòîäèîäàìè íà ïðîöåññîðíîé ïëàòå void control_processor_led(void) { static unsigned short Tled = (unsigned short)(0.5/TY); static unsigned short tLed = 0; if ( tLed < Tled ) { tLed++; } else { tLed = 1; // â àâàðèéíîì ðåæ. ìîðãàåì êðàñíûì ñâåòîäèîäîì if ( state == STATE_SHUTDOWN ) { LED_GREEN1_OFF; LED_GREEN2_OFF; LED_RED_TOGGLE; } // â ðåæ. îñòàíîâêè ìîðãàåì ïåðâûì çåë¸íûì ñâåòîäèîäîì else if ( state == STATE_STOP ) { LED_GREEN1_TOGGLE; LED_GREEN2_OFF; LED_RED_OFF; } // â ðàáî÷åì ðåæ. ìîðãàåì âòîðûì çåë¸íûì ñâåòîäèîäîì else { LED_GREEN1_OFF; LED_GREEN2_TOGGLE; LED_RED_OFF; } } } //void control_processor_led(void) // Ïîëó÷àåò ïàðàìåòðû ñ ÏÓ // ( -> param[], eprom.writeRequestNumber) void talk_with_desk(void) { } // Ïîëó÷àåò êîìàíäû ñ ÂÓ // ( -> mst) void talk_with_mst(void) { } // Çàïèñûâàåò ïàðàìåòðû â EEPROM // (param[], eprom.writeRequestNumber -> eprom.writeRequestNumber) void write_eeprom(void) { } #endif //ML