Go Down

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

maxpcc

Ho un problema che mi sta facendo impazzire: ho preso spunto da uno sketch trovato online (http://startingelectronics.com/tutorials/arduino/ethernet-shield-web-server-tutorial/SD-card-IO/) per modificarlo a mio piacere. Ma ho un problema: se cambio la riga "#define REQ_BUF_SZ   60" con un valore del buffer più alto, quando vado a cercare la mia pagina web non me la visualizza più. Ovviamente se tengo il buffer a quelle dimensioni vedo la pagina web ma non posso modificare alcuni settaggi. Se però la pagina web è in cache del mio pc, e se ho aumentato il buffer fino al valore che mi serve, allora tutto funziona finchè non provo a ricaricare la pagina, che a quel punto non mi trova più.
Perchè con un valore del biffer più alto non riesco a vedere la pagina??????

Allego sketch e pagina web

uwefed


Perchè con un valore del biffer più alto non riesco a vedere la pagina??????


Forse, no siccuramente perché Arduino UNO ha solo 2kByte di RAM.
Ciao Uwe

pablos71

#2
Jun 27, 2014, 02:46 am Last Edit: Jun 27, 2014, 02:50 am by pablos Reason: 1
Se usi
Code: [Select]
client.println(F("**************"));
qualcosa recuperi
Togli i serial.print inutili e recuperi ancora

Quote
A0 used by Ethernet shield
A1 used by Ethernet shield

Ma che dice??
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

maxpcc

#3
Jun 27, 2014, 12:29 pm Last Edit: Jun 27, 2014, 12:32 pm by maxpcc Reason: 1
Intanto grazie!
E c'è modo di sapere qual è il valore limite del buffer?
Prima di iniziare a compattare tutto il codice racimolando byte su byte mi piacerebbe sapere se questi sforzi serviranno a qualcosa! Anche perchè la previsione è di aumentare ancora i settaggi e con loro il buffer

Oppure: può avere senso passare ad un Arduino Mega? Riesco a recuperare sia il codice che la scheda di rete? Fino ad adesso ho sempre fatto i miei esperimenti sull'Uno, per cui scusate se la domanda può sembrare banale, ma del Mega non so nulla!

Intanto cerco e mi informo!

maxpcc

Mi rispondo da solo (in parte)

Intanto grazie perchè con F() ho risolto quasi tutti i miei problemi. Ho anche accorciato le stringhe (Settingxx è diventata STGxx) per cui ora mi funziona a dovere.

Ho visto anche che volendo un Mega è compatibile con la mia ethernet shield, ma per il momento mi faccio durare la Uno.

Continuo in questo thread per un'altra domanda:
pablos ha dei dubbi su A0 e A1 usati dall'ethernet shield. Effetticvamente è un dubbio che mi devo togliere, perchè dovrei collegare anche un orologio RTC, che se ho ben capito usa gli stessi pin analogici. Mi sapete dare un consiglio per collegare insieme ethernet e orologio? Se è lunga apro un nuovo thread!!

Grazie ancora dei preziosissimi consigli!


gpb01

#5
Jun 27, 2014, 01:55 pm Last Edit: Jun 27, 2014, 01:58 pm by gpb01 Reason: 1
I dubbi di pablos sono dovuti al fatto che ... dove hai visto che lo shield Ethernet usi i pin A0 e A1 ???  :smiley-eek: :smiley-eek: :smiley-eek:

Dal reference :

"Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general I/O. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won't work."

Magari, nell'articolo, è stato usato un chissà quale modulo ethernet esterno che hanno collegato su A0 e A1 ... ma NON di certo lo shield ethernet standard !!!

Guglielmo
Search is Your friend ... or I am Your enemy !

pablos71

#6
Jun 27, 2014, 02:57 pm Last Edit: Jun 27, 2014, 03:13 pm by pablos Reason: 1
Dall'articolo si parla di Arduino ed ethernet shield arduino, è del 2013 quindi molto probabile rev3 ma anche rev 2, dallo skerch specifica che il pin 10 è il cs e che l' 11-12-13 non vanno usati, quindi avevo dati sufficienti per comprendere che si trattava dello shield ufficiale.
Però se vuoi toglierti il dubbio togli alimentazione, estrai lo shield e mettilo sotto una luce, anche se la basetta è verniciata si evidenziano le piste che vanno sotto lo strip, se osservi ambo  i lati dello shield vedrai che da A0 ad A5 non c'è assolutamente nulla (tutto liscio :) ) sul lato superiore ne vedrai una andare sotto il 10 e sul lato inferiore ne troverai una andare al 4 e anche un'altra andare al 2 ma interrotta da 2 piazzole stagnate non unite.

guardaci per conferma, ho letto anch'io diverse volte sta cosa, è molto probabile che sia una condizione reale riportata negli anni dai primi sheld, perciò trascinata oggi come  errore... ora faccio una ricerca sulle vecchie shield eth
ciao
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

pablos71

#7
Jun 27, 2014, 03:26 pm Last Edit: Jun 27, 2014, 03:28 pm by pablos Reason: 1
si era la rev 1 ufficiale del 2009  che usava A0 e A1
http://smallshire.org.uk/sufficientlysmall/2012/01/01/an-atlas-of-arduino-ethernet-shields/  si vede anche dalla foto che ci sono delle piste su quei pin

ciao
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

gpb01


si era la rev 1 ufficiale del 2009  che usava A0 e A1 ...


Azz ... una cosetta recente ...  XD :smiley-mr-green: XD :smiley-mr-green: XD

Guglielmo
Search is Your friend ... or I am Your enemy !

maxpcc

Verissimo, grazie: solo piste sulla 4 e sulla 10. Dunque questi pin li tengo liberi e gli altri li posso usare.
Ne approfitto ancora della vostra sapienza:

Ogni volta che stacco l'alimentazione e la riattacco, prima che la scheda diventi attiva e si accendano i led gialli (link, 100M, fulld) devo necessariamente fare un reset. Come mai? Ciò è molto vincolante per l'utilizzo che ne intendo fare! Esiste un modo di fare un reset "software" ad ogni avvio?

pablos71


Ogni volta che stacco l'alimentazione e la riattacco, prima che la scheda diventi attiva e si accendano i led gialli (link, 100M, fulld) devo necessariamente fare un reset. Come mai? Ciò è molto vincolante per l'utilizzo che ne intendo fare! Esiste un modo di fare un reset "software" ad ogni avvio?


Questo è un comportamento anomalo che non dovrebbe accadere posso vedere il setup() che usi?

ciao
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

maxpcc

Grazie pablos, ecccolo qui:

Code: [Select]


void setup()
{

#define OutPut_1 6 // definisco il primo carico da gestire
#define OutPut_2 7 // definisco il secondo carico da gestire
#define OutPut_3 8 // definisco il terzo carico da gestire
#define fotoresistenza A2 // definisco la fotoresistenza
#define Pir_1 5 // definisco il pin del Pir_1


  // disable Ethernet chip
    pinMode(10, OUTPUT);
    digitalWrite(10, HIGH);
   
    Serial.begin(9600);       // for debugging
   
    // initialize SD card
    Serial.println("Initializing SD card...");
    if (!SD.begin(4)) {
        Serial.println("ERROR - SD card initialization failed!");
        return;    // init failed
    }
    Serial.println("SUCCESS - SD card initialized.");
    // check for index.htm file
    if (!SD.exists("index.htm")) {
        Serial.println("ERROR - Can't find index.htm file!");
        return;  // can't find index file
    }
    Serial.println("SUCCESS - Found index.htm file.");
    // Output
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(A2,INPUT); //il pin a cui è collegata la fotoresistenza
    pinMode(5, INPUT); //il pin a cui è collegato il pir
   
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients

    Wire.begin();             // inizializzo l'orologio

}

maxpcc

Rettifico in parte quanto ho detto, ma a questo punto credo che rimanga una curiosità:

questo comportamento (necessità di reset) me lo fa solo se (?!?!?!?!?) stacco l'alimentatore dal muro e lo riattacco. Se stacco il cavo da Arduino e lo riattacco non lo fa (?!?!?!?)


pablos71

#13
Jun 28, 2014, 01:50 am Last Edit: Jun 28, 2014, 01:52 am by pablos Reason: 1
Quote
questo comportamento (necessità di reset) me lo fa solo se  stacco l'alimentatore dal muro e lo riattacco.

E se staccando l'alimentatore dal muro aspetti 30 secondi prima di reinserirlo?
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

maxpcc

#14
Jun 28, 2014, 09:30 am Last Edit: Jun 28, 2014, 09:32 am by maxpcc Reason: 1
Neppure, sembra quasi (azzardo) che il trasformatore abbia un transitorio che dà fastidio ad Arduino.
Purtroppo non ho altri trasformatori per verificare, farò sapere!

Se faccio la stessa opeazione alimentando da USB, non ho problemi!

Go Up