[RISOLTO] Probabile "saturazione" di risorse ram

Dal file in allegato che ho messo non riuscite ad estrapolare la dimensione ?

Io per si e per no ho provato con il file ave-g++ ecco il risultato:

iMac:tmp andrea$ /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-g++ /tmp/sd.cpp.elf -C
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld: unknown architecture of input file /tmp/sd.cpp.elf' is incompatible with avr output /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/crts8515.o:(.init9+0x0): undefined reference to main'

Il programma è avr-size, non avr-g++ (che è il compilatore). Comunque non c'è alcun allegato :stuck_out_tongue:

Non lo trovo avr-size ! :confused:
Ci sono solamente questi:

ar c++ g++ gccbug ld objcopy ranlib
as cpp gcc gcov nm objdump strip

TROVATO !

iMac:~ andrea$ /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-size /tmp/sd.cpp.elf -C
AVR Memory Usage

Device: Unknown

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

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

iMac:~ andrea$

Cosa vuol dire ?

Che il file è vuoto. E mi suona strano il percorso perché l'IDE di Arduino crea una cartella temporanea in /tmp/build-4875634875609348569384569834
cioè con un numero creato da una sfilza di cifre che cambia di volta in volta. Lì dentro ci sono i file dopo che hai compilato lo sketch.

Per la Petit FatFs:
allora significa che non è una libreria installabile sull'IDE di Arduino.
Sinceramente non mi ricordo come la usai. Anche perché feci dei test e nulla più.
Googlando ho trovato questo:

E' un wrapper scritto per usare la Petit FatFs con Arduino

Che il file è vuoto. E mi suona strano il percorso perché l'IDE di Arduino crea una cartella temporanea in /tmp/build-4875634875609348569384569834
cioè con un numero creato da una sfilza di cifre che cambia di volta in volta. Lì dentro ci sono i file dopo che hai compilato lo sketch.

avevo spostato il file per rendere più facile la scrittura sul terminale ! Ora ho incollato il percorso originale (dopo aver ricompilato il tutto):

iMac:~ andrea$ /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-size /var/folders/3f/s78gw1_94934mb_js4ljmh240000gn/T/build6753189683464400000.tmp/pre_final3_at_sd.cpp.elf -C
AVR Memory Usage

Device: Unknown

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

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

iMac:~ andrea$

Per la Petit FatFs:
allora significa che non è una libreria installabile sull'IDE di Arduino.
Sinceramente non mi ricordo come la usai. Anche perché feci dei test e nulla più.
Googlando ho trovato questo:
GitHub - mharizanov/petit_fatfs: A petit_fatfs port for Arduino IDE and Attiny84

E' un wrapper scritto per usare la Petit FatFs con Arduino

Ho installato la libreria, rinominata correttamente ma quando verifico gli esempi mi dà sempre lo stesso errore (non ho modificato minimamente il codice):

'USIDR' was not declared in this scope

:confused:

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

Sbaglio o questo significa che viene allocata più ram di quanta ne sia disponibile sull'UNO (2K ?)

tuxduino:

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

Sbaglio o questo significa che viene allocata più ram di quanta ne sia disponibile sull'UNO (2K ?)

Eh già.

@anerDev:
apre che quel wrapper che ti ho passato sia per i Tiny84.
Prova questo
http://arduino.cc/forum/index.php/topic,37604.0.html

Eh già.

Allora ho 4 soluzioni:

  • provare se con petit riesco ad utilizzare meno ram;
  • provare a tagliere il superfluo dalle librerie (non ho le competenze) = soluzioe da scartare;
  • usare un Mega;
  • usare due Uno;

e c'è ancora da aggiungere il trasmettitore ntx2: http://ukhas.org.uk/guides:linkingarduinotontx2

In definitiva, usare il Mega mi sembra la soluzione meno problematica !

o sbaglio ?

Uso uno shield sd, quindi questa guida è valida lo stesso ? http://arduino.cc/forum/index.php/topic,37604.0.html

EDIT:

ho verificato il demo: spi_init(); was not declared to this scope !

Uso un Mega e finiscono tutti i miei problemi ?

Stavo provando a compilare lo sketch che hai postato all'inizio, ma non capisco che libreria DHT hai usato.

Questa, forse ?

(edit: volevo verificare il consumo di RAM inserendo la macro F() su tutte le stringhe...)

@anerDev:
vedo che quel thread è del 2009, sicuramente è per una versione dell'IDE vecchia per cui potrebbero esserci problemi di compatibilità.
Anch'io ho usato la PetitFs con l'IDE 002x, non l'ho mai usata con la 1.0.x

Ecco la lista delle librerie:

DHT: GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors
MPL115A2: GitHub - adafruit/Adafruit_MPL115A2: Driver for the Adafruit MPL115A2 barometric pressure sensor breakout
GPS/GSM: Google Code Archive - Long-term storage for Google Code Project Hosting.

pre_final3_at_sd.ino, come l'hai postato tu, mi dà:

avr-size -C sketch_jan02a.cpp.elf
AVR Memory Usage

Device: Unknown

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

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

@leo72

allora penso che è un binario morto questo petit ! :confused:

Mi consigli il Mega ?

EDIT:

@tuxduino coincide ... Usano troppa ram !

Hey, 'spe che secondo me ci sono margini di miglioramento :slight_smile:

Ad esempio, comincia con eliminare cose come questa:

Serial.println("**************************************");

Inoltre invece di ripetere n-volte istruzioni come Serial.print(";"); potresti creare una che include solo quell'instruzione e richiamare tale funzione invece di duplicare il codice.

void serialPrintSemicolon() {
    Serial.print(";");
}

Sto facendo un po' di questi esperimenti per vedere l'effetto di queste modifiche unitamente all'uso della macro F().

AVR Memory Usage

Device: Unknown

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

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

Ho tolto completamente il:

Serial.println("**************************************");

Ho fatto la funzione

void colonna() {
    Serial.print(";");
}

e sostituito tutti i

Serial.print(";");

con

colonna();

Ecco il risultato:

AVR Memory Usage

Device: Unknown

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

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

Non coincide col tuo ! O.0

Altra cosa... si potrebbe verificare se le dimensioni delle variabili (smsbuffer, ad esempio) che dichiari siano strettamente necessarie, o se si posa "fare con meno"...

Chiaro, con un mega tagli la testa al toro :slight_smile: