Go Down

Topic: Loop nel Loop (Read 4 times) previous topic - next topic

DanielaES

#25
Dec 08, 2011, 07:34 pm Last Edit: Dec 08, 2011, 09:55 pm by DanielaES Reason: 1
Al solito faccio risposte velocissime mentre aspetto la pizza...
Se davvero fosse un problema di ram, non posso aggiungere della ram esterna?
Avevo visto, ma non ricordo più dove, dei moduli da 32k che potevano essere aggiunti.
Non ci si può mettere lo sketch ovviamente, ma le variabili si.
Non ricordo nemmeno il prezzo, ma lo ipotizzo minore dell'arduino mega :)

Non è quella che avevo visto, perché non sono riuscita a ritrovarla...
ma il playground ha questo link:
http://www.arduino.cc/playground/Main/SpiRAM


edit: sto messa male mi sa...
AVR Memory Usage
----------------
Device: Unknown

Program:   22556 bytes
(.text + .data + .bootloader)

Data:       1766 bytes
(.data + .bss + .noinit)

leo72

1) No. Non puoi estendere la RAM interna con moduli esterni perché il 328 non è stato progettato per supportare questa funzionalità.
2) Sì, stai messa male. Considera che in quello spazio che ti resta libero ci deve entrare anche l'heap e lo stack.

Hai 2 strade:
1) ti studi come usare PROGMEM per accedere alle stringhe dei messaggi da visualizzare sull'LCD in Flash
2) ti compri l'Atrduino Mega2560, che ha molta più memoria Flash e Ram.

superlol

#27
Dec 08, 2011, 10:32 pm Last Edit: Dec 08, 2011, 10:40 pm by superlol Reason: 1

Non può essere un bug di Arduino. Il seguente codice riproduce ciò che vuoi fare tu:

Code: [Select]
unsigned long contatore;

void setup() {
   delay(2000);
   Serial.begin(19200);
   contatore=millis()+5000;
}

void loop() {
   if (millis()>contatore) {
       contatore=millis()+5000;
       Serial.println("Ciao");
   } else {
       Serial.println("Oh...");
   }
   delay(1000);
}

E funziona perfettamente. Quindi è qualcos'altro nel tuo programma, qualcosa che magari hai tralasciato di esaminare.

credo che invece il problema sia Serial.println() in quanto finchè non trasmette blocca il codice ma tu hai messo un delay(1000) che probabilmente ha risolto il problema.

potrebbe essere?

edit:
pardon ho letto dopo tutta la continuazione sulla ram  XD
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

leo72

Il delay(1000) ce l'ha anche nel suo codice ma non risolve nulla.

DanielaES


Hai 2 strade:
1) ti studi come usare PROGMEM per accedere alle stringhe dei messaggi da visualizzare sull'LCD in Flash
2) ti compri l'Atrduino Mega2560, che ha molta più memoria Flash e Ram.


PROGMEM non credo sia una soluzione... perché io sarei ancora a metà del mio progetto :\
Manca ancora tutta la parte web server.

Senti la mia opzione, dimmi se è una cazzata.
Ho 2 chip atmega 328p, pensavo di usarne uno farci la versione stand alone, perché mi dispiaceva lasciare l'arduino a vita nella serra.
Posso usare DUE arduini, splittando lo schetch?
Sensori ed lcd da una parte, sd log e ethernet dall'altra?

Cacchiarola, prendere un 2560 e lasciarlo li nella sera mi spiace un po', in pratica non userei la maggior parte dei pin :\

Go Up