Pages: [1] 2 3   Go Down
Author Topic: [RESOLU] reset automatique + [RESOLU] Démarrage du moniteur série sans reset  (Read 3432 times)
0 Members and 1 Guest are viewing this topic.
France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour tout le monde !
Je pense que cette question sera vite résolue :
Comment faire un reset automatique de la carte (sans appuyer sur un bouton).
C'est tout...

Merci d'avoir lu et de bientôt répondre !
« Last Edit: October 08, 2012, 02:33:26 pm by numero_744 » Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

Offline Offline
Full Member
***
Karma: 0
Posts: 224
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Je n'ai jamais essayé mais à priori il y aurait moyen de faire quelque chose avec le watchdog, et plus particulièrement la macro wdt_reset.

++
Logged


France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Reset depuis le code ou depuis un montage externe ?

Pour faire un reset software il existe deux solutions :
- la solution pas propre qui marche que dans certain cas :
Code:
asm("jmp 0x00");
- la solution propre via le watchdog :
Code:
#include <avr/wdt.h>
// ...
wdt_enable(WDTO_15MS);
for(;;);
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

- Reset depuis le code;
- "Reset software" : qu'est ce que "software" ?;
- "Dans certains cas" : lequels ?;
- Insérer une bibliothèque pour une fonction ?;

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...).
Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

Moselle (FR)
Offline Offline
God Member
*****
Karma: 6
Posts: 943
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir skywodd,
Code:
for(;;);

Que fait exactement cette instruction de boucle ?
icare
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

- Reset depuis le code;
- "Reset software" : qu'est ce que "software" ?;
- "Dans certains cas" : lequels ?;
- Insérer une bibliothèque pour une fonction ?;
- "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 smiley-wink
- pour pouvoir utiliser le watchdog il faut inclure la librairie "avr/wdt.h" (wdt = watchdog) ce qui semble assez logique smiley-wink

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...).
Le travail pré-mâché c'est mal smiley-wink

Code:
#include <avr/wdt.h>

void reset_software(void) {
  wdt_enable(WDTO_15MS);
  for(;;);
}
(pas trop compliqué comme fonction smiley-wink)

Que fait exactement cette instruction de boucle ?
Elle ne fait rien, c'est une boucle infini smiley-wink

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.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)?
« Last Edit: September 25, 2012, 11:44:46 am by numero_744 » Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Et si j'utilise
Quote
la solution propre via le watchdog :
Code:
#include <avr/wdt.h>
// ...
wdt_enable(WDTO_15MS);
for(;;);
?
Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Avec le watchdog le reset est physique (comme si tu appuyais sur RESET) donc pas de soucis.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci !
(Résolu en 3 jours, pas mal !)

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.
« Last Edit: September 25, 2012, 02:52:49 pm by numero_744 » Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut tout le monde !

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 ?
Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset 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 ?
En hardware : http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection
En software : ... ne pas utiliser le "Serial Monitor" de l'ide mais une vrai console série smiley-mr-green

Moi j'utilise TerminalBpp : http://skyduino.wordpress.com/2012/02/11/terminalbpp-le-logiciel-a-avoir-absolument/
Il permet de faire un reset (bouton DTR) uniquement quand on le souhaite.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-cry .
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...
Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sur ton premier lien allait très bien jusqu'à ce que je regarde en dessous de l'image... J'ai une UNO smiley-cry .

Mais en dessous du dessin il est écrit :
Quote
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 çà.



* screenshot.35.png (70 KB, 437x300 - viewed 18 times.)
« Last Edit: October 07, 2012, 03:14:30 am by barbudor » Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Pages: [1] 2 3   Go Up
Jump to: