Go Down

Topic: sulla programmazione dei chip (tipo topic di menniti) (Read 12039 times) previous topic - next topic

Michele Menniti

ma no, avevo capito, lo sai che mi piace scherzare ;) se hai bisogno di chiarimenti scrivi senza pietà :)
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

Uhm... io per il fuse basso non metterei $E0. $E0 parla di "Ext. Clock", ossia di un segnale di clock dato da una fonte esterna, quindi su uno solo dei 2 pin adibiti all'ingresso del segnale. Ci vuole una impostazione che selezioni l'uso di un quarzo o risonatore esterno. Il valore che suggerisco è $FF, ossia la voce "Ext.Crystal/Resonator High Frequ. - Startup time 64CK + 64 ms".
Questo perché 16 MHz li considero "High Freq." per un chip che max lavora a 16 MHz appunto. Inoltre dare un tempo di startup di 64 CK + 64 ms permette al circuito del reset di eseguire correttamente il suo compito. Dare tempi molto brevi può portare a problemi di reset, con il chip che non si avvia correttamente.

Michele Menniti

Sì, hai perfettamente ragione, non lo avevo proprio visto il gruppo HF :smiley-eek-blue:, cercavo  la voce "8MHz-" come per il 328P, ma visto che era presente solo come circuito RC e ad un massimo di 12MHz ho ignorato il resto :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

#18
Aug 14, 2012, 02:09 pm Last Edit: Aug 14, 2012, 02:37 pm by igor97 Reason: 1

se hai bisogno di chiarimenti scrivi senza pietà :)


:smiley-yell: non era in dubbio che avrei chiesto qualcosa.

@leo:
se vedi nel ds qui: http://www.atmel.com/images/doc2486.pdf
a pagina 26 tabella 2 c'è nella prima riga "External Crystal/Ceramic Resonator 1111 - 1010"
io quindi ho spuntato tutti i cksel nella configurazione manuale del fuse calculator per interpretare gli 1111.
a meno che ora m isorge un dubbio e quegli 1111 significano tutti i cksel NON spuntati..

ma oltre a quei primi bit del low fuses devo solo spuntare SUT0 no?

io la onfigurazione normale non l'ho provata perchè mi imbroglio con tutte quelle voci del menu a discesa

EDIT: aaaaa ho trovato il problema; nella sezione della configurazione manuale c'è scritto (in piccolo  :0) Note: means unprogrammed (1); means programmed v (0).
ovvero che lo zero significa checkbox spuntata e non il contrario come io pensavo.
ora non mi resta solo che vedere la tabella del SUT. ora leo mi tornano i conti

Testato

e si, sto fatto che zero significa 1 e' un'idea eccezionale, credo che derivi dalla reale condizione interna del micro che pero' porta al manicomio.
E' sempre bene dare uno sguardo al dato finale, 1111 sara' tradotto in FF, e quello non mente  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72

I bit non impostati valgono 1, quelli impostati valgono 0. Quindi quando su AVR Fuse Calculator fate un segno di spunto ad una casellina state impostando a 0 quel bit.


si l'idea di scambiare la logica non è molto buona...  :~

sfogliando il ds o visto che si può usare un circuito RC come stadio oscillatore, ma come li dimensioan la r e il c?

Michele Menniti


si l'idea di scambiare la logica non è molto buona...  :~

sfogliando il ds o visto che si può usare un circuito RC come stadio oscillatore, ma come li dimensioan la r e il c?

Se vale la solita formula: F=1/(R*C*0,7)
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



si l'idea di scambiare la logica non è molto buona...  :~

sfogliando il ds o visto che si può usare un circuito RC come stadio oscillatore, ma come li dimensioan la r e il c?

Se vale la solita formula: F=1/(R*C*0,7)


la formula è giusta ma io devo trovare R e C; da quella formula non so ricavare due incognite  :smiley-eek:

PS: un mio amico mi haregalato le riviste che non so da dove si fa arivare, a partire dal numero 165 a 168..

Michele Menniti

Ma davvero dici che nelle Edicole di Taranto non arriva questa pubblicazione??? Beh, se te le hanno regalate meglio così $) per sapere da dove le fa venire basta chiedere no? o lui non si è ancora accorto di avertele regalate :smiley-yell:?

Sullo "scambio" della logica non saprei cosa dirvi, non conosco p.es. i PIC, per sapere se funzionano o meno allo stesso modo, indicando cioè 0 come programmato e 1 come non programmato. Alla fine basta farci un po' la mano ed è la stessa cosa ;)

Per la formula devi fissare una delle due incognite e calcolarti l'altra, l'importante è che alla fine ti escano valori reperibili sul mercato. Cioè se ti esce una capacità da 10 Farad probabilmente devi agire in modo differente. Considera che calcolata la resistenza è decisamente conveniente sostituirla con un trimmer + una R fissa.
Io partirei da una capacità qualsiasi, p.es. 1µF e calcolerei la resistenza, visto che esistono trimmeri da 100ohm a 22Mohm, a mia memoria.
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


si l'idea di scambiare la logica non è molto buona...  :~

Non so di che tipo sia la memoria dei Fuse, ma è certo che sia non volatile, tipo Flash o Eeprom. Entrambe queste memorie non volatili sono basate su una tecnologia che permette di memorizzare il bit dato aprendo o chiudendo il gate di uno speciale Mosfet. Il gate aperto viene letto come valore 1, mentre il gate chiuso equivale al valore 0. Per "scrivere" il valore 0 si deve "pompare" (tramite effetto tunnel o effetto di campo) una carica nel gate, quindi chiuderlo è un processo più complesso che aprirlo. Io penso che sia questo il motivo per cui anche i Fuse lavorano con questa logica inversa.

Michele Menniti

la memoria che ospita i fuse e lock bits è di tipo flash, come quella della signature. Quest'ultma è protetta ma alcuni tipi di eventi riescono a cancallarla, da lì il noto problema di perdita della signature, cosa nota a mio avvisto alla ATMEL, diversamente non mi spiego perché i tool di programmazione prevedano la possibilità di bypassarne la lettura, al momento dell'inizio della programmazione.
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


Ma davvero dici che nelle Edicole di Taranto non arriva questa pubblicazione??? Beh, se te le hanno regalate meglio così $) per sapere da dove le fa venire basta chiedere no? o lui non si è ancora accorto di avertele regalate :smiley-yell:?

Sullo "scambio" della logica non saprei cosa dirvi, non conosco p.es. i PIC, per sapere se funzionano o meno allo stesso modo, indicando cioè 0 come programmato e 1 come non programmato. Alla fine basta farci un po' la mano ed è la stessa cosa ;)

Per la formula devi fissare una delle due incognite e calcolarti l'altra, l'importante è che alla fine ti escano valori reperibili sul mercato. Cioè se ti esce una capacità da 10 Farad probabilmente devi agire in modo differente. Considera che calcolata la resistenza è decisamente conveniente sostituirla con un trimmer + una R fissa.
Io partirei da una capacità qualsiasi, p.es. 1µF e calcolerei la resistenza, visto che esistono trimmeri da 100ohm a 22Mohm, a mia memoria.


proverò allora cosi, ah mi ha detto che li prende in un edicola  :smiley-eek: dovrei aggiornarmi allora  :smiley-sweat:


Non so di che tipo sia la memoria dei Fuse, ma è certo che sia non volatile, tipo Flash o Eeprom. Entrambe queste memorie non volatili sono basate su una tecnologia che permette di memorizzare il bit dato aprendo o chiudendo il gate di uno speciale Mosfet. Il gate aperto viene letto come valore 1, mentre il gate chiuso equivale al valore 0. Per "scrivere" il valore 0 si deve "pompare" (tramite effetto tunnel o effetto di campo) una carica nel gate, quindi chiuderlo è un processo più complesso che aprirlo. Io penso che sia questo il motivo per cui anche i Fuse lavorano con questa logica inversa.

forse ora ho piu chiaro il discorso ;)


la memoria che ospita i fuse e lock bits è di tipo flash, come quella della signature. Quest'ultma è protetta ma alcuni tipi di eventi riescono a cancallarla, da lì il noto problema di perdita della signature, cosa nota a mio avvisto alla ATMEL, diversamente non mi spiego perché i tool di programmazione prevedano la possibilità di bypassarne la lettura, al momento dell'inizio della programmazione.

ah...i misteri della vita son questi

leo72


la memoria che ospita i fuse e lock bits è di tipo flash, come quella della signature. Quest'ultma è protetta ma alcuni tipi di eventi riescono a cancallarla, da lì il noto problema di perdita della signature, cosa nota a mio avvisto alla ATMEL, diversamente non mi spiego perché i tool di programmazione prevedano la possibilità di bypassarne la lettura, al momento dell'inizio della programmazione.

Se è una semplice memoria Flash, perché Atmel dice che un chip che ha perso la signature non si può "rifirmare"? Non basterebbe uno strumento come un programmatore per riscrivere la firma?

Se questo impedimento è dato dal fatto che un malintenzionato potrebbe "firmare" dei chip di un tipo come altri tipi di microcontrollore (es. firmare come 328P dei più vecchi 328) perché allora non inserire questa firma in una memoria non riscrivibile tipo PROM? Non capisco. E' solo una questione di costo? E' per una semplificazione progettuale (usano un banco di Flash dove ci infilano tutti i dati invece di usare un banco di Flash ed un banco di PROM)?

Michele Menniti

perché è un'area protetta, te l'ho detto, è protetta in fase di costruzione, altrimenti la si potrebbe cambiare a piacimento. Trattandosi di un elemento che deve identificare un tipo di micro non avrebbe alcun senso poterla cambiare (=riscrivere). Poi figurati se possiamo aprire una questione su cosa potrebbero/dovrebbero fare, questa è e buonanotte :)
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

Go Up