Come utilizzare Arduino ISP per caricare un firmware su un ATtiny85

La piattaforma Arduino, come sappiamo, offre molte possibilità, una tra tante è la programmazione dei piccoli microcontrollori ATtiny85, utilizzando un set di istruzioni ridotto, ma compatibile con quelle per programmare la Arduino UNO. La procedura per caricare uno sketch su questi dispositivi è quella usate per l’ATMEGA328 stand alone.

Pin function Attiny85

Questa procedura è utile perché l’ATtiny85, essendo molto piccolo, trova impiego nei progetti dove le dimensioni sono un requisito fondamentale. Naturalmente essendo piccoletto, le sue caratteristiche hardware sono limitate, ma pur sempre interessanti. Ecco riassunte le specifiche principali:

Program Memory8 Kbyte
EEPROM512 Byte
SRAM512 Byte
Frequenza di lavoro1MHz – 8MHz – 16MHz
ADC4 Canali
Protocollo SerialeSPI

una peculiarità di questi microcontrollori è che per funzionare non necessitano del classico circuito risuonatore (quarzo + condensatori) ma possono utilizzare un generatore di clock interno.

Le istruzioni compatibili con l’Attiny sono le seguenti:

Il primo passo riguarda la configurazione dell’ambiente di sviluppo poiché non è possibile programmare nativamente questi chip. Seguiamo questo indirizzo per scaricare i relativi file di configurazione . Attualmente il pacchetto più recente è l’arduino-tiny-0100-0012.zip rilasciato il 27 Febbraio 2012.
Nella cartella degli sketchbook  (File ->  Preferences -> Sketchbook location) creo una directory di nome Hardware e dopo il download scompatto il file zip e copio le cartelle tiny e tools all’interno di questa cartella

Arduino sketchbook location

Avviamo l’IDE e controlliamo nella lista delle Board la presenza dei chip ATtiny

Lista processori attiny

Per quanto riguarda l’IDE non è possibile, attualmente, utilizzare Arduino 1.0 poiché lo sketch Arduino ISP non è compatibile con questa versione dell’ambiente di sviluppo. Nel mio caso ho usato la precedente versione, la 0023, che non mi ha mai dato problemi neanche per caricare il bootloader sugli ATmega328.

I collegamenti da effettuare per programmare il piccolo chip sono rappresentati in figura:

Programmatore ATtiny85 Attiny45

La tabella di connessione è la seguente

PIN11  di Arduino UNO  collegato al PIN5 dell’ATtiny85 (MOSI)
PIN12 di Arduino UNO  collegato al PIN6 dell’ATtiny85 (MISO)
PIN13 di Arduino UNO  collegato al PIN7 dell’ATtiny85 (SCK)
PIN10 di Arduino UNO collegato al PIN1 dell’ATtiny85 (RESET)
+5Vdc di Arduino UNO collegato al PIN8 dell’ATtiny85 (VCC)
GNG di Arduino UNO collegato al PIN4 dell’ATtiny85 (GND)

Avviamo l’IDE 0023 e carichiamo lo sketch Arduino ISP. Selezioniamo la board Arduino UNO, la relativa porta seriale e carichiamo il programma sulla board.

Ora eseguiamo i collegamenti per programmare il chip ATtiny85, come visto precedentemente.

Scriviamo il classico sketch che permette di far lampeggiare un led

[c]
void setup()
{
//PIN0 in output
//il PIN0 corrisponde al PIN5 dell’ATtiny85
//vedi lo schema
pinMode(0, OUTPUT);
}

void loop()
{
//led on-off ogni mezzo secondo
delay(500);
digitalWrite(0, HIGH);
delay(500);
digitalWrite(0, LOW);
}
[/c]

Clicchiamo sul pulsante upload per caricare lo sketch sull’ATtiny85. I led TX e RX della board Arduino UNO inizieranno a lampeggiare indicando il trasferimento del firmware sull’ATtiny85. Dopo qualche istante, se non si verificano problemi tipici di autoreset (superabili utilizzando il classico condensatore da porre tra il GND e il pin /Reset) sulla finestra dell’IDE dovrebbe apparire la conferma di Done uploading, con i seguenti warning:

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85

che possiamo tralasciare, perchè non compromettono la procedura.

Colleghiamo il led con una resistenza per verificare che tutto sia stato eseguito correttamente

ATtiny85

La programmazione di questi chip è tutto sommato semplice e veloce, spero che col tempo il team di Arduino inserisca nativamente il supporto a questi dispositivi e che aggiungano ulteriori funzioni.