Go Down

Topic: ATtiny85 a 16mhz con High Frequency PLL Clock (Read 5 times) previous topic - next topic

leo72

Basta programmare un fuse del microcontrollore. Ti riquoto questo mio vecchio post:

Secondo il datasheet bisogna programmare il fuse CKSEL su $0001 e poi impostare il bit PLLE del registro PLLCSR ad 1. Ma a me va senza quest'ultima impostazione. Boh... comunque basta programmare il fuse basso dell'Attiny con questo comando:

Code: [Select]
./avrdude -P /dev/ttyACM0 -C ./avrdude.conf -U lfuse:w:0xf1:m -p t85 -c stk500v1 -b 19200

che dovete dare dalla cartella /arduino-0022/hardware/tools in modo da usare avrdude distribuito con l'IDE, che può vedere l'Arduino come programmatore ISP.

Il fuse basso così settato ($F1) imposta il PLL interno e disattiva il divisore 8x sul clock dell'oscillatore, per cui: 8 MHz * 8 = 64 MHz / 4 (il divisore 1/4 interno) = 16 MHz finali

Se caricate il Blink usando il profilo modificato per un Attiny85@8 MHz vedrete il led lampeggiare al doppio della velocità.


Ovviamente si usa ora la cartella arduino-1.0.1

erpomata

Ok quella risposta è ancora valida  :)
Quindi non devo caricare il bootloader a 8Mhz come spiegato qui "Configuring the ATtiny to run at 8 MHz (for SoftwareSerial support)"

Ma lanciare quel comando.
Non dovrei farmi una board virtuale per i 16MHz
http://www.paologiammarco.it
http://www.valentinamagni.it

leo72

1) Per modificare i fuse basta agire da terminale usando avrdude. L'uso del bootloader è inutile se sai muoverti sul terminale. Tieni poi a mente che il bootloader per i Tiny è "finto" nel senso che è un file vuoto, serve solo per poter modificare i fuse ma, almeno con con la 0022, non funzionava neanche come procedura. Non so se con la 1.x adesso va. Io però cambio i fuse da terminale per abitudine, quindi non so dirti.

2) è ovvio che poi devi crearti una board virtuale con Attiny85 a 16 MHz per poter compilare del codice con le giuste tempistiche, altrimenti hai tempi di esecuzione sfalsati. Basta che prendi quella per il Tiny a 1 o a 8 MHz e poi cambi la voce relativa al clock.

erpomata

http://www.paologiammarco.it
http://www.valentinamagni.it

erpomata

Ho eseguito il comando e sembra essere andato tutto bene:

Code: [Select]
./avrdude -P /dev/ttyACM0 -C ./avrdude.conf -U lfuse:w:0xf1:m -p t85 -c stk500v1 -b 19200

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.06s

avrdude: Device signature = 0x1e930b
avrdude: reading input file "0xf1"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.06s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xf1:
avrdude: load data lfuse data from input file 0xf1:
avrdude: input file 0xf1 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


Poi ho creato la board virtuale:

Code: [Select]
attiny85-16.name=ATtiny85 (internal 16 MHz clock)
attiny85-16.bootloader.low_fuses=0xf1
attiny85-16.bootloader.high_fuses=0xdf
attiny85-16.bootloader.extended_fuses=0xff
attiny85-16.upload.maximum_size=8192
attiny85-16.build.mcu=attiny85
attiny85-16.build.f_cpu=16000000L
attiny85-16.build.core=arduino:arduino
attiny85-16.build.variant=tiny8


Ho fatto bene?
http://www.paologiammarco.it
http://www.valentinamagni.it

leo72

Non mi torna quel "variant:tiny8" che hai messo in fondo.

Ma lo hai scaricato il core Tiny? La nuova voce la devi ovviamente mettere nel file boards.txt che trovi in /hardware/tiny, non in /hardware/arduino.

EDIT:
ho controllato ora il file boards.txt che è fornito con il core Tiny. Esso contiene già la voce per poter compilare per un Attiny85 a 16 MHz col PLL interno. Non me ne ero accorto perché normalmente tolgo le voci che non mi servono per ridurre il numero di board presenti nel menu a tendina  :smiley-sweat:

Quindi, ricapitolando. Ti scarichi il core Tiny e con quello sei già pronto a compilare a 16 MHz.

erpomata

Il variant:tiny8 l'ho trovato nella definizione per l'attiny85 a 8Mhz scaricata da qui: http://hlt.media.mit.edu/?p=1695


...
ho controllato ora il file boards.txt che è fornito con il core Tiny. Esso contiene già la voce per poter compilare per un Attiny85 a 16 MHz col PLL interno. Non me ne ero accorto perché normalmente tolgo le voci che non mi servono per ridurre il numero di board presenti nel menu a tendina  :smiley-sweat:


Io la voce non l'avevo mi dici dive scaricare questo core?
http://www.paologiammarco.it
http://www.valentinamagni.it

leo72

Il core Tiny è il core di riferimento quando si parla di programmazione di Attiny25/45/85, Attiny24/44/84 e Attiny2313/4313.
Lo puoi scaricare da qui:
http://code.google.com/p/arduino-tiny/


erpomata

http://www.paologiammarco.it
http://www.valentinamagni.it

erpomata

http://www.paologiammarco.it
http://www.valentinamagni.it

leo72


Scusa Leo non mi hai risposto niente sulla programmazione a 16Mhz.
http://arduino.cc/forum/index.php/topic,73754.msg954729.html#msg954729

Che ti dovevo rispondere?  :smiley-sweat:
L'hai programmato? Ci sei riuscito? Funziona tutto con i tempi giusti?

erpomata

Bè potevi rispondermi si o no dopo aver letto il log che ho postato.
Per il resto il blibk sembra blinkare correttamente ricompilato a 16Mhz
http://www.paologiammarco.it
http://www.valentinamagni.it

leo72


Bè potevi rispondermi si o no dopo aver letto il log che ho postato.

Uh... pignolo...
Facciamo così, quando mi ringrazi per tutti gli aiuti che ti ho dato, allora ti rispondo anch'io....

erpomata

http://www.paologiammarco.it
http://www.valentinamagni.it

leo72

Guarda che la mia era una battuta  :P

Tornando alla domanda, era implicito che avessi fatto bene, d'altronde te lo aveva confermato anche avrdude che tutto era andato per il verso giusto  :D
Ti avevo però posto una domanda a cui non mi hai risposto (variant:tiny8) ma poi ho capito che quella voce doveva essere dovuta all'uso del core di David Mellis al posto del core Tiny.

Go Up