Go Down

Topic: #define REQ_BUF_SZ ?????? (Read 5042 times) previous topic - next topic

pablos71

prova con un delay iniziale nel setup in modo da inizializzare l'spi e il server begin quando tutto è alimentato e stabile
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

maxpcc

Allora, il problema è ancora aperto.
Ho scoperto che alcuni shield vecchi hanno questo baco, e ci sono vari metodi per risolverlo.
In pratica bisogna resettare la scheda, ma non Arduino! (ovviamente, se no si è di nuovo da capo!)

Allego qualche link con alcune soluzioni, che però con me ancora non hanno funzionato. I prossimi giorni dovrò dedicargli più attenzione (appena risolvo il problema del NTP  ;))

(Aggiungere un condensatore tra il pin reset e il ground, Aggiungere un delay iniziale)
http://marco.guardigli.it/2010/11/arduino-wiznet-ethernet-shield-proper.html
http://forum.arduino.cc/index.php?topic=28175.45
http://forum.arduino.cc/index.php/topic,25634.0.html
http://www.freetronics.com/pages/usb-power-and-reset#.U-Bb9fl_sRl
http://forum.arduino.cc/index.php/topic,28175.0.html

Ho anche provato (non ho il link su due piedi, ma lo troverò) a mettere un cavetto sul pin del reset, a piegare il pin che mi va dal reset dello shield a Arduino e provare a comandare il reset con il pin: nulla! Il problema è che quando resetto la scheda mi si resetta anche Arduino. Per separare i due reset dovrei anche tagliare un pin (quello del ICSP) su Arduino, ma al momento non me la sento e lascio l'arma fine di mondo come ultima spiaggia!

Infine: poichè al momento sono collegato in wi-fi con la ethernet shield e con un router della TP-LINK, volevo provare a fare a meno della ethernet shield. Ma ancora ci devo sbattere il muso!

http://www.mauroalfieri.it/informatica/openwrt-mr3020-tp-link-installazione.html

Hai altre idee Pablos?

pablos71

Quote
Ho anche provato (non ho il link su due piedi, ma lo troverò) a mettere un cavetto sul pin del reset, a piegare il pin che mi va dal reset dello shield a Arduino e provare a comandare il reset con il pin: nulla! Il problema è che quando resetto la scheda mi si resetta anche Arduino.

Certo perchè il reset è anche sul connettore dell ICSP http://arduino.cc/en/pmwiki.php?n=Reference/SPI
Riavviare lo shield eth mentre è connesso alla UNO che sta facendo le sue cose non è il massimo della soluzione, fai un pasticcio, perchè essa va inizializzata insieme ad arduino.
Un reset del w5100 lo puoi fare in modo software (sempre che non sia inchiodata la comunicazione) facendo un

init() dell'spi,
reimpostare i 4 socket del w5100 chiudendoli e rimettendoli in listen
un init() del w5100,  #include "utility/w5100.h" ... #include "utility/socket.h"
rifacendo il server.begin
riavviando EthernetServer server(80)

Tutto questo va a complicare non poco la vita e ti infili in altri mal di testa

Però ancora non ho capito perchè devi per forza aumentare le dimensioni del buffer e perchè la ethernet la devi resettare ...
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

maxpcc

Le due cose sono ovviamente separate:

Il reset mi occorre perchè, ogni volta che do alimentazione alla scheda, questa per iniziare a comunicare ha bisogno di un reset. Credo che sia appunto un baco delle vecchie schede. La mia è questa:
http://www.miniinthebox.com/it/w5100-ethernet-shield-per-arduino-201211270080060_p478895.html
A memoria (non ho davanti arduino) mi sembra che sulla shield ci sia stampigliata una data: 31/05/2012
Poichè devo installare il tutto in un posto inaccessibile, e il tutto collegato ad un normale interruttore per riavviare quando occorre, non posso permettermi di dover ogni volta prendere la scala per premere un reset!


Il buffer è un discorso diverso: il progetto da cui sono partito prevedeva soltanto poche variabili da passare alla pagina web. Io ho voluto fare "lo sborone" e ho iniziato a passargli di tutto, ragione per cui ho dovuto aumentare il buffer. Aumentandolo però ha iniziato a darmi dei malfunzionamenti, dovuti alla mancanza di RAM. La soluzione più veloce, visto che pensavo (ed è effettivamente accaduto) che le variabili sarebbero aumentate, è stata quella di passare ad un Arduino Mega. Da lì mi funziona tutto come un orologio.
A futura memoria allego le specifiche e lo sketch:

-Ho tre carichi da controllare: due luci e una sirena
-Una pagina web mi permette di settare il tipo di controllo
-Le luci possono essere impostate con 4 differenti valori: ON, acceso su luce ambiente, acceso su PIR, acceso con timer
-La sirena è controllata da due valori: ON e timer; se attivo il setting, in presenza del segnale del PIR mi si attiva l'allarme
-L'allarme fa suonare la sirena, lampeggiare le luci ed invia una mail
-Se l'allarme è già scattato negli ultimi minuti, non scatta ancora (altrimenti finisco le mail gratuite con smtp2go)
-Sulla pagina web mostro anche l'ora del RTC di Arduino

I bachi ancora presenti:
-il reset come sopra
-l'orologio che mi sgarra di un minuto scarso al giorno, da sincronizzare con NTP
-i timer, se accensione e spegnimento cadono a cavallo della mezzanotte, ancora ci devo mettere mano seriamente

Uno per volta li devo sistemare tutti!!



pablos71

Ora che hai linkato lo shield mi fai ricordare che il tuo stesso problema lo hanno avuto altri, 1-2 anni fa proprio dal fatto che le schede non originali non prevedo una R e un C che crea un certo ritardo tra il reset arduino e quello dello shield, in poche parole mancano dei pezzi.

O ti costruisci un circuito reset esterno con un NE555 o in qualche modo usi l'Watchdog per riavviare parzialmente lo sketch
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

maxpcc

All'inizio mi è parso arabo, ma poi ho usato il traduttore di google e qualcosina, con una veloce lettura, sono riuscito a capire: parla di Arduino!!

http://forum.arduino.cc/index.php?topic=93717.0
http://forum.arduino.cc/index.php?topic=95167.0

I prossimi giorni me li prendo per studiare.
Ora Pablos saresti veramente tanto gentile se mi illumini anche sul NTP, sull'altro thread (magari un link ad uno sketch che funziona con le librerie della IDE 1.5.7)!

Intanto grazie!

Go Up