problema LiquidCrystal warning: internal error: out of range error

Salve a tutti,
compilando il mio programma ho ricevuto questo errore:

LiquidCrystal\LiquidCrystal.cpp.o:(.rodata._ZTV13LiquidCrystal+0x6): warning: internal error: out of range error
LiquidCrystal\LiquidCrystal.cpp.o:(.rodata._ZTV13LiquidCrystal+0x8): warning: internal error: out of range error
Binary sketch size: 136570 bytes (of a 258048 byte maximum)

che errore è?
premetto che togliendo "un po di codice", compila regolarmente...

Ne hai tanta fiducia nelle mie facoltà da veggente, ma proprio oggi ho dato la mia sfera di cristallo aa lavarla e la ricevo di ritorno lunedì. :wink: :wink: :wink:
Sul serio: se non ci dai il codice completo non sappiamo aiutarti.

Ciao Uwe

uwefed:
Ne hai tanta fiducia nelle mie facoltà da veggente, ma proprio oggi ho dato la mia sfera di cristallo a lavare e la ricevo di ritorno lunedì. :wink: :wink: :wink:
Sul serio: se non ci dai il codice completo non sappiamo aiutarti.

Ciao Uwe

sono circa 9000 righe di programma... come faccio?

out of range error

a me pare che ti stia dicendo che c'è qualcosa (un indice?) che è andato fuori limite.. forse stai scrivendo fuori dal display? nel senso che stai puntando a locazioni inesistenti?

in realtà sono dei "banali" cicli while....

facendo delle prove addirittura ha compilato togliendo del codice che salvava sulla eeprom...

dunque, quì dicono che ci sono problemi quando usi la flash oltre i 128kB: Frequently Asked Questions

o magari il problema è anche per il codice che supera i 128 kB.. prova e facci sapere

lesto:
dunque, quì dicono che ci sono problemi quando usi la flash oltre i 128kB: Frequently Asked Questions

o magari il problema è anche per il codice che supera i 128 kB.. prova e facci sapere

Quindi anche con i Mega si presenta quel problema che oltre un tot di impegno di memoria flash o si pianta il micro o il compilatore va in barca....

sì, infatti appena ho visto che il problema forse riguardava la eeprom, mi è subito saltata in mente una discussione nel forum inglese dove parlavano di un problema simile, però forse era dettato dal boot-loader che non supportava qualcosa... c'è da indagare a fondo sulla questione.

mi sa che il problema sia altrove, forse nell'uso di troppi cicli while che per un qualche struso motivo mandano in palla la libreria...
adesso ho aggiunto altro codice e ottimizzato una parte del vecchio e sono a :

Binary sketch size: 134904 bytes (of a 258048 byte maximum)

Ripensavo a 'sta storia dei troppi cicli while... non è che hai consumato la RAM?
Lo stack e l'heap, come le variabili, vengono conservate nella memoria volatile, che è di 8 KB per il micro dell'Arduino Mega.
Creando tante variabili, facendo tanti cicli ecc non vorrei si fosse esaurita questa memoria.

e l'IDE è così intelligente???
e poi perchè da errore proprio quella libreria?

alex206cc:
e l'IDE è così intelligente???

:smiley: :smiley:

e poi perchè da errore proprio quella libreria?

Cmq dà "out of range". E' fuori campo qualcosa... un indice di una stringa, ad esempio?

ma cosa sigh sigh....

ragionando su quello che mi dite ho pensato che potrebbe essere un problema di libreria, nel senso che se lo sketch supera un tot di byte la libreria si inchioda, è possibile? se si come si può risolvere?

warning: internal error: out of range error

Non è un'errore ma un warning, può essere generato dalla direttiva #warning del preprocessore, potrebbe essere che nel sorgente della libreria del display ci sia un messaggio del genere.

Ciao.

MauroTec:

warning: internal error: out of range error

Non è un'errore ma un warning, può essere generato dalla direttiva #warning del preprocessore, potrebbe essere che nel sorgente della libreria del display ci sia un messaggio del genere.

Ciao.

infatti se io provo a fare l'upload, quest'ultimo viene fatto, ma il display non va, anzi mi sa che non si avvia proprio il programma (lampeggia il display)...

Sarà anche un warning (non sono pratico di terminologia C) ma all'atto pratico il risultato è identico: compila ma non esegue.

Sarà anche un warning (non sono pratico di terminologia C) ma all'atto pratico il risultato è identico: compila ma non esegue.

Un warning, può non comportare alcun problema a run-time e di sicuro non impedisce al compilatore di fare il suo compito, anche se in questo caso ciò che ha fatto a run-time combina casini.

Un error blocca la compilazione, per incapacità di risolvere simboli o altro, dipende dalla fase in cui è il compilatore.

Un warning che si verifica con arduino è quello che le librerie emettono quando negli header del cores, si include delay, e ti avvisa che ora delay e stato spostato in utils/delay.

C'è da guardare il codice delle librerie del display, per risalire a quale condizione si verifica quel warning.

Ciao.

chi è in grado di fare questo?