Fuses

Ciao! Ho un dubbio: quali fuse programmati ha il duemilanove? PErché non ho capito se quando li leggo, F=1111 o il contrario visto che sono in logica negata. Probabilmente devo interpretare F=0000 (programmati), però non so..
Grazie! :smiley:

arduino 2009 ha questi fuse di default:
low_fuses=0xFF
high_fuses=0xDA
extended_fuses=0x05

tu a quale ti riferisci ?

Esattamente a quelli, ma vorrei capire come interpretare la logica per capire ciò che c'è scritto sul datasheet

thexeno:
Esattamente a quelli, ma vorrei capire come interpretare la logica per capire ciò che c'è scritto sul datasheet

Beh, se vuoi una spiegazione fatta come si deve puoi andarti a leggere il mio articolo sul numero di Giugno di Elettronica In, l'argomento è trattato e sviscerato completamente, avrai modo di comprendere il significato e l'uso di ogni singolo bit e come impostarli; mi è costato un bel po' di studio, ma alla fine ne è uscito un gran bel lavoro (e non lo dico solo io ;)).

PS: sei nuovo ma non fai male a prendere abitudine del fatto che ogni nuovo Topic andrebbe creato nella specifica sezione hardware o software; qui nella sezione generale andrebbero aperti solo i Topic non inquadrabili nelle altre due; il tuo Topic è hardware o software a tuo piacimento, visto che la questione si può trattare come organizzazione del microcontrollore o come programmazione dei tre byte. :wink:

I fuse byte come dice il manuale sono da considerare programmati quando il bit è cleared, cioè "impostato" a 0, non programmati se il bit è impostato ad 1.

Fai attenzione con i fuse byte, questi sono programmabili da dentro il codice del micro, occhio che basta cambiare tempo di avvio del quarzo per rendere la board non funzionante e poi ti ci vuole il progetto di Menniti oppure devi fare come ho fatto io, che mi sono scritto codice al volo per sbrikkare il micro.

Ciao.

conermo la bonta' dell'articolo di giugno, il numero di luglio non e' ancora arrivato a casa, quindi credo che tu possa trovare quello di giugno in edicola, sono 6 euro spesi benissimo.

ti ho chiesto a quele ti riferivi visto che facevi l'esempio di soli 4 bit. se intendevi chiedere solo il significato di 0 e 1 e' come gia' detto da mauro, 0=attivo

MauroTec:
I fuse byte come dice il manuale sono da considerare programmati quando il bit è cleared, cioè "impostato" a 0, non programmati se il bit è impostato ad 1.

Fai attenzione con i fuse byte, questi sono programmabili da dentro il codice del micro, occhio che basta cambiare tempo di avvio del quarzo per rendere la board non funzionante e poi ti ci vuole il progetto di Menniti oppure devi fare come ho fatto io, che mi sono scritto codice al volo per sbrikkare il micro.

Ciao.

Scusatemi, vado leggermente OT ma la domanda potrebbe interessare anche l'autore del thread: l'articolo in questione parte da zero o presuppone conoscenze "avanzate" di qualche tipo? Eventualmente, quali? (e ovviamente citazioni per colmare eventuali lacune sono ben accette ;))

Diciamo che non vorrei che ora questo didentasse un Topic-Spot pro-Rivista $)
Ma visto che l'argomento è spesso non noto ai più direi che se ne possa parlare....
Sto scrivendo da settembre scorso una serie di articoli pubblicati nella sezione "Didattica", l'accordo prevede che i miei lavori siano sempre realizzati nell'ottica dell'insegnamento, quindi non posso (e nemmeno mi piacerebbe) dare nulla per scontato.
Ho progettato e presentato un Programmatore HV (ma qui non approfondiamo!), nei numeri di aprile e maggio ho presentato il progetto hardware e la realizzazione dello strumento, nel numero di giugno (quello in edicola) ho trattato (in circa 13 pagine) la teoria, con tanto di riferimento ai data-sheet studiati allo scopo, riguardante gli elementi programmabili o visualizzabili tramite lo strumento: fuse bits, Lock bit byte, signature, chip_erase; quindi ho spiegato cos'è la Programmazione HV nelle sue due forme, ed ho spiegato in modo molto esteso, l'organizzazione del firmware che gestisce lo strumento. Sul numero che dovrebbe uscire a breve (quello di luglio/agosto) ci sarà l'ultimo articolo con la spiegazione passo-passo di alcune routine "chiave" del firmware, sempre in rapporto alla teoria affrontata in precedenza ed ai data-sheet delle varie famiglie di micro ATMEL, ho poi spiegato come si usa il programmaFuseCalc per il calcolo dei fuse (e qui chiaramente l'argomento fuse è stato ripreso), infine ho spiegato come si usa il Programmatore, nelle sue due possibili forme: collegato al PC o in stand-alone con keypad esadecimale e display LCD.

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)