ATtiny85 a 16mhz con High Frequency PLL Clock

rattuccio, ma sta dicendo che NON ha problemi con i servi :D

Appunto per quello sono :zipper_mouth_face:

Prompt dei comandi -> avrdude e poi procedi da riga di comando..

gozilla: Dovrei fare la stessa cosa ma con windows 7 , purtroppo su linux non riesco a programmare il tiny, ho la versione ubuntu 11.10 e non va proprio.

Potresti provare con queste 2 modifiche: http://arduino.cc/forum/index.php/topic,76138.msg691033.html#msg691033

Io non le ho ancora testate perché ho messo Kubuntu 11.04 e per ora non aggiorno.

Nella cartella dell'ide 0022 per windows non trovo avrdude (hardaware tools c'è ma non avrdude come comando) COme faccio grazie.

Strano, deve esserci per forza altrimenti come fai a fare l'upload degli sketch, non trovi? ;) Mi sono scaricato più di 80 MB di roba per vedere dov'era... E' in hardware/tools/avr/bin :P

Ciao a tutti. Riprendo questo topic perchè vorrei mandare l'attiny85 a 16Mhz. Da quello che leggo non c'è bisogno del quarzo esterno? O non ci ho capito nulla?

Se invece per pure caso avessi capito potreste spiegarmi come farlo con il software arduino?

Grazie

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

leo72: 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:

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

che [u]dovete[/u] 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

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

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.

Ottimo

Ho eseguito il comando e sembra essere andato tutto bene:

 ./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:

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?

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 :sweat_smile:

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

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

leo72: ... 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 :sweat_smile:

Io la voce non l'avevo mi dici dive scaricare questo core?

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/

Scaricato. Appena posso provo.

Scusa Leo non mi hai risposto niente sulla programmazione a 16Mhz.

erpomata: 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? :sweat_smile: L'hai programmato? Ci sei riuscito? Funziona tutto con i tempi giusti?

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

erpomata: 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....

:blush: ops chiedo venia non l'ho fatto a posta,e sicuramente, non rientra nel mio modo di fare il non ringraziare chi mi aiuta.

Come puoi vedere dai miei diversi post: http://arduino.cc/forum/index.php/topic,126882.msg954739.html#msg954739 http://arduino.cc/forum/index.php/topic,126172.msg948602.html#msg948602 http://arduino.cc/forum/index.php/topic,126172.msg949582.html#msg949582 http://arduino.cc/forum/index.php/topic,126172.msg949552.html#msg949552 http://arduino.cc/forum/index.php/topic,126172.msg950138.html#msg950138 http://arduino.cc/forum/index.php/topic,126172.msg952608.html#msg952608

l'ho sempre fatto.

Quindi vedo di rimediare mandanti un enorme GRAZIE MILLE per tutto.

Scusa :disappointed_relieved:

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.