Go Down

Topic: Arduino ethernet problema con sd (Read 2 times) previous topic - next topic

djdedo

Grazie mille, sembra sia proprio la libreria a creare problemi. Ho utilizzato la tiny e sembra funzionare tutto come dovrebbe.
L'unica cosa che ho notato però è che nel setup la TinyWebServer fa mettere queste istruzioni
Code: [Select]

  pinMode(SS_PIN, OUTPUT);
  digitalWrite(SS_PIN, HIGH);
 
  pinMode(ETHER_CS, OUTPUT);
  digitalWrite(ETHER_CS, HIGH);
 
  pinMode(SD_CS, OUTPUT);
  digitalWrite(SD_CS, HIGH);

dove ETHER_CS e SD_CS sono rispettivamente i pin della ethernet e della sd che ho valorizzato precedentemente, ma SS_PIN cos'è??? :smiley-eek:

pablos

#16
Jan 26, 2013, 07:11 pm Last Edit: Jan 26, 2013, 07:19 pm by pablos Reason: 1
La libreria sd.h non da problemi.
Questo è la stessa cosa di quello che hai nella tiny è l'avevi in qualche post più in su
Code: [Select]
pinMode(10, OUTPUT);
pinMode(4, OUTPUT);
 Ethernet.begin(mac, ip);
 digitalWrite(10, HIGH);
 if (!SD.begin(4)) {
   sdAvailable = false;
 }


Quote
ma SS_PIN cos'è???

Note about Slave Select (SS) pin on AVR based boards

All AVR based boards have an SS pin that is useful when they act as a slave controlled by an external master. Since this library supports only master mode, this pin should be set always as OUTPUT otherwise the SPI interface could be put automatically into slave mode by hardware, rendering the library inoperative.

no comment

gvnsbt

Salve, anch'io ho lo stesso problema, sto testando una scheda Arduino Ethernet Rev.3 con IDE 1.03 per OSX e adattatore USB2/serial di Arduino.

Se provo ad utilizzare le librerie separatamente tutto funziona correttamente, se invece provo a utilizzare la scheda SD e la rete ethernet nello stesso sketch il programma un funziona e si pianta: sulla porta seriale invece di avere l'output corretto (sostanzialmente delle Serial.println) ho una serie di caratteri spuri o contenuti parziali del file che sto leggendo.

Dalla documentazione ho visto che entrambi i dispositivi utilizzano il canale condiviso SPI e pertanto e' indispensabile che l'accesso a questa risorsa sia effettuato rigorosamente in modo esclusivo. Tutto ciò e' possibile tramite i pin digitali 10 (ethernet) e 4 (SD).
Collegando a questi pin due led ho potuto constatare che gli stati cambiamo in modo corretto rispetto a quanto scritto nel codice e che pertanto l'accesso al bus SPI dovrebbe essere giusto.

E' possibile che ci possa essere qualche problema legato alle librerie con la parte seriale della scheda?


Saluti


Giovanni




pablos

Benvenuto gvnsbt

Il tuo problema si riconosce molto bene in alcune mie esperienze personali con questo shield, ti posso garantire che la libreria ethernet e SD possono lavorare bene nello stesso sketch, il problema sta nella memoria dedicata alle variabili e ai buffer che è pochissima, i caratteri strani sono spesso provocati da una saturazione della memoria per poi arrivare a un crash. Nel tuo caso, dove non hai fornito ne uno sketch ne il modello di arduino che usi posso solo al 90% dirti che è un problema di ram.

ciao
no comment

gvnsbt

Pablos, grazie per la risposta. Riguardo alla memoria quando compilo lo sketch ho 26kb su 32 disponibili, e quindi davo per scontato che ci fosse abbastanza spazio ma evidentemente non e' così :-(. Come si fa a capire quanta memoria viene riservata per le variabili, c'e' un modo per poter liberare la ram dalle variabili non piu' utilizzate?

La scheda che sto utilizzando e' una Arduino Ethernet REV. 3.
Visto che da pochi giorni mi sono "affacciato" al mondo Arduino, prima di postare il codice vorrei avere un'idea un po' piu' precisa di come funziona questo ambiente. 

Saluti, e grazie ancora per la risposta.

Saluti


Giovanni

Go Up