Fuses

MauroTec:
Io mi riferivo al manuale del microcontroller anche chiamato datasheet e per leggerelo e capirlo è richiesta una conoscenza di base dell'elettronica digitale ed in genere di informatica oltre una discreta conoscenza dell'inglese tecnico.

confermo appieno :sweat_smile: per me che non ho la conoscenza diretta della lingua è stato drammatico studiare tutti quei data-sheet; diciamo che sono stato aiutato dal fatto che ho un po' di dimestichezza nella materia ed alla fine tutto questo studio mi è servito anche per riuscire a migliorare il mio pessimo rapporto con quella lingua :sweat_smile:

Per gli articoli di Menniti invece non è richiesta alcuna conoscenza specifica, certo almeno si deve sapere cosa sono byte, bit, ecc.

questa tua considerazione mi fa molto piacere, anche qui confermo che almeno i principi del sistema binario e della conversione binaria-esadecimale bisogna averli, altrimenti diventa più complicato comprendere certi meccanismi.

Ok e grazie a tutti per l'aiuto, ma quindi? Se nei fuse c'è una F vuol dire che ho 4 bit programmati a 0 o no?
@MauroTec AND @Testato: solo per essere chiaro e senza prepotenza, mi avete detto cose che ho già scritto nei primi post: so che quando è programmed è 0, forse mi sono spiegato male.

Domanda:
Se leggo F, leggo 4 bit programmati o non programmati? E' l'unica domanda che mi ha fatto aprire questo post.
E scusate ma il forum lo uso per leggere, eventualmente aiutare ed essere aiutato senza dove andare a comprare riviste..almeno per ora. :wink:

Per la sezione sbagliata, cercherò di non fare più questo errore.

thexeno:
E scusate ma il forum lo uso per leggere, eventualmente aiutare ed essere aiutato senza dove andare a comprare riviste..almeno per ora. :wink:

ci mancherebbe, è che avevi dato la sensazione di essere interessato (

l'articolo in questione parte da zero o presuppone conoscenze "avanzate" di qualche tipo?

) e di essere meno preparato di quanto tu non lo sia in realtà (

e ovviamente citazioni per colmare eventuali lacune sono ben accette

), qui nessuno vende niente :slight_smile:

Per la sezione sbagliata, cercherò di non fare più questo errore.

Grazie, questa è una cosa importante per mantenere il Forum in ordine.

thexeno:
Domanda:
Se leggo F, leggo 4 bit programmati o non programmati?

secndo me sbagli il concetto di programmato o meno, sia zero che uno sono programmazioni.
una F significa che i 4 bit a cui ti riferisci sono settati a 0, il che significhera' qualcosa i base al tipo di micro

@TEstato: Sul datasheet dice "programmed 0" o "unprogrammed 1". Ma siccome con arduino è possibilissimo usare un MCU senza leggere il datasheet, la domanda è rivolta a chi lo ha letto. E' brutta come risposta, ma è per essere chiari ed evitare dispersione di informazioni meno utili per chi ha dubbi simili e cerca in questo forum.

non so quali conoscenze hai dei fuses, ti assicuro che quel "programmed" del datascheed nonn significa cio' che tu intendi.
Se ad esempio parliamo di un fuse che gestisce l'utilizzo del risuonatore inerno o esterno, capirai che sia zero, sia uno sono due settaggi che portano ad un risultato.
Quindi non e' che se metti tutti i fuse a 0 allora questi sono programmati. Semplicemente mettendoli tutti a 0 avrai una certa combinazione delle svariate opzioni possibili.

Per capire di preciso devi andarci di datascheet e guardarti il tuo determinato micro.

Se non ti interessa arrivare a questo livello delle cose, tieniti il tuo arduino cosi' come e', uno dei motivi del suo successo e' proprio la ricerca della semplicita', ed infatti L'Ide arduino non cita minimamente i fuses, ne' tantomento di permette di cambiarli tramite gui

Testato:

thexeno:
Domanda:
Se leggo F, leggo 4 bit programmati o non programmati?

secndo me sbagli il concetto di programmato o meno, sia zero che uno sono programmazioni.
una F significa che i 4 bit a cui ti riferisci sono settati a 0, il che significhera' qualcosa i base al tipo di micro

Io dico che è meglio che vi leggete gli articoli di Menniti. :stuck_out_tongue:

Seguendo il manuale (datasheet) i termini programmed e unprogrammed stanno a significare che una funzionalità/configurazione offerta da un fuse bit è da considerare non programmata se quel bit è scritto ad 1 e ovviamente è la funzionalità è programmata se il fuse bit è scritto a 0.

Per cui 0xff in decimale vale 255 ed in binario corrisponde a tutti gli 8 bit di un byte fuse posti ad 1, quindi non programmati. Es il bit fuse CKDIV8 non è programmato perchè il bit e posto a 1 e quindi la funzionalità di dividere il clock per 8 è disabilitata.

L'unica cosa che è invertita è la convenzione che vuole un bit posto ad 1 per abilitare una funzionalità.

Avr Studio sicuramente mostra delle ckeck box da spuntare se si vuole abilitare la funzionalità offerta dal quel bit fuse, ripristinando di fatto la convenzione di cui sopra.

Ciao.

E' quello che penso/temo anch'io, purtroppo pare che io sia diventato un giornalaio (con tutto il sacrosanto rispetto per una professione a cui sono particolarmente legato) che vuole insegnare agli Ingegneri quindi evito di aggiungere altro per non offendere nessuno. La tua spiegazione è perfetta, mi inchino :slight_smile:

Ho problemi con la connessione della chiavetta internet, dice HSDPA ma va come una EDGE e allora mi disconnetto e riconnetto per vedere se il problema scompare, di solito funziona ma ora sono 2 giorni che la connessione va a rilento. :frowning:

Io ci sono passato prima di te con i fuse per questo ho una certa esperienza, ricordo il mio programma front-end per avrdude?

E grazie a quel programma che ci ho sbattuto il muso.

Ciao.

mauro io preferisco non parlare di programmazione o non programmazione perche' alcuni fuse sono si' on off, ma altri sono una scelta.
in tal senso sia 1 che zero sono una programmazione, perche' stai scegliendo cosa vuoi fargli fare.

Esempio il BOOTRST, ad 1 punta il vettore di reset alla sezione application, a 0 lo punta alla sezione bootloader.

come vedi in questo caso se dici "con 1 il BOOTRST non e' programmato" non e' corretto.
Mentre effettivamente in altri casi come il tuo citato "divide il clock x8" si puo' applicare il concetto di programmato o meno

questo volevo far capire, non so se ci sono riuscito, oppure se sbaglio qualcosa nell'interpretazione

mauro posta il link alla tua gui, non l'ho mai provata

Ottimo MauroTec, l'Avr Studio non offre fuse da programmare, devi usare l'avrdude e fusecalc che trovi googlando. Comque concordo con ciò che dici. E grazie.

@Testato: si dice datasheet. Comunque ho appena dato un esame sui freescale programmandoli a livello di singoli registri, per cui voglio fare tutto il contrario di quello che dici te. Ho un arduino solo xke ha un bootloader molto supportato (quindi no programmatore) e costa poco. Personalmente il C++ e le librerie prefatte le trovo totalmente inutili e controproducenti per chi vuole fare strada in termini di apprendimento di elettronica e programmazione efficiente al livello di pilotare un motorino o un LCD. Ma fondamentali a chi non interessa questa roba. Fosse per me programmerei solo in assembler, ma mi rendo conto che è impossibile quasi oltre un certo livello di complessità e irrispettoso verso il C :smiley: , e a questo livello rischierei di perdere la salute mentale, se ancora ce n'è. E a parte queste elucubrazioni, i fuse di cui tu parli si chiamano registri, e sono locazioni che vengono scritte e lette per impostare i comandi interni e si cambiano nel codice secondo le indicazioni che solo un datasheet o manuale contengono. I fuse li programmi solo durante il burning del programma sulla eeprom e, nel caso del bootloader, solo durante il burning del bootloader stesso (del quale ammetto che non ne conosco bene il funzionamento, so solo che intepreta i byte ricevuti dalla seriale mettendoli nelle giuste locazioni XD)

merda, ne e' arrivato un altro :stuck_out_tongue_closed_eyes:

Testato:
merda, ne e' arrivato un altro :stuck_out_tongue_closed_eyes:

ROTFL XD lo sapevo io che la prendevi così :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

@ tex: sia ben chiaro che tu non c'entri nulla, è che hai rievocato un brutto ricordo nella mente di Testato e lui l'ha buttata (per fortuna :sweat_smile:) sul ridere, quindi non pensare male.

ah si, credo parlasse di un vecchio troll che insultava a gratis XD
Avevo letto cose incredibili.. Comunque in tal caso gli chiedo scusa. Sono mie opinioni e non son nessuno per dire che son le migliori, ovviamente.

thexeno:
ah si, credo parlasse di un vecchio troll che insultava a gratis XD
Avevo letto cose incredibili..

ah, quindi la sai la storia? XD XD XD c'è stata una tua frase che anche a me ha fatto venire in mente quel tizio, quando ho letto la battuta di Test sono scoppiato dal ridere, ma lui (Test) all'epoca non la prese così ]:smiley: ecco perché ora ci ridevo su, ma nel contempo non volevo che potesse sfiorarti l'idea che ti stessimo prendendo in giro, quindi sono contento che tu sappia la storia. XD XD

Anche io sto vedendo un pò i fuse bit.
Sto provando come esercizio a calcolarmi i fuse per le board che ho almeno verifico se posso continuare nello studio :slight_smile:
Ho trovato una cosa che non mi torna sul fuse high (0xDE) per l'ATmega328P in standalone (senza bootloader).
Quando ho provato sul calcolatore mi esce come fuse high 0xDF; ho notato che per settare i fuse come nella board devo mettere la spunta anche sul BOOTRST (Boot reset vector).
Da quanto ho capito questo se spuntato serve per far partire il bootloader subito dopo il reset, mentre se è disabilitato parte direttamente lo sketch; sulla board del 328P in standalone (quindi senza bootloader) perchè è settato BOOTRST se non c'è il bootloader?
@Michele: sono spiegati questi dettagli sulla rivista?

Pelletta:
Anche io sto vedendo un pò i fuse bit.
Sto provando come esercizio a calcolarmi i fuse per le board che ho almeno verifico se posso continuare nello studio :slight_smile:
Ho trovato una cosa che non mi torna sul fuse high (0xDE) per l'ATmega328P in standalone (senza bootloader).
Quando ho provato sul calcolatore mi esce come fuse high 0xDF; ho notato che per settare i fuse come nella board devo mettere la spunta anche sul BOOTRST (Boot reset vector).
Da quanto ho capito questo se spuntato serve per far partire il bootloader subito dopo il reset, mentre se è disabilitato parte direttamente lo sketch; sulla board del 328P in standalone (quindi senza bootloader) perchè è settato BOOTRST se non c'è il bootloader?
@Michele: sono spiegati questi dettagli sulla rivista?

yes, se dico che è un bel lavoro lo è :wink:

Testato:
mauro io preferisco non parlare di programmazione o non programmazione perche' alcuni fuse sono si' on off, ma altri sono una scelta.
in tal senso sia 1 che zero sono una programmazione, perche' stai scegliendo cosa vuoi fargli fare.

Esempio il BOOTRST, ad 1 punta il vettore di reset alla sezione application, a 0 lo punta alla sezione bootloader.

come vedi in questo caso se dici "con 1 il BOOTRST non e' programmato" non e' corretto.
Mentre effettivamente in altri casi come il tuo citato "divide il clock x8" si puo' applicare il concetto di programmato o meno

questo volevo far capire, non so se ci sono riuscito, oppure se sbaglio qualcosa nell'interpretazione

mauro posta il link alla tua gui, non l'ho mai provata

Ok si ora ho capito a cosa ti riferisci, però diciamo che se vogliamo tutti usare la stessa lingua dobbiamo imparare dallo stesso libro ed esprimerci tutti come il libro stesso ci insegna. In questo caso il libro di riferimento è il datasheet del microcontroller e li non si fa alcuna differenza tra i bit di ogni fuse byte, dove accanto ad ognuno è specificato 0(programmed) o 1 (unprogrammed). Ovviamente bisogna andare a vedere cosa succede se un bit è programmed o meno.

Il programma è su git https://gitorious.org/avrdudequi/pages/Home
Occhio che compila solo su GNU/Linux perchè usa DBUS.

La versione che hai visto ha la gestione dei lock bit che non c'è su quello presente nel repo.
Non ho ancora aggiornato il repo con la nuova versione perchè è instabile va in crash una volta si e una volta sempre. Le gui di ogni micro supportato sono create tramite QtDesigner e vengono caricate a run-time quindi se vuoi una gui per un micro non presente chiedi e ti sarà dato.

Non sono concentrato su questa versione che aggiorno di tanto in tanto perchè alla fine fa il suo lavoro ed è estendibile ma in modo limitato. Invece la nuova versione è quella super flessibile tutta orientata ai plugin che dovrei sviluppare ma che per adesso è ferma a livello embrionale, ci sono solo moduli base come la gestione dei device usb nativa perchè questo non sarà un front-end ad avrdude ma un programma indipendente.

thexeno:
Ottimo MauroTec, l'Avr Studio non offre fuse da programmare, devi usare l'avrdude e fusecalc che trovi googlando. Comque concordo con ciò che dici. E grazie.

@Testato: si dice datasheet. Comunque ho appena dato un esame sui freescale programmandoli a livello di singoli registri, per cui voglio fare tutto il contrario di quello che dici te. Ho un arduino solo xke ha un bootloader molto supportato (quindi no programmatore) e costa poco. Personalmente il C++ e le librerie prefatte le trovo totalmente inutili e controproducenti per chi vuole fare strada in termini di apprendimento di elettronica e programmazione efficiente al livello di pilotare un motorino o un LCD. Ma fondamentali a chi non interessa questa roba. Fosse per me programmerei solo in assembler, ma mi rendo conto che è impossibile quasi oltre un certo livello di complessità e irrispettoso verso il C :smiley: , e a questo livello rischierei di perdere la salute mentale, se ancora ce n'è. E a parte queste elucubrazioni, i fuse di cui tu parli si chiamano registri, e sono locazioni che vengono scritte e lette per impostare i comandi interni e si cambiano nel codice secondo le indicazioni che solo un datasheet o manuale contengono. I fuse li programmi solo durante il burning del programma sulla eeprom e, nel caso del bootloader, solo durante il burning del bootloader stesso (del quale ammetto che non ne conosco bene il funzionamento, so solo che intepreta i byte ricevuti dalla seriale mettendoli nelle giuste locazioni XD)

Avr Studio supporta le estenzioni tramite plugin, ora io non ho windows e quindi non posso usare Avr Studio ma mi sono documentato tempo a dietro. L'utente che usa Avr Studio e che ha esperienza diretta è Astrobeed che per adesso latita il forum perchè probabilmente è in vacanza ai tropici. Quindi quando torna può smentire quanto dico, e cioè ho la certezza che se installi sul tuo pc un programmatore Avr ISP mkii ti sarà possibile modificare i lock bit, fuse bit ecc, e al momento non puoi farlo perchè il plugin per Arduino board non esiste in Avr Studio.

Le ultime affermazioni in risposta a Testato ti hanno portato fuori strada, le cose non stanno così o meglio intuisco un certa confusione, e te ne accorgerai quando sarai in grado di comprendere il codice del bootloader di arduino 2009 che è più facile da studiare, comunque le altre board hanno un bootloader che offre funzionalità simili a quelle della 2009. Ed in genere continuando a leggere il datasheet e ti renderai conto di come stanno le cose. Poi per il resto noi siamo qui con ancora la voglia di rispondere ai quesiti di interesse generale.

Testato:
merda, ne e' arrivato un altro :stuck_out_tongue_closed_eyes:

:smiley: :smiley: :smiley:

Pelletta:
Anche io sto vedendo un pò i fuse bit.
Sto provando come esercizio a calcolarmi i fuse per le board che ho almeno verifico se posso continuare nello studio :slight_smile:
Ho trovato una cosa che non mi torna sul fuse high (0xDE) per l'ATmega328P in standalone (senza bootloader).
Quando ho provato sul calcolatore mi esce come fuse high 0xDF; ho notato che per settare i fuse come nella board devo mettere la spunta anche sul BOOTRST (Boot reset vector).
Da quanto ho capito questo se spuntato serve per far partire il bootloader subito dopo il reset, mentre se è disabilitato parte direttamente lo sketch; sulla board del 328P in standalone (quindi senza bootloader) perchè è settato BOOTRST se non c'è il bootloader?
@Michele: sono spiegati questi dettagli sulla rivista?

Si in effetti sembra proprio che su standalone quel fuse bit debba essere unprogrammed cioè posto ad 1. Anche se non so cosa accade se rimane programmato.

Ciao.

MauroTec:
Avr Studio supporta le estenzioni tramite plugin, ora io non ho windows e quindi non posso usare Avr Studio ma mi sono documentato tempo a dietro. L'utente che usa Avr Studio e che ha esperienza diretta è Astrobeed che per adesso latita il forum perchè probabilmente è in vacanza ai tropici. Quindi quando torna può smentire quanto dico, e cioè ho la certezza che se installi sul tuo pc un programmatore Avr ISP mkii ti sarà possibile modificare i lock bit, fuse bit ecc, e al momento non puoi farlo perchè il plugin per Arduino board non esiste in Avr Studio.

Si, infatti ho cercato delle guide per farmi un "external tool" che dopo la compilazione in AVR studio passa l'hex ad avrdude.exe e valà.
Per la modifica dei fuse, sicuramente se hai un programmatore lo spero me li faccia cambiare.. cmq non l'ho mai comprato, per ora va bene così