Pages: 1 ... 5 6 [7] 8 9 10   Go Down
Author Topic: Aiuto per compilazione STK500boot.c  (Read 5931 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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 :
Code:
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 Offline
Tesla Member
***
Karma: 123
Posts: 9308
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

-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 Offline
Jr. Member
**
Karma: 0
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

EUREKA!!

0 Warning!

E lo sketch funziona!

Grazie!!

Che bello ora posso finalmente cominciare a risolvere il mio problema..
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 123
Posts: 9308
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-mr-green
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Shannon Member
****
Karma: 564
Posts: 12439
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nonn c'è niente da "fare": questo è un grande Forum, non c'è problema che non si risolva smiley-lol
Buon proseguimento Giorgio e tienici aggiornati, mi spiace averti potuto dare solo supporto morale, ma a volte anche quello serve per non scoraggiarsi subito smiley-wink
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

0
Online Online
Shannon Member
****
Karma: 130
Posts: 10461
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

lol hai commentato tutto tranne l'unica istruzione bloccante:

Quote
while ((!(Serial_Available())) && (boot_state == 0))

quindi io farei così:

Quote
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 smiley
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 123
Posts: 9308
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley

Il bootloader è scritto in C ANSI, scordati di usare millis e tutte le altre "comodità" di Wiring.
Logged

0
Online Online
Shannon Member
****
Karma: 130
Posts: 10461
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 123
Posts: 9308
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22635
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@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
Online Online
Shannon Member
****
Karma: 130
Posts: 10461
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un ciclo vuoto non funziona, il compilatore lo elimina in automatico.(furbo, eh? smiley-mr-green)
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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22635
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Jr. Member
**
Karma: 0
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink

Caspita che parto..
Logged

0
Online Online
Shannon Member
****
Karma: 130
Posts: 10461
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: 1 ... 5 6 [7] 8 9 10   Go Up
Jump to: