problemi nel programmare ATtiny84

oggi mi sono arrivati gli ATtiny84 e adesso stavo provando a programmarli seguendo questa guida: Gioblu.com is for sale | HugeDomains, qui parlano solo di ATtiny85 ma dovrebbe essere lo stesso no?
come circuito ho collegato il pin 10 dell'arduino al 4 del tiny (reset), il pin 11 al 7 del tiny (mosi), il 12 al 8 (miso), il 13 al 9 (sck), poi ho messo tra reset e vcc un resistenza da 120 ohm e poi l'alimentazione vcc e gnd sul tiny... è giusto no?
poi per il resto ho seguito la guida ma mi da errore quando vado a caricare un programma e non lo carica. cosa può essere? cosa posso aver sbagliato?

Devi mettere una R di pull-up sul pin reset dell'Attiny da 10K. Non è indispensabile per la programmazione ma serve.

Hai messo il core Tiny nell'IDE? Hai selezionato Attiny84 a 1 MHz? I chip Tiny "vergini che escono di fabbrica vanno a 1 MHz.
Che errore ti da l'IDE?

cosa intendi con mettere il core Tiny nell'IDE? e si avevo messo a 1MHz...
l'errore che mi da è questo:

java.lang.NullPointerException
	at processing.app.debug.AvrdudeUploader.getProgrammerCommands(AvrdudeUploader.java:106)
	at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:68)
	at processing.app.Sketch.upload(Sketch.java:1603)
	at processing.app.Sketch.exportApplet(Sketch.java:1568)
	at processing.app.Sketch.exportApplet(Sketch.java:1524)
	at processing.app.Editor$DefaultExportHandler.run(Editor.java:2293)
	at java.lang.Thread.run(Thread.java:619)

er_like_no_other:
cosa intendi con mettere il core Tiny nell'IDE? e si avevo messo a 1MHz...
l'errore che mi da è questo:

java.lang.NullPointerException
at processing.app.debug.AvrdudeUploader.getProgrammerCommands(AvrdudeUploader.java:106)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:68)
at processing.app.Sketch.upload(Sketch.java:1603)
at processing.app.Sketch.exportApplet(Sketch.java:1568)
at processing.app.Sketch.exportApplet(Sketch.java:1524)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2293)
at java.lang.Thread.run(Thread.java:619)


E' lo stesso errore che ho io nel programmare gli 85 col TinyCore piuttosto che con quello di saporetti...
non l'ho ancora risolto...

Se hai letto la mia guida avrai trovato ad un certo punto il link per scaricare delle librerie da questo sito:
http://code.google.com/p/arduino-tiny/

Quello è il core di cui ti parlavo, senza di esso l'IDE non compila nulla. Ma se hai i nuovi micro nel menu Tools/Board allora lo hai di già.

Ma l'errore te lo dà in compilazione o in upload?

l'errore me lo da in upload...
io avevo scaricato da qui Google Code Archive - Long-term storage for Google Code Project Hosting. come suggerito nella guida

Sì, va bene.
Quindi c'è qualcosa che non va in upload.

EDIT:
Czz... una cosa importante che mi aveva fatto notare qualche giorno fa un altro utente!
Bisogna editare il file boards.txt contenuto nella cartella /tiny e scegliere un programmatore!!!!

Ogni voce del file che contiene .upload.using=..... devi modificarla così:

xxxxxxxxx.upload.using=arduino:arduinoisp

Altrimenti è scontato che non riesca a far el'upload! :frowning:
Secondo me è questo!
Ora aggiorno la guida.

ok adesso riesce a fare l'upload! :slight_smile: grazie
ancora 2 domande come sono numerati i pin per metterli nel programma?
e per usarlo a 8 o 16 MHz basta scegliere l'opzione 8 o 16 oppure devo programmarli con l'apposito programmatore?
grazie! :slight_smile:

er_like_no_other:
ok adesso riesce a fare l'upload! :slight_smile: grazie

Bene!

ancora 2 domande come sono numerati i pin per metterli nel programma?

Fai riferimento al file che ti ho citato, il pins_arduino.c. Nei commenti trovi la mappatura dei pin analogici e digitali rispetto ai piedini del micro.

e per usarlo a 8 o 16 MHz basta scegliere l'opzione 8 o 16 oppure devo programmarli con l'apposito programmatore?
grazie! :slight_smile:

Per mandarlo ad 8 o 16 MHz devi modificare i fuse.
Per gli 8 MHz puoi usare sempre l'oscillatore interno. Nella guida che hai letto c'è come impostare ad 8 MHz il Tiny85 usando l'Arduino come programmatore. Funziona anche con i Tiny84, basta cambiare il tipo di micro da t85 a t84. I fuse sono gli stessi.

Per i 16 MHz serve invece un quarzo esterno e 2 C.

ok grazie!! :slight_smile:

scusa un'ultima domanda... l'ATtiny va a 8bit, quindi cambia qualcosa nel numero massimo che posso dare a una variabile int? o no?
grazie

Quanto pensi sia l'architettura dell'Atmega328? :wink:
Sono sempre 8 bit: rispetto al 328 non cambia nulla.

byte=8 bit/1 byte
int=16 bit/2 byte
long=32 bit/4 byte

ah ok ok si è vero sono uguali... non so perchè mi è venuto questo dubbio :slight_smile:
comunque grazie ancora :wink:

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

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.