Бутресет фуз прошит насмерть. В еепроме стоит флажок, который показывает, что происходит -прошивка или нормальная работа. Если работа -переставляем ИВСЕЛ и прыгаем в 0. Если прошивка -ждем волшебных команд
void Save_Signature(unsigned char Value) // Save signature 2 EEPROM
{
EE_Serial_Number.Boot_sign = Value;
}
//---------------------------------------------------------------------------------------------
void reset()
{
Turn_WDT_On();
MCUCR = (1 << IVCE); //0x01 // Enable interrupt vector select
MCUCR = (1 << IVSEL); //Move interrupt vector to boot
while (1);
}
//---------------------------------------------------------------------------------------------
void Run_App()
{
TApp App;
// Turn_WDT_On();
MCUCR = (1 << IVCE); //0x01 // Enable interrupt vector select
MCUCR = 0x0000; //Move interrupt vector to flash
App=0x00;
App();
}
void main(void)
{
if (EE_Serial_Number.Boot_sign == END_WRITE_FLASH)
Run_App();
MCUCR = (1< MCUCR = (1< InitUSART_485(); InitAddress();
SendPacket('T','G', 0);
FlashCounter = EE_Serial_Number._reserved2_[0];
FlashCounter += EE_Serial_Number._reserved2_[1]<<8;
while(1)
{
Packet_Parser();
}
}