problemi nel programmare ATtiny84

er_like_no_other:
perchè se provo il blink a 1MHz dura un secondo giusto, mentre se lo provo a 8MHz dura 8 secondi? mi moltiplica tutto per 8? e se faccio la funzione pulseIn mi cabia anche quella?
grazie

Nella board virtuale hai scritto 8000000 alla voce clock?
Sei sicuro dei valori dei fuse?

eh non lo so di preciso perchè non l'ho fatto io... Leo72 mi pareva l'esperto qui, per questo chiedo...

er_like_no_other:
eh non lo so di preciso perchè non l'ho fatto io... Leo72 mi pareva l'esperto qui, per questo chiedo...

Leo E' l'esperto, su questo non ci piove.
Ti sto chiedendo, poiché il micro, come scritto nella Guida di Leo, nasce di fabbrica a 1MHz, cosa hai fatto perché tu ora sei sicuro di averlo impostato a 8MHz?

ho scelto come broad attiny84 a 8MHz e ho caricato il blink... Non ho capito cosa sono i fuse, dovevo modificare ache quelli?

er_like_no_other:
ho scelto come broad attiny84 a 8MHz e ho caricato il blink... Non ho capito cosa sono i fuse, dovevo modificare ache quelli?

Facendo come hai fatto, hai solo detto al compilatore che il micro va ad 8Mhz quando va in realtà 8 volte più lentamente, in questo modo i valori dei timer sono x8 da qui i tempi moltiplicati....
devi modificare i fuse per portarlo alla freq di 8Mhz , se guardi nel topic giocando con gli attiny 85 cè un mio post nelle ultime pagine in cui ho riassunto come fare... in windows...

Confermo quanto ha scritto ratto, se leggi attentamente la Guida di Leo questa cosa dei fuse è spiegata, sono le impostazioni del micro affinché svolga le funzioni che tu vuoi, tra queste anche il clock esterno o interno e quanto deve essere (se interno), se non li cambi il micro lavora sempre a 1MHz, usando la board col valore 8000000 hai solo variato il coefficiente per le funzioni temporali, ecco perché ora sembra 8 volte più lento.
La programmazione dei fuse la puoi fare con un programmatore AVR o da riga di comando, se hai linux segui le istruzioni di Leo, se hai Windows trova il Topic, che deve essera ancora in prima pagina, nelle ultime pagine c'è l'intervento a cui si riferisce ratto, con le "sue" istruzioni.
Attenzione con i fuse: se fai qualche fesseria rischi di brickare il micro e poi ti serve per forza un programmatore per recuperarlo.

così mi metti paura :slight_smile: comunque grazie domani se ho tempo provo e vi so dire :wink:

er_like_no_other:
così mi metti paura :slight_smile: comunque grazie domani se ho tempo provo e vi so dire :wink:

No, è solo per farti capire che non è una cosa "tanto per provare", lo stesso Leo (e anche io...) può dirtene qualcosa. In bocca al lupo! :slight_smile:

Dai, non ti preoccupare. Se metti i valori giusti, non puoi rovinare nulla :wink:
Cmq ti avevo già segnalato che dovevi riprogrammare i fuse del micro per avere gli 8 MHz. Puoi farlo con l'Arduino, se non hai altri programmatori. Basta seguire le istruzioni.

si si ma non avevo capito bene... potete mettermi il link perfavore? grazie :slight_smile:

er_like_no_other:
si si ma non avevo capito bene... potete mettermi il link perfavore? grazie :slight_smile:

la guida da cui hai tratto le info dovrebbe essere sufficiente, se cerchi il post di ratto cerca "giocando con gli attiny" e parti dall'ultima pagina a ritroso

ok ok il link della guida ce l'avevo già :slight_smile: non trovavo le istruzioni per portarlo a 8MHz nel topic che mi avevate suggerito... ma adesso l'ho trovato, grazie :slight_smile:

scusate ma non ho mai usato il terminale :blush:
qualcuno può gentilmente spiegarmi passo-passo come fare per portarlo a 8MHz usando un arduino come programmatore...
dovrei fare questo, giusto?

Se invece volete utilizzare l'Arduino UNO, dovete utilizzare avrdude distribuito insieme all'IDE di Arduino, che è una versione patchata di avrdude per riconoscere l'Arduino come programmatore ISP. Aprite quindi un terminale in /arduino-0022/hardware/tools e digitate il seguente comando:

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

Che va interpreta nel seguente modo:
parametro “-P”: specifica l'indirizzo del programmatore. Nel mio caso ho messo /dev/ttyACM0 ma dipende da sistema a sistema, potrebbe anche essere ad esempio /dev/ttyS0.
Parametro “-U”: indica su quale memoria del microcontrollore operare e che operazione deve essere eseguita. Nel nostro esempio “lfuse” indica il fuse basso (“low fuse”), “w” sta per scrittura (“write”), 0xe2 è il valore esadecimale da programmare, che disabilita il divisore x8 senza toccare le altre impostazioni di default del microcontrollore e “m” indica ad avrdude di usare direttamente il parametro (“m” per “immediate”). Se volete giocare con gli altri parametri dei fuse, potete usare l'utile Calcolatore online di fuse.
Parametro “-p”: indica il tipo di microcontrollore, nel nostro esempio “t85” sta per ATtiny 85.
Parametro “-c”: indica il programmatore da usare, in questo caso “usbtiny” sta per USBtinyISP.
Parametro "-C": indica un file di configurazione dei micro da usare per la programmazione
Parametro: "-b": indica la velocità di comunicazione in baud

//preso dalla guida http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85

grazie :wink:

E cosa vuoi sapere di più? Ci sono già tutti i passaggi lì :wink:
Devi solo mettere (come già detto......) t84 al posto di t85 per scegliere il Tiny84.

si la spiegazione è molto chiara:)
il mio problema è che non sono pratico del terminale :blush: e non ho capito cosa si intende con "Aprite quindi un terminale in /arduino-0022/hardware/tools"
grazie

Ma che SO usi?
Win o Linux?

se hai Linux, apri la cartella che ho specificato (che è contenuta nella cartella dove hai scompattato l'IDE), poi apri un terminale in quella cartella ed inserisci il menu.

Per aprire una cartella in una specifica finestra, se hai KDE4 basta premere F4, se hai Gnome2/3 basta cliccare col destro e scegliere "Apri terminale qui" (devi avere il pacchetto nautilus-open-terminal installato).

Poi, via... un po' di iniziativa, dai :wink:

Stai lavorando con windows o linux ??? se il secondo... strano tu non sappia cos'è un terminale :stuck_out_tongue:

eheh ho win...

Non so se 7 o vista siano uguali perchè lavoro su xp ma....
trova prompt dei comandi ed aprilo....
poi: (scrivi passo passo quello che cè scritto, avevo detto che avevo fatto un riassuntino :))
1°passaggio sempre da terminale....

 avrdude -p ATtiny84 -c stk500v1 -b 19200 -P COM10 -v

2°passaggio

 -p ATtiny84 -c stk500v1 -b 19200 -P COM10 -U hfuse:w:0xDE:m

3° Passo:

"H:\arduino-0022\hardware\tools\avr\bin\avrdude.exe" -p t84 -c avrisp -P \\.\COM10 -b 19200 -U lfuse:w:0xE2:m  -C "H:\arduino-0022\hardware\tools\avr\etc\avrdude.conf"

La COM devi mettere la tua ovviamente... il tutto da dentro al prompt dei comandi