Pages: [1] 2   Go Down
Author Topic: WatchDog su Arduino Mega 2560  (Read 982 times)
0 Members and 1 Guest are viewing this topic.
Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,
ho cercato in lungo e largo sui forum e ho trovato molte info ma mai una definitiva, o almeno non l'ho capita io!  smiley-razz

Il problema è che non riesco a far funzionare il WatchDog sull'arduino mega... lo uso tranquillamente sull'Uno ma sul mega non funziona!
Ho provato anche a fare uno sketch semplicissimo di test e sull'Uno va e sul Mega non succede nulla, lo ignora proprio.

Ecco lo sketch di test:
Code:

#include <avr/wdt.h>

int c=0;

void setup()
{
  Serial.begin(9600);
  Serial.println("Prova WatchDog");
  Serial.println("");
  Serial.println("Attendo 10 secondi...");
  Serial.print("10...");
  delay(1000);
  Serial.print("9...");
  delay(1000);
  Serial.print("8...");
  delay(1000);
  Serial.print("7...");
  delay(1000);
  Serial.print("6...");
  delay(1000);
  Serial.print("5...");
  delay(1000);
  Serial.print("4...");
  delay(1000);
  Serial.print("3...");
  delay(1000);
  Serial.print("2...");
  delay(1000);
  Serial.print("1...");
  delay(1000);
  wdt_enable(WDTO_4S);
}

void loop()
{
  Serial.println("Prima del reset... ");
  wdt_reset();
  delay(2000);
  Serial.println("dopo!");
  Serial.print("Counter:");
  Serial.println(c);
  Serial.println();
  c++;
}


Giocando con la durata del delay nel loop posso far itnervenire il WD o meno... in pratica se il delay è superiore a 4000 l'Arduino mi si resetta. L'Uno si il Mega no!!!  smiley-cry
Perchè?

Illuminatemi vi prego...   smiley-kiss smiley-lol

Grazie!!
Logged

Parma
Offline Offline
Edison Member
*
Karma: 20
Posts: 2357
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Premetto che non ho un Arduino mega, domanda stupida: hai scelto la scheda corretta dal menù board? Dovresti controllare nel datasheet se ci sono delle differenze con l'atmega328p

Ciao
Logged

Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non selezioni la board giusta non riesci a completare neanche la compilazione dello sketch!   smiley-wink

Riguardo alle specifiche del WDT ho dato un'occhiata ai datasheet delle due CPU e a me sembra proprio identico!

Ho letto molti post in cui si parlava di un bug nel bootloader ma erano tutti di parecchio tempo fa... vorrei sapere ora, a Giugno 2012, come siamo messi...

grazie grazie
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il bug di cui parli non dovrebbe riguardarti.
Se non ho capito male leggendo quelle segnalazioni, il watchdog partiva ma, a causa del fatto che nel codice del bootloader non veniva resettato il flag del reset con watchdog, il bootloader resettava poi la scheda all'infinito. Ma tu invece lamenti il problema che la tua scheda non si resetta neanche una volta, giusto?
Logged


Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si esatto!
E' per questo che sto continuando a sbatterci la testa.... maroooon come mi sento frustrato!!  smiley-grin
Logged

Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In realtà non è che non fa nulla, lo sketch si pianta quando faccio il reset... mi ero sconfusionato!  smiley-lol
Poi provo a fare reset con il pulsante e niente... il Serial Monitor rimane bianco. A questo punto credo che il Mega si resetti in continuo...
Che ne dite?

Ho provato anche con l'ultimissimo IDE 1.0.1 e fa uguale...

Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora sì, il tuo problema è quello descritto nei tanti post. Non mi ricordo la soluzione che hanno adottato, però.
Logged


Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi sembra che la soluzione fosse modificare il bootloader del Mega... qualcuno ha il file pronto?
Logged

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Potresti provare ad applicare le modifiche fatte da Mark Sproul ( http://www.avr-developers.com/bootloaderdocs/index.html ) e scaricarti il .hex già compilato con alcune modifiche apportate da Mellis ( https://github.com/arduino/Arduino-stk500v2-bootloader/blob/master/goodHexFiles/stk500boot_v2_mega2560.hex )

Logged

F

Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

OK ma come faccio l'upload del bootloader?
Ho a disposizione vari "arduini" Uno da usare per programmare il Mega... ma non so come....
Ho cercato e googlato ma non ho trovano nulla di esauriente.
Qualche link?

Grassieee
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Cerca la guida di Michele Menniti per la programmazione ISP. Carichi lo sketch ArduinoISP sull'UNO, poi colleghi la MEGA e fai la programmazione tramite IDE.
Logged


Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Trovata la guida, collegato il mio Uno al mio Mega, caricato lo sketch ArduinoISP sull'uno, impostato l'IDE su Mega, scelto dal menù Tools "Arduino as ISP" e poi cliccato dallo stesso sulla voce "Burn bootloader".
Lampeggiano per un paio di secondi e poi l'IDE mi restituisce il seguente errore:

avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

Ma possibile che alla release 3 di Mega ancora ci sia sto problema?? E' uno scandalo!!!!
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma che IDE usi?
Se hai la 1.0, lo sketch ArduinoISP di quella versione non funziona, devi usare lo sketch ArduinoISP2 che ho modificato io (lo trovi sul forum o sul mio sito, link in calce).
Logged


Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eggià uso proprio la 1.0!! Li possino....  smiley-grin

Grazie Leo, provo subito...
Logged

Rome
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
L'efficienza è tutto!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

OK ora l'upload dello sketch va a buon fine... ma ricevo un errore quando provo a inviare il bootloader.

Ho un gran dubbio sui collegamenti, quindi ricapitolo un momento la mia situazione così magari chi ha un minuto di tempo può spiegarmi qualcosa in più:

Board programmatore: Arduino Uno R3
Board da programmare: Arduino Mega R3
IDE 1.0 (ho anche le altre versioni, consigliatemi voi...)

Collegamenti:
Arduino Uno       Arduino Mega
pin 5V          >>  pin 5V
pin GND       >>  pin GND
pin D10        >>  pin RESET
pin D11        >>  pin D11
pin D12        >>  pin D12
pin D13        >>  pin D13

Ora ho visto che in testa allo sketch di Leo72 c'è una mappa dei pin diversa per Mega ma da quanto capisco dalla disposizione dei pin è se il Mega fa da programmatore. Il reset slave va sulla board di destinazione. Giusto?

L'errore che ricevo dopo qualche secondo che ho lanciato il "Burn Bootloader" è:
avrdude: stk500_getsync(): not in sync: resp=0x00

Grazie ancora e scusate se sono di coccio  smiley-kiss
Logged

Pages: [1] 2   Go Up
Jump to: