Giocando con l'Attiny85

Scusate la domanda banale, dove ordinate Attiny85? Non lo trovo. O sbaglio nome per cercarlo? (ho usato Attiny85). Vorrei iniziare a giocarci anche io XD

Gioblu li aveva ad un prezzo molto conveniente: al momento non sono disponibili, chissà se gli arrivano a breve.

Oppure da RS:

Da RS sono un po' cari.

Grazie 1000, continuo a seguirvi da dietro le quinte... XD

Stavo leggendo la guida di LEONARDOMILIANI.com e non mi è chiara una cosa:
all'inizio si parla di aggiustare i fuse:

Per far ciò è necessario usare un programmatore ISP esterno: io ho utilizzato con
successo l'USBtinyISP di Adafruit ma qualsiasi altro programmatore supportato da
avrdure va più che bene.

Questa programmazione iniziale la posso fare in qualche modo usando arduino uno? Tipo usando il connettore ISP e/o componenti vari? O serve per forza un programmatore esterno?
Vorrei arrivare a delegare all' ATtiny85 il compito di gestire il display 16x2 che ho, riducendo i pin dell'arduino uno impegnati a quelli necessari per la sola trasmissione seriale. :fearful:

La guida l'ho scritta io.
Quell'affermazione si riferisce al voler impostare il micro ad 8 MHz. Di fabbrica arrivano a 1 MHz, se questa frequenza è sufficiente per i tuoi progetti non devi toccare nulla.

Detto questo, preciso anche con un "aggiornamento" che l'operazione si può fare anche con un Arduino usato come programmatore ISP con lo sketch ArduinoISP.

Arriviamo ora al tuo display. Se è un display parallelo, difficilmente riuscirai a gestirlo con l'Attiny85 perché un display compatibile HD44780 necessita di almeno 6 fili, a cui devi sommare 2 fili per la connessione I2C. Arrivi quindi ad 8.
Ma con l'Attiny85 non ce la fai: hai 8 pin, da cui devi togliere i 2 pin dell'alimentazione, il pin di reset, i 2 pin per l'I2C ed arrivi ad avere solo 3 pin liberi.
Io per gestire un LCD ho usato un Attiny84: ha 14 piedini, di cui 11 disponibili come I/O.

Grazie, mi sta insegnando molto la tua guida. XD

Quindi, a prescindere dall'uso, posso usare l'Uno per portare l'ATtiny85 ad 8 MHz, seguendo le istruzioni della guida. Giusto?

Per il display in effetti è come dici tu un parallelo, preso da robotitaly per giocarci su. Allora serve l'84, la mia domanda è: vale lo stesso quanto scritto sull'85 per i MHz o essendo diverso cambiano anche i parametri? Oppure lo uso com'è e lo programmo tramite Arduino Uno ?

Chiarito cosa serve, il prossimo passo è capire come programmarlo per la gestione del display, che vorrei mostrasse (per adesso) i valori letti dai sensori ultrasuoni e IR del mio robottino arduino.
Ma questo sarà appunto il prossimo passo (sono autodidatta... :blush:).

MatteoG:
Grazie, mi sta insegnando molto la tua guida. XD

Qui trovi la versione aggiornata:

Ci sono anche le novità su come usare l'Arduino come programmatore per i fuse.

Quindi, a prescindere dall'uso, posso usare l'Uno per portare l'ATtiny85 ad 8 MHz, seguendo le istruzioni della guida. Giusto?

Per il display in effetti è come dici tu un parallelo, preso da robotitaly per giocarci su. Allora serve l'84, la mia domanda è: vale lo stesso quanto scritto sull'85 per i MHz o essendo diverso cambiano anche i parametri? Oppure lo uso com'è e lo programmo tramite Arduino Uno ?

Valgono le stesse, identiche cose. Devi solo cambiare il tipo di micro nei parametri di avrdude, da "-p t85" a "-p t84".

Chiarito cosa serve, il prossimo passo è capire come programmarlo per la gestione del display, che vorrei mostrasse (per adesso) i valori letti dai sensori ultrasuoni e IR del mio robottino arduino.
Ma questo sarà appunto il prossimo passo (sono autodidatta... :blush:).

Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.

Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.

L'idea era (primaditutto limitata non conoscendo le varie possibilità) quella di vedere le letture senza dover essere collegato al pc. Adesso che mi hai messo la pulce nell'orecchio...
Può il tiny occuparsi (cosa che fa l'arduino uno adesso) tramite la libreria ultrasonic di rilevare la distanza e mandarla all'arduino uno per i calcoli vari e al display per la visualizzazione?
Può in alternativa gestire il compound eye e relativi movimenti dei servi?
Può in alternativa gestire tramite l' LM239D i motori dc?

Dico in alternativa perchè non so quantificare la potenza di calcolo/velocità che ho a disposizione, se facesse tutto meglio...
Mi rendo conto che ad ogni domanda cambia l'architettura del progettino ma è tutto in continua evoluzione, anzi se avete altri suggerimenti o link ben vengano.
Al momento il robottino con la sua LIPO è autonomo e funziona "benino" (vedi video anche se mal fatto http://arduino.cc/forum/index.php/topic,76264.0.html). Adesso cerco di imparare sviluppandolo / migliorandolo / ottimizzandolo etc...

MatteoG:

Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.

L'idea era (primaditutto limitata non conoscendo le varie possibilità) quella di vedere le letture senza dover essere collegato al pc. Adesso che mi hai messo la pulce nell'orecchio...
Può il tiny occuparsi (cosa che fa l'arduino uno adesso) tramite la libreria ultrasonic di rilevare la distanza e mandarla all'arduino uno per i calcoli vari e al display per la visualizzazione?
Può in alternativa gestire il compound eye e relativi movimenti dei servi?
Può in alternativa gestire tramite l' LM239D i motori dc?

Dico in alternativa perchè non so quantificare la potenza di calcolo/velocità che ho a disposizione, se facesse tutto meglio...
Mi rendo conto che ad ogni domanda cambia l'architettura del progettino ma è tutto in continua evoluzione, anzi se avete altri suggerimenti o link ben vengano.
Al momento il robottino con la sua LIPO è autonomo e funziona "benino" (vedi video anche se mal fatto http://arduino.cc/forum/index.php/topic,76264.0.html). Adesso cerco di imparare sviluppandolo / migliorandolo / ottimizzandolo etc...

ma a questo punto se devi fare tutte quelle cose usa un atmega328 in standalone! in pratica è il microcontrollore dell'arduino che una volta finito il progetto lo usi da solo e risparmi l'arduino...

Si si è vero che c'è anche questa possibilità però non mi bastano i pin con 1 328 solo...

Prima devi capire se la libreria è compatibile con il Tiny84.
Devi cioè verificare che non usi pin inesistenti sul Tiny, interrupt/timer non presenti, che riesca a starci nella memoria ma, soprattutto, che funzioni.

No, prima devo capire ancora come funziona una libreria e come si modifica... :frowning:
Così sto facendo il passo più lungo della mia gamba, mi mancano troppe nozioni ancora per continuare.

@Leo72
ho trovato gli ATtiny 84 e 85 in 2 versioni: a 10 MHz o 20 MHz. Credo di capire che per andare a 20 ( o 10) ho bisogno di componenti aggiuntivi (quarzo etc) , ma li posso usare anche così senza niente (magari a velocità ridotta)? Oppure devo prendere solo i max 10 MHz come da guida? :~

Prendi quelli da 20 MHz. Anche questi possono andare a 1 o 8 MHz senza componenti aggiuntivi. Se poi hai bisogno di maggior potenza, basta aggiungere un quarzo esterno.

Ok,grazie, sempre gentile.

Faccio riemergere questo topic cercando come al solito aiuto. Vorrei fare delle prove di trasmissione RF con gli ATtiny85 e in questa discussione Arduino Forum ho visto che modificando opportunamente la libreria VirtualWire è possibile farlo. Questo comporta il fatto di impostare i fuses per usare il micro con quarzo esterno 16MHz. Ho provato a ricavarmeli con fuse calc AVR® Fuse Calculator – The Engbedded Blog ma i valori che trovo sono diversi da quelli contenuti nella board.txt creata dal tipo del link. E' sufficiente che li setto come nella boards.txt e cioè low_fuses=0xFF, high_fuses=0xD7, extended_fuses=0xFF? Mi appello alla vostra saggezza..
Grazie.

E' sufficiente che li setto come nella boards.txt e cioè low_fuses=0xFF, high_fuses=0xD7, extended_fuses=0xFF

Sì, questi vanno bene. Puoi usare per il fuse Alto anche il valore $DF, che a differenza di $D7 non preserva il contenuto della EEPROM durante la flashatura del micro.

Per il fuse Esteso, prova con $FF oppure con il suo complementare $01. Il fuse esteso è un po' particolare, alcuni micro accettano il valore diretto (ossia 0 per 0 e 1 per 1) dei bit oppure il valore inverso (ossia 0 per impostare 1 e viceversa), dipende dal micro. Se programmando i fuse vedi che ti restituisce l'errore, prova l'altro valore.