Pour faire simple, j'aimerais qu'avec une ligne C la carte fasse un reset comme si l'on avait appuyé sur un bouton,
quitte à utiliser une voie digitale et faire des branchements (pas trop compliqués quand-même, les branchements...).
"software" = logiciel en anglais, donc reset software = reset depuis le code (à contrario de "hardware reset" = reset physique depuis l'extérieur).
"dans certain cas" = les registres du CPU ne sont pas réinitialisé quand tu fait asm("jmp 0x00") donc si tu utilises des timers (ou autre truc exotique) il resterons actif et irons foutre le bordel dans ton code
pour pouvoir utiliser le watchdog il faut inclure la librairie "avr/wdt.h" (wdt = watchdog) ce qui semble assez logique
numero_744:
Pour faire simple, j'aimerais qu'avec une ligne C la carte fasse un reset comme si l'on avait appuyé sur un bouton,
quitte à utiliser une voie digitale et faire des branchements (pas trop compliqués quand-même, les branchements...).
icare:
Que fait exactement cette instruction de boucle ?
Elle ne fait rien, c'est une boucle infini
En C si tu fait un while(1); normalement tu doit avoir un warning du style "condition always true".
Si tu fait for(;; ); cela revient exactement au même mais le compilateur ne fera aucun warning.
C'est juste un retour au début du programme (la led L (broche 13) ne clignote pas) + vidange de la file de réception.
Mais quelle est la différence avec une pression sur le bouton (à part les timers)?
numero_744:
C'est juste un retour au début du programme (la led L (broche 13) ne clignote pas) + vidange de la file de réception.
Mais quelle est la différence avec une pression sur le bouton (à part les timers)?
Quand tu appuis physiquement sur le bouton RESET les registres en ram sont remis à leurs valeurs par défaut (timer off, pas de serial, toutes les broches en entrées, ...).
Quand tu fait un asm("jmp 0x00") tu "saute" à l'adresse zéro (début du programme) SANS remettre les valeurs par défaut des registres.
Du coup ce qui avait été mis en marche (timer, serial, ...) reste en l'état et dans beaucoup de cas ton code planteras de manière inexplicable (ou plus souvent le bootloader).
Si on veut une commande manuelle mais qu'on n'aime pas les boutons, reliez la carte à un transistor PNP :
Reset -> E; C -> LED (protégée, bien sur) -> GND
Touchez la base et la carte fait un reset.
Je suis de retour sur cette discussion pour demander l'inverse de la question de départ :
Comment empêcher un reset lorsque je clique sur moniteur série dans l'IDE ?
numero_744:
Je suis de retour sur cette discussion pour demander l'inverse de la question de départ :
Comment empêcher un reset lorsque je clique sur moniteur série dans l'IDE ?
Merci pour ta réponse mais j'ai déjà cherché TerminalBpp mais il ne va pas pour mac (et mon PC ne détecte pas ma carte).
Sur ton premier lien allait très bien jusqu'à ce que je regarde en dessous de l'image... J'ai une UNO =( .
Connaitrais-tu un autre logiciel terminal série gratuit mais pour mac ?
Merci.
P.S. : J'ai un PowerBook G4 qui est plus vieux que moi alors un pas trop lourd si possible...
numero_744:
Sur ton premier lien allait très bien jusqu'à ce que je regarde en dessous de l'image... J'ai une UNO =( .
Mais en dessous du dessin il est écrit :
For the Uno, connecting a 10?F capacitor between the RESET and GND lines works for me (as described in the linked thread).
L'autre solution étant de couper le bout de piste entre les 2 plots entourés de blanc sur la photo ci-dessous.
Si tu veux ensuite réactiver l'auto-reset il faut mettre un pont de soudure entre les 2 plots.
C'est fait pour çà.
Merci barbudor.
Ne souhaitant pas m'attirer d'ennuis lors du transfert de programmes et étant nul en soudures, je préfère éviter la solution n°2 et la solution n°1 m'irai si j'avais des condensateurs libres de cette capacité là...
La solution qui me conviens le mieux est un autre moniteur série.
J'en ai mais est-ce grave s'ils sont polarisés ?
Le + sur reset et le - sur GND ? Ces deux bornes sont occupées par un transistor (c.f. plus haut).
Je préfère télécharger un autre moniteur série mais je n'en ai toujours pas trouvé (j'y arriverais !).
numero_744:
J'en ai mais est-ce grave s'ils sont polarisés ?
Le + sur reset et le - sur GND ? Ces deux bornes sont occupées par un transistor (c.f. plus haut).
Je préfère télécharger un autre moniteur série mais je n'en ai toujours pas trouvé (j'y arriverais !).
Les condensateurs de +1µF sont obligatoirement polarisé
Le + sur reset, le - sur GND.