0
Offline
Jr. Member
Karma: 0
Posts: 72
Arduino rocks
|
 |
« Reply #90 on: May 25, 2012, 03:56:08 am » |
@astrobeed innanzitutto ancora grazie. -Le cose migliorano: ora in effetti flashando il file 2560_Boot.hex il led lampeggia in maniera tranquillizzante. Tuttavia se successivamente provo a caricare uno sketch mediante IDE ottengo lo stesso problema di prima : Dimensione del file binario dello sketch: 11.100 bytes (su un massimo di 258.048 bytes) avrdude: verification error, first mismatch at byte 0x0000 0x02 != 0xff avrdude: verification error; content mismatch
-se con la stessa procedura scrivo il file stk500boot_V2_mega2560.hex posso successivamente caricare gli sketch senza problemi.ù Tra parentesi, cosa importante: Se provo a caricare il file 2560_Boot.hex che hai generato tu,funziona tutto senza problemi, a maggior conferma che è un errore di compilazione e basta!
|
|
|
|
« Last Edit: May 25, 2012, 04:00:28 am by Giorgio »
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #91 on: May 25, 2012, 04:02:46 am » |
-Le cose migliorano: ora in effetti flashando il file 2560_Boot.hex il led lampeggia in maniera tranquillizzante. Tuttavia se successivamente provo a caricare uno sketch mediante IDE ottengo lo stesso problema di prima :
Purtroppo sono fuori e mi tocca andare a "memoria", ho fatto un'altra piccola modifica al progetto, riscaricalo dal post precedente, ora dovrebbe funzionare perfettamente.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 72
Arduino rocks
|
 |
« Reply #92 on: May 25, 2012, 04:07:42 am » |
EUREKA!!
0 Warning!
E lo sketch funziona!
Grazie!!
Che bello ora posso finalmente cominciare a risolvere il mio problema..
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #93 on: May 25, 2012, 04:13:13 am » |
Che bello ora posso finalmente cominciare a risolvere il mio problema..
E adesso comincia il vero divertimento, o sofferenza a seconda dei punti di vista 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 72
Arduino rocks
|
 |
« Reply #94 on: May 25, 2012, 04:26:06 am » |
Ma si dai, chiamiamolo divertimento.Ancora grazie!
@lesto avevi ragione:se evito quella parte,commentando alcune righe non ottengo il risultato desiderato.Dove mi suggeriresti di mettere il timeout?
|
|
|
|
|
Logged
|
|
|
|
|
Lamezia Terme
Offline
Shannon Member
Karma: 386
Posts: 10248
Le domande di chi vuol imparare rappresentano la sua sete di sapere
|
 |
« Reply #95 on: May 25, 2012, 05:14:05 am » |
Nonn c'è niente da "fare": questo è un grande Forum, non c'è problema che non si risolva  Buon proseguimento Giorgio e tienici aggiornati, mi spiace averti potuto dare solo supporto morale, ma a volte anche quello serve per non scoraggiarsi subito 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 82
Posts: 8212
:(){:|:&};:
|
 |
« Reply #96 on: May 25, 2012, 05:48:17 am » |
lol hai commentato tutto tranne l'unica istruzione bloccante: while ((!(Serial_Available())) && (boot_state == 0)) quindi io farei così: unsigned long timeout = millis() + 5000; //tempo atuale + 5 secondi
while ((!(Serial_Available())) && (boot_state == 0) && millis() < timeout) in questo modo il boot-loader aspetta 5 secondi lo sketch, se no parte normalmente. NON SO SE LA MILLIS FUNZIONA DI GIà, in caso crei una unsogned long millis, e la incrementi nel ciclo. certo non si tratterà più di millisecondi ma il valore sarà da trovare "a naso"... ma direi che te la puoi cavare da solo 
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #97 on: May 25, 2012, 05:51:29 am » |
NON SO SE LA MILLIS FUNZIONA DI GIà, in caso crei una unsogned long millis, e la incrementi nel ciclo. certo non si tratterà più di millisecondi ma il valore sarà da trovare "a naso"... ma direi che te la puoi cavare da solo  Il bootloader è scritto in C ANSI, scordati di usare millis e tutte le altre "comodità" di Wiring.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 82
Posts: 8212
:(){:|:&};:
|
 |
« Reply #98 on: May 25, 2012, 06:15:06 am » |
non vorrei dire baggianate ma millis e micro sono scritte in C ansi, magari non ci sono nel boot-loader, ma fare un copia-incolla brutale delle funzioni (i includere la libreria) dovrebbe essere possibile senza modifiche.
in effetti mi sembrava strano che ci fossero tutte le librerie arduino.h, mi ha tratto in inganno la Serial_Available()
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #99 on: May 25, 2012, 06:32:16 am » |
non vorrei dire baggianate ma millis e micro sono scritte in C ansi, magari non ci sono nel boot-loader, ma fare un copia-incolla brutale delle funzioni (i includere la libreria) dovrebbe essere possibile senza modifiche.
La millis per funzionare usa il timer 0 e il relativo interrupt, tutte cose che non fanno parte del bootloader che già è abbastanza carico di suo senza complicargli ulteriormente la vita.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16460
Don't know what I do
|
 |
« Reply #100 on: May 25, 2012, 08:04:02 am » |
@lesto: Il timer 0 viene inizializzato solo quando si programma con l'IDE perché fa parte del core di Arduino, il bootloader non lo usa. Forse con uno pseudo ciclo di ritardo (un contatore a vuoto) ma non so.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 82
Posts: 8212
:(){:|:&};:
|
 |
« Reply #101 on: May 25, 2012, 08:22:53 am » |
un ciclo vuoto non funziona, il compilatore lo elimina in automatico.(furbo, eh?  ) ogni iterazione di while aumenti un contatore, e quando supera una soglia esci dal while. in pratica trasformi quel while in un for... la logica è la stessa ma "freghi" il compilatore. Certo è più difficile stimare la durata del ciclo, ma andando a tentativi non si rompe certo niente. DA CONTROLLARE CHE NON VENGA ACCIDENTALMENTE SOVRASCRITTO, MAGARI IN MANIERA PARZIALE LO SKETCH NEL MICRO!
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16460
Don't know what I do
|
 |
« Reply #102 on: May 25, 2012, 08:24:13 am » |
Altrimenti, visto che il bootloader è comunque di diversi kB, si può impostare il timer 2 per incrementare un contatore una volta ogni ms, un po' come faccio io sulla swRTC. In questo modo si ha un contamillisecondi com poche righe di C, basta agire direttamente sui registri.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 72
Arduino rocks
|
 |
« Reply #103 on: May 25, 2012, 08:28:54 am » |
Uh state andando un po sul difficile per me.. Nel frattempo sto provando con qualche contatore,qualche delay e qualche forzatura di bootstate, ma ho trovato solo un gran numero di modi di evitare che lo sketch parta  Caspita che parto..
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 82
Posts: 8212
:(){:|:&};:
|
 |
« Reply #104 on: May 25, 2012, 08:36:42 am » |
già bisogna entrare più in merito.. quando uppi il codice, poi non parte linearmente, ma mi pare ci sia un reset a fine upload.se così fosse bisogna fare in modo che invece parta lo skecth senza quel reset. sinceramente è solo un'idea, prima di esprimermi seriamente voglio osservare bene tutto il codice, altrimenti son solo supposizioni
|
|
|
|
|
Logged
|
|
|
|
|
|