На пример:
if (a==1 ){//если "а"
код сброса
}
Код: Выделить всё
void (*reset)(void) = (void*)0;
if (a==1 ){//если "а"
reset();
}http://www.atmel.com/webdoc/AVRLibcRefe ... reset.htmlATMEL86 писал(а):как сбросить мк ?
это не функция.ATMEL86 писал(а):расскажите немного про эту функцию: void (*reset)(void) = (void*)0;
Мда...ATMEL86 писал(а):если применить сторожевой таймер?
как правильно написать?
Код: Выделить всё
case Packet_RESET_SYS:
{
// Перезапуск железки.
console_print_timestamp();
console_put_fromPGM(TXT_REBOOT_SYS);
_delay_ms(150); // А пауза нужна для того, чтобы в консоль успело вывалиться соответствующее сообщение.
asm("ijmp" :: "z" (0x0000)); // RESET vector
// (╯°益°)╯彡┻━┻
break; // L0L!
};
Про RJMP - если сброс находится за "Более чем 2к слов", то не дотянется.COKPOWEHEU писал(а):А зачем косвенный прыжок, если достаточно
asm("rjmp 0"); / asm("jmp 0");