Programmare un ATTiny (ATtiny85)

Come programmare un ATTINY85 con Arduino UNO

Un ATtiny85 è un microcontrollore dell' Atmel. Per chi già conosce Arduino (ATmega) non è errato affermare che è uno dei fratellini minori di un Arduino.

Per informazioni sulle sigle e sulle funzionalità vedere il sommario del datasheet o il datasheet completo.

Quando ho scoperto l' ATtiny85 non avevo in mente nessuna domanda e nessuna esigenza particolare, l'ho scoperto per caso e mi ha incuriosito. Dopo qualche minuto di lettura le domande che mi sono fatto (e relative risposte) sono le seguenti:

Perche dovrei utilizzare un ATtiny invece di un Arduino? Per risparmiare soldi e spazio visto che non utilizzerei appieno le funzionalità dell' ATmega328.

Perchè dovrei utilizzare un Arduino invece di un ATtiny? Perchè ho bisogno di più "potenza".

 

ATtiny VS Arduino

Confrontare un ATtiny con un Arduino non è corretto perchè per Arduino non si intente solo il microcontrollere della serie ATmega, ma tutta la scheda di sviluppo.

A grandi linee le differenze tra un ATtiny84,85 e un ATmega328 sono le seguenti :

  ATtiny84 ATtiny85 ATmega328
Pin Count

14

8

32

Max IO pins

12

6

23

Flash Memory

8 Kb

8 Kb

32 Kb

EEPROM

512 bytes

512 bytes

1 Kb

ADC channels

8

4

6 (8 on SMD)

PWM channels

4

6

6

Timers

1 8bit

1 16bit

2 8bit

2 8bit

1 16bit

SRAM

512 bytes

512 bytes

2 Kb

Hardware Serial

No

No

Yes – 1

Hardware I2C

No

No

Yes

External Interrupts

1 (12PCINT)

1 (6 PCINT)

2 (23 PCINT)

Anche il costo è abbastanza differente. Per un ATtiny85 si aggira intorno ai 2.5 euro.

 

Per programmare un ATtiny serve un programmatore.

E' possibile acquistarne uno oppure se si ha già un Arduino UNO nel cassetto possiamo trasformarlo in un programmatore con un po di pazienza.

Come programmare un ATtiny85?

Il primo passo è preparare l'Arduino Uno in modo da farlo funzionare come ISP.

Le schermate successive si riferiscono ad Arduino IDE 2.0 

Dal menu "File" -> "Examples" -> "11.ArduinoISP" apri il file ArduinoOSP.ino e carica il codice sull'Arduino Uno.

ArduinoISP

Appena terminato il caricamento, scollega l'Arduino Uno.

Adesso che l'Arduino Uno è diventato un programmatore ISP puoi collegarlo  all' ATtiny85.

Puoi utilizzare una breadboard e fare i seguenti collegamenti:

Wiring ATtiny85 to Arduino

Adesso puoi procedere alla configurazione dell' Arduino IDE.

Prima di tutto è necessario aggiungere la board.

Dal menu "File" -> "Preferences..." imposta il campo "Additional boards manager URLS:" a:

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

Successivamente clicca sul tasto "Board" dalla barra a sinistra e installa la board "attint" di David Mellis:

ATtinyBoard Installation

NOTA: Se la board "attiny" non dovesse essere visibile riavvia Arduino IDE.

A questo punti sono necessari altri tre passi per consentire il caricamento del codice all'interno dell' ATtiny.

1. Selezione della board

Board selection

2. Selezione della frequenza di clock

Clock selection

3.Selezione del processore

 

Processor selection

4.Selezione del programmatore

 

Programmer selection

5. Caricamento del bootloader

Burn bootloader

Il solito Blink

Bene, se tutto è andato per il verso giusto puoi caricare il codice sull' ATtiny85.

Supponendo di voler far lampeggiare il led sul piedino n°5 che corrisponde a D0, il codice da caricare è il seguente:

void setup() {
  pinMode(0, OUTPUT);
}


void loop() {
  digitalWrite(0, HIGH);
  delay(1000);
  digitalWrite(0, LOW);
  delay(1000);
}

Per caricare il codice sull' ATtiny85 la procedura è leggermente diversa. E' necessario cliccare su "Sketch" -> "Upload using programmer":

Upload code in ATtiny85

Adesso puoi estrarre l'ATtiny85 e fare i seguenti collegamenti per veder lampeggiare il led:

Breadboard

Nota: se ricevi l'errore: "Error: Request uploadUsingProgrammer failed with message: Upload using programmer error: Failed programming: no upload port provided" significa che hai sbagliato qualche collegamento, hai cliccato "Upload" invece di "Upload using programmer" o probabilmente ti basta disconnettere e riconnetere l'Arduino e verificare che l'Arduino sia connesso:

Error

Per la diagnosi degli errori è possibile abilitare il logging più dettagliato:

Verbose logging enable

Buon divertimento!

Se hai voglia di lasciarmi un commento mi trovi su Linkedin.