Prendiamo in considerazione L'atmega8, questo ha due byte fuse, divisi in fuse low byte e high byte, dal datasheet si vede che questi due byte sono inizializzati di default dal produttore, quindi comprando un atmega vergine il valore del fuse basso è il seguente:
Tabella 88 pag 224.
Low byte default value = 1 1 1 0 0 0 0 1 (0xE1)
Guardando la tabbella si deduce che i bit meno significativo è posto in fondo la tabbella in questo caso è il fuse bit chiamato CKSEL0, poco più su c'è CKSEL1 e così via fino a CKSEL3, questi li possiamo considerare un nible, cioè mezzo byte.
Il programma avrdude vuole il valore dei fuse in esadecimale, fusecalc (AVR® Fuse Calculator – The Engbedded Blog) mostra il valore di default per la mcu scelta, ed in fondo è possibile vedere la riga di comando di avrdude, -U lfuse:w:0xe1:m -U hfuse:w:0xd9:m.
Non ho indagato sul sugnificato di :w: e :m, ma per il resto si capisce che il lfuse (low byte) è proprio 0xe1 e 0xd9 per high byte.
Ogni bit deve essere considerato programmato se il suo valore è 0 (low, false) e non programmato se il suo valore è 1 (high, true).
Chi volesse provare a calcolare da se i fuse trovi il modo di usare la calcolatrice gcalctool presente in gnome pigiando Ctrl+P, viene visualizzata una calcolatrice dove è possibile fare operazioni con i bit.
Prima che mi diciate "e allore, che devi fare?", rispondo che non ho necessità di programmare i fuse, ma dovevo solo capire come funzionano i fuse ed avrdude per realizzare un GUI simile ad fusecalc, con tanto di tooltip che descrive ogni fuse.
Tutta sta tiritera perchè ho avuto modo di studiare il file xml di atmel che BrainBooster mi ha spedito.
Su http://www.gioblu.com/home nella sezione repositor c'è un progetto di una GUI per avrdude la quale dovra leggere un file xml e con il contenuto di questa popolerà i widget.
La gui è disegnata con QtDesigner ed è ancora da definire, modificare aggiungere secondo le funzionalità richieste anche considerando la semplicità d'uso. Chi fosse interessato a collaborare può contattarmi in PM, rispondere a questo topic. La collaborazione può anche consistere nel:
- io farei così, colì.
- quel widget mettiamolo in basso.
- ho modificato la gui con QtDesigner che ne pensi.
Le modifiche non sono volte a rendere più bella la gui ma solo per definire le funzionalità, es manca un widget con il quale selezionare il programmatore.
Definita la gui con tutti i widget disposti, si completano le funzionalità scrivendo codice C++, ma la gui può anche essere usata con tutti i linguaggi per i quali sia disponibile un binging per Qt, es Python, Ruby, Java, javascript, e chi più nè ha ne metta.
Grazie per l'attenzione.
Ciao