Go Down

Topic: Topic permanente di programmazione newbie (Read 33 times) previous topic - next topic

legolas93

Michee..ehh  :P io mi sono rifatto al titolo!

Grazie Leo72..era la velocità impostata diversa  :~ La cosa bella è che è una cosa che so e che avevo anche controllato..  :smiley-zipper: Questi sono proprio errori da newbie.

Vediamo se ora della Maturità riesco a tirare fuori qualche progetto carino da portare alla commissione  8)
"Sono convinto che l'informatica abbia molto in comune con la fisica...Dentro i confini del computer, sei tu il creatore. Controlli - almeno

Michele Menniti


Grazie Leo72..era la velocità impostata diversa  :~ La cosa bella è che è una cosa che so e che avevo anche controllato..  :smiley-zipper: Questi sono proprio errori da newbie.

E per questo sei degnamente finito su questo Topic  :smiley-mr-green:
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

Michele Menniti


Introduco un altro argomento, o meglio lo riprendo, quello dei Lock bits: ora è chiaro che i boot lock bits ed i lock bits sono 6 bits dello stesso byte; nelle prove non mi è mai balenata l'idea che potesse essere così e non ho provato valori diversi da FF, FE, FC (i tre che agiscono sui lb); ma nelle note di programmazione del reference non vedo traccia della programmazione dei BLB, in quanto parla sempre e solo di lb. Non ho l'HV se non mi rispondevo da solo :smiley-mr-green: Secondo Voi per programmare anche i BLB mi basterebbe semplicemente inserire un valore, tra quelli permessi, contemplando anche lo status 0/1 che voglio dare ai blb? P.es. con CF potrei programmare i due blb più alti lasciando il resto a 1?

Fatte le prove "LI CONTI TORNANO" (ultimo dialogo tra la Morte e Brancaleone): effettivamente, rimossi i blocchi che avevo messo, al LOCK BITS BYTE nel suo insieme riesco a dare qualsiasi valore, quindi posso programmare sia i BLB e i LB. Il vero problema che mi si pone ora è capire tutto il casino che ruota attorno a questi 6 bit (due non sono usati); attenzione, non mi riferisco alla questione protegge/non protegge, già abbondantemente chiarita, ma proprio come si dovrebbe usarli. E per quanto sono riuscito a comprendere io spiegherei questo in prima battuta:
Il LBB è così organizzato:
7-6 : non usati
5-4 : Protezione della Sezione Bootloader della memoria Flash
3-2 : Protezione della Sezione Application della memoria Flash
1-0 : Protezione della memoria Flash e EEPROM

Cioè a me pare di capire che mentre i bit 5-4 e 3-2 agiscono solo sulla specifica sezione di memoria flash (la Application va da 0x0000 all'inizio della Bootloader, che è fissato dai fuse: 512-1024-2048-4096 byte), i bit 1-0 agiscono sull'intera memoria flash e anche sulla EEPROM (sempre che non sia protetta dall'attivazione dell'apposito Fuse.

Tutto ciò lo ricavo dal Rev. 8271D-AVR-05/11 del 328P (salvo eccezioni sul 48P) pag. 283 par. 27.5 e pag. 297 par. 28.1 e la cosa mi sembra confermata dalla nota "Program the Fuse bits and Boot Lock bits before programming the LB1 and LB2" che ora finalmente capisco; infatti se è come ho intuito è ovvio che i LB siano più "potenti" dei BLB, che verrebbero ignorati; e infatti riesco a programmare nella direzione FF->FE->FC ma non nella direzione opposta.

Ma il mio inglese… :~ vi chiedo conferma, ho capito bene secondo voi?
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

leo72

Concordo con te. Ma la parte più significativa secondo me è la coppia di tabelle a pagina 284, dove spiega "chi" e "dove" può accedere. Vedi infatti le distinzioni fra area dell'applicazione ed area del booloader nonché i permessi della programmazione seriale e parallela.

Ah, piccola precisazione. Questo non è corretto:
Quote
la Application va da 0x0000 all'inizio della Bootloader, che è fissato dai fuse: 512-1024-2048-4096 byte

In realtà quei valori indicano la dimensione, non l'indirizzo di partenza. Il bootloader occupa sempre la parte più alta della memoria. Ma penso che tu abbia solo scritto male.

Comunque per chiarezza facciamo un esempio. Se abbiamo un Atmega168, la sua memoria va da 0000 a 16383 ($0000-$3FFF). Se impostiamo un bootloader di 512 byte, la memoria dell'applicazione va da $0000 a $3DFF, poi da $3E00 a $3FFF c'è il bootloader. In un 328, lo stesso bootloader occupa da $7E00 a $7FFF.

MauroTec

Menniti se non ricordo male (due settimane fa ho letto circa i 6 bit nel datasheet del 328)  il tuo inglese questa volta è stato sufficiente.
Possiamo dire che LB è Global Lockbit, e BLB e BLB1 sono Specific Lockbit.

Come usarli non lo so, io in avrdudequi li ho implementati come si vedono nel datasheet, con la stessa descrizione "pessima" perchè non ho saputo trovare niente di meglio e in mancanza ho preferito lasciare le note di Atmel.

Ciao.

Anticipato da leo:
Quote
Comunque per chiarezza facciamo un esempio. Se abbiamo un Atmega168, la sua memoria va da 0000 a 16383 ($0000-$3FFF). Se impostiamo un bootloader di 512 byte, la memoria dell'applicazione va da $0000 a $3DFF, poi da $3E00 a $3FFF c'è il bootloader. In un 328, lo stesso bootloader occupa da $7E00 a $7FFF.


Vero anche io penso che abbia scritto sbagliato ma sa come stanno le cose.

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Go Up