Programmare Attiny85 stand-alone con Arduino

settembre 7th, 2016 | Posted by Marco Plessi in Elettronica | Informatica | Visite: 3.756

Programmare i microcontrollori della serie Attiny (Atmel) utilizzando Arduino come programmatore, con l’IDE 1.6
Impostare i Fuse per utilizzare il pin di Reset come I/O.

Attiny85 è un microcontrollore piccolo ed economico, che risulta molto utile in caso di elettronica di piccole dimensioni.
Ha caratteristiche hardware abbastanza limitate rispetto ai suoi “parenti” più potenti, come il notissimo Atmega328, ma ha soli 8 pin, costa molto meno e ha un consumo di corrente ridotto, inoltre supporta il funzionamento senza quarzo esterno, impostabile comodamente dalla IDE.

attiny85

Caratteristiche Attiny85:
Flash: 1KB;
EEPROM: 512 byte;
SRAM: 512 byte;
Frequenza clock: 1; 8; 16 MHz;
PWM: 2;
ADC: 4;
Comunicazione: SPI.

Pinout:

ATtiny45-85

Il pin 1 ha la funzione di reset, quindi non è normalmente utilizzabile come I/O. Però settando opportunamente i fuse di configurazione si può utilizzare anche questo pin come ingresso o uscita (vedi più avanti). Tra parentesi quadre a fianco ai pin c’è la denominazione da utilizzare nell’IDE per la programmazione.

Esiste anche l’Attiny84, che è la versione con più I/O dell’Attiny85 (ma non verrà utilizzato nell’articolo):
ATtiny44-84

Installazione del pacchetto Attiny per l’IDE di Arduino

Per poter programmare questi microcontrollori, bisogna installare nell’IDE di Arduino il pacchetto necessario.
Per fare ciò, aprire l’IDE di Arduino e visualizzare la finestra delle impostazione, cliccando su “File>Impostazioni”:
attiny85_ide_1

Quindi aprire la finestra delle “URL aggiuntive per il Gestore Schede”:
attiny85_ide_2

Nella finestra che verrà visualizzata, incollare il seguente indirizzo:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Quindi premere [OK] per salvare e [OK] per chiudere la finestra delle impostazioni.

Adesso bisogna installare il pacchetto dall’indirizzo appena inserito. Per fare ciò, aprire il gestore schede da “Strumenti>Scheda>Gestore schede…”:
attiny85_ide_4

Dalla finestra del Gestore schede che si è aperta, scorrere la lista fino in fondo, e selezionare “attiny by David A . Mellis”, quindi cliccare sul pulsante [Installa]:
attiny85_ide_5

Dopo l’installazione, è possibile selezionare l’Attiny85 dal menu di selezione schede:
attiny85_ide_6

Selezionando uno dei due nuovi microcontrollori installati, compariranno altri due sottomenu del menu strumenti: “Processore” e “Clock”:
attiny85_ide_7

Dal menu “Processore” si può selezionare quale modello della serie viene utilizzato (nel nostro caso Attiny85);
Dal menu “Clock” si può selezionare quale sorgente di clock e con quale frequenza utilizzare per il micro (nel nostro caso 8MHz con oscillatore interno).

A questo punto si può scrivere il software da scaricare nel micro, tenendo in considerazione il pinout sopra per la denominazione degli I/O.
Consiglio: lasciate libero il pin di reset se non avete necessità di usare tutti i 6 pin di I/O. Se lo utilizzate, bisogna impostare i fuse, altrimenti il pin non funziona.

Preparazione dell’hardware necessario

Per la programmazione dell’Attiny85, è necessario un programmatore qualsiasi per microcontrollori AVR, o anche una scheda Arduino UNO.
Qui verrà utilizzata una scheda Arduino UNO come programmatore.
Aprire l’IDE di Arduino e selezionare come target “Arduino UNO”, quindi aprire il software “ArduinoISP” presente negli esempi. Caricare il software su Arduino.

Quando il caricamento è stato effettuato, si può reimpostare sull’IDE l’Attiny85 come target, ma, molto importante, bisogna cambiare l’impostazione del programmatore utilizzato, per far “sapere” all’IDE che stiamo usando un Arduino come programmatore. Per fare ciò, aprire il menu “Strumenti>Programmatore” e cliccare su “Arduino as ISP”.

Quindi bisogna realizzare un semplice circuito su breadboard:
arduino_attiny_programmazione

Il condensatore da 10uF serve ad evitare il reset di Arduino, che deve rimanere sempre attivo in quanto ha il compito di programmare l’Attiny85.

Quando il circuito è pronto, si può caricare il software sull’Attiny, premendo il pulsante apposito nell’IDE.

Il caricamento dovrebbe andare a buon fine, se così non fosse, controllare attentamente i collegamenti e le impostazioni sull’IDE.

Impostazione dei FUSE

Potrebbe essere necessario impostare i fuse per alcuni motivi, che posso essere svariati.
Qui vengono impostati per utilizzare il pin di Reset come I/O.

I Fuse sono particolari registri di configurazione molto importanti, in cui sono impostati alcuni dati di funzionamento del micro, come la frequenza di clock, l’utilizzo di un oscillatore interno/etserno, e altre cose, tra cui se disabilitare il pin di reset per utilizzarlo come I/O.

La disabilitazione del pin di reset rende però inefficace la programmazione normale, e per riprogrammare il microcontrollore è necessario un programmatore “ad alta tensione” ovvero che collega il pin di reset a 12V per mettere il micro in uno stato particolare di attesa comandi, in cui si può ri-abilitare il reset e riprogrammare il micro. Questo tipo di programmatore si chiama HVSP, e un esempio semplice e funzionale è questo.

I fuse si impostano tutti in una volta, quindi per disabilitare il reset, si impostano anche altri parametri, quindi attenzione a questa fase.

Per iniziare, bisogna calcolare il valore dei Fuse, con uno dei tanti calcolatori presenti online, io ho utilizzato questo. I valore per disabilitare il pin di reset (e lasciare a 8MHz il clock con oscillatore interno) sono i seguenti:
LowFuse: 0x62
HighFuse: 0x5f
ExtendedFuse: 0xff

Con Arduino collegato all’Attiny85 come nello schema precedente, si può iniziare la procedura.
Per impostare i Fuse utilizzeremo “AVRDUDE” che viene utilizzato anche dall’IDE di Arduino per la programmazione di tutti i tipi di schede, infatti è già presente sul pc.

Aprire un prompt dei comandi, quindi usare il comando “cd” per recarsi nella cartella di installazione di Arduino e in “\hardware\tools\avr\bin”:
attiny85_cmd_1

Da qui si può dare il comando ad avrdude:

avrdude.exe -c stk500v1 -p attiny85 -P [PORTAARDUINO] -U lfuse:w:0x62:m -U hfuse:w:0x5f:m -U efuse:w:0xff:m -v -C ..\etc\avrdude.conf -b 19200

Dove [PORTAARDUINO] è la porta COM di Arduino, facilmente individuabile da “Gestione PC”, ad esempio “COM5”.

Questo comando dovrebbe terminare con un messaggio in cui avrdude comunica l’esito positivo. Se così non fosse, probabilmente avete sbagliato ad impostare la porta, oppure non state utilizzando Arduino come programmatore. In quest’ultimo caso, bisogna cambiare la “stk500v1” (nel comando di avrdude) con il vostro programmatore.

Adesso il piccolo Attiny85 utilizza anche il reset come pin di I/O, ma non è più programmabile, a meno che non venga usato un programmatore di tipo HVSP come detto prima.

Questo piccolo micro risulta molto utile in certe applicazioni, in quanto il basso costo, le piccole dimensioni e il consumo di corrente irrisorio lo rendono davvero utile.

 

 

Licenza Creative Commons
Quest’opera di www.tecnovolt.it è distribuita con Licenza Creative Commons Attribuzione – Non commerciale – Non opere derivate 3.0

 

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Name the Author