Parlons Arduino > Trucs & astuces

Comment faire un reset software d'un ATMega328

(1/2) > >>

Dominique:
En l'occurence, un Nano qui fait tourner DCC++ donc avec des interruptions pour le Timer 1 ainsi que l'I2C .
J'ai trouvé cette fonction sur le web, sans succès :

--- Code: ---void software_Reset()
{
  do
  {
    wdt_enable(WDTO_15MS);
    for(;;) {};

  } while(0);
}

--- Fin du code ---
avec cette ligne en début de setup :

--- Code: ---wdt_disable() ;MCUSR = 0;                                  // clear all reset flags
--- Fin du code ---

Bon ça ne marche pas et l'Arduino est bloqué et tourne en rond même avec un reset USB.
J'appelle cette fonction à la fin d'un processus de configuration entre 2 processeurs qui se causent en I2C, pour repartir du bon pied... là c'est pas le pied  :-\

Est-ce que j'ai faux quelque part ? Que dois-je faire ?

Thierry:
Peut être la bibliothèque de Jean Luc avec son watchdog ? Est ce qu'il ne fait pas ce genre de chose ?

Tony04:
Bonjour tout le monde,

est-ce que cette ligne ne fonctionne pas ?

--- Code: ---    __asm__ __volatile__ ("jmp 0");

--- Fin du code ---

Chaque trait correspond à 2 soulignés du 8

Cordialement
Antoine

Dominique:
Merci Antoine,

Non c’est la méthode non recommandée car cela ne remet pas les registres en état initial comme lors d’une mise sous tension. Les interruptions peuvent continuer à provoquer des choses quand les variables ne sont pas initialisées.

J’ai essayé la bibliothèque de Jean-Luc  (KeepMeAlive), sans succès (la led builtin clignote mais rien ne vient du setup. J’ai peur d’avoir abimé le bootloader ou les fusibles. Je précise que c’est un Nano clone avec CH340 et le « oldbootloader » qui a probablement une partie de sa responsabilité

J’ai tout enlevé et la méthode »débranche-rebranche » marche nickel quand même.

Mais la question reste posée. Je reste sur ma faim :P
Amicalement
Dominique

trimarco232:
tout se passerait comme si le reboot ne se fait pas et que par conséquent le programme reste dans la boucle
je pense que tu as pu t'assurer que le wdt a bien agi (truc simple comme une led qui ne s'allume plus) ?

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique