jak nejšetrněji restartovat kód arduina (konktrétně MEGA2560)? Mám kód, ve kterém je možné nastavit buď statickou IP adresu nebo adresu přes DHCP, pokud změním nastavení je třeba na dálku restartovat arduino. Zároveň je tam funkce na "obnovení továrních hodnot".
Jaký jsou výhody/rizika jetnotlivých SW restartů (paměť, poškození procesoru,..)? Našel jsem dvě varianty bez dodatečného HW:
1) trigger jmp 0
Kód: Vybrat vše
void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile (" jmp 0");
}
Kód: Vybrat vše
//inicializace globálních proměnných
bool SETUP = true;
bool LOOP = false;
bool sw_reset = false;
void setup() {
//nechat prázdné
}
void loop() {
do{
//setup
LOOP = true;
}while(SETUP);
while(LOOP){
//zde by probíhal kód dokud by platilo LOOP == true
if(sw_reset){
LOOP = false;
sw_reset = false;
break;
}
}
}
Děkuji za odpovědi.