Salve a tutti,
si possono usare le classi EthernetCLient ed EthernetServer all'interno dello stesso sketch?
Qualcuno ci stà provando, vedi topic precedente ![]()
http://forum.arduino.cc/index.php?topic=225809.msg1633794#msg1633794
hmmm io lo sto già facendo su tre arduino uno con eth shield, il mio non è un problema di memoria questi sono i 3 sketch...
l problema è che dopo un tot giorni (random) lo sketch arduvilla si blocca e devo resettare, gli altri due non si bloccano mai.
altra cosa... fra i tre è presente un ponte radio fatto con tre antenne ubiquiti nanostation M5 ed M2 loco
Arducantina.ino (2.96 KB)
Arducancello.ino (4.97 KB)
Arduvilla.ino (3.59 KB)
visto che mi tocca resettare arduinovilla, non c'è un modo per fare un autoreset ogni 24 ore? magari utilizzando millis()?
per il momento ho risolto implementando un softreset nel frattempo cerco di capire come mai arduvilla si blocca
killrob:
per il momento ho risolto implementando un softreset nel frattempo cerco di capira come mai arduvilla si blocca
Hai voglia di scrivere come hai fatto per ora? Magari aiuterà qualcun'altro. Grazie. ![]()
certo che si ma l'ho trovato qui sul forum (inglese per la verità) comunque...
void(* Riavvia)(void) = 0; da mettere nelle definizioni prima del setup
Riavvia(); da richiamare all'occorrenza, io lo richiamo con il millis() ogni 24 ore
in realtà non resetta veramente ma fa ripartire lo sketch dall'inizio.
qui dici che si blocca
l problema è che dopo un tot giorni (random) lo sketch arduvilla si blocca e devo resettare, gli altri due non si bloccano mai.
qui dici che risolvi facendo ripartire il software
per il momento ho risolto implementando un softreset
non mi quadra qualcosa, ma se inverti le schede con lo stesso software si inchioda lo stesso?
pablos:
qui dici che si bloccal problema è che dopo un tot giorni (random) lo sketch arduvilla si blocca e devo resettare, gli altri due non si bloccano mai.
qui dici che risolvi facendo ripartire il software
per il momento ho risolto implementando un softreset
non mi quadra qualcosa, ma se inverti le schede con lo stesso software si inchioda lo stesso?
questa soluzione non l'ho provata perchè non è molto agevole... al limite posso provare con un'altra coppia arduino uno + eth shield (ne ho 3 coppie in casa)
mi chiedevo questo perchè si che le 3 schede sono uguali e hanno lo stesso software, ma la terza (arduvilla) potrebbe ricevere delle richieste o pacchetti dati diversi dalle altre 2, in questo caso il software potrebbe non reagire allo stesso modo della prima e della seconda. Quindi per esclusione invertendone 2 e ti da lo stesso problema va rivisto il software o la comunicazione di quella scheda.
Non conosco il tuo project nel suo insieme, quindi prendila come ipotesi
ciao
void(* Riavvia)(void) = 0;
Questo non è un reset, semplicemente stai dicendo alla CPU di saltare alla locazione $0000 della memoria e ripartire con l'esecuzione del codice da lì. Ma tutto lo stato del microcontrollore interno non viene toccato. Un vero reset lo si ottiene con il watchdog.
#Include <wdt.h>
....
void reset() {
wdt_enable(WDTO_120MS);
while(1);
}
Questo esegue un reset come se premessi il pulsantino della scheda Arduino, reimpostando tutte le periferiche interne al loro stato iniziale.
pablos:
mi chiedevo questo perchè si che le 3 schede sono uguali e hanno lo stesso software, ma la terza (arduvilla) potrebbe ricevere delle richieste o pacchetti dati diversi dalle altre 2, in questo caso il software potrebbe non reagire allo stesso modo della prima e della seconda. Quindi per esclusione invertendone 2 e ti da lo stesso problema va rivisto il software o la comunicazione di quella scheda.
Non conosco il tuo project nel suo insieme, quindi prendila come ipotesiciao
il software di arducantina ed arduvilla sono sostanzialmente identici arduvilla ha solo in più un controllo di un pulsante (accendiluce) che però a livello hardware non è ancora implementato. potrei provare ad eliminare quel controllo e vedere come va.
@Leo quindi mi basta includere la libreria, piazzare quelle righe di codice fuori dal loop e richiamare il reset() quando mi serve?
killrob:
@Leo quindi mi basta includere la libreria, piazzare quelle righe di codice fuori dal loop e richiamare il reset() quando mi serve?
Sì, esatto.
Il watchdog resetta proprio elettricamente il chip, non come il salto a $0000 .
ok lo proverò e continuerò a cercare di capire cosa c'è che non va a livello software