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ì.
Sul serio: se non ci dai il codice completo non sappiamo aiutarti.
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ì.
Sul serio: se non ci dai il codice completo non sappiamo aiutarti.
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?
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.
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?
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.
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.
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.