Gebruik van ATtiny

Projecten die een beperkt aantal in- en uitgangen gebruiken en passen binnen 8kB kunnen gebruik maken van de ATtiny85 in plaats van de Arduino. Dat is niet alleen interessant omdat de ATtiny veel kleiner is dan de Arduino maar ook nog eens minder kost dan €3,=.
Is de sketch kleiner van 4kB dan kan de nog goedkopere ATtiny45 worden gebruikt. Hoewel wij alleen ervaring hebben met de ATtiny85, moet volgens de documentatie de ATtiny45 op precies dezelfde manier kunnen worden geprogrameerd. In onderstaande procedure moet dan natuurlijk ATtiny85 overal worden vervangen door ATtiny45.

Moeilijk is het niet om een sketch in een ATtiny85 te programmeren maar het vergt wel een aantal stappen. We hebben de volgende procedure uitgevoerd met de Arduino Uno, Arduino software versie 1.0.5 en de Arduino AT tiny core versie 0100-0015

Installeren van de software

Het installeren van de software hoeft u maar één maal uit te voeren.
  1. Maak een submap met de naam "hardware" in map waar de sketches worden opgeslagen;
  2. Download de Arduino AT tiny core;
  3. Kopiëer de mappen "tiny" en "tools" uit de in stap 2 gedownloade core naar de in stap 1 gemaakte map "hardware". Na het opnieuw starten van de Arduino software is in het "Extra" menu onder "Board" een aantal extra opties beschikbaar.

Arduino Uno instellen en aansluiten

Telkens als de Arduino Uno als programmeur gebruikt moet worden, dienen de volgende stappen uitgevoerd te worden:
  1. Open de sketch "ArduinoISP" via het menu "Bestand", "Voorbeelden" en upload de sketch naar de Arduino Uno. De software die de Arduino nodig heeft om de ATtiny te programmeren is nu geladen in de Arduino;
  2. Sluit de ATtiny85 aan op de Arduino Uno (zie figuur verderop voor pinnummers van de ATtiny85):
    • ATtiny pin 1 aan Arduino digitale pin 10
    • ATtiny pin 4 aan GND
    • ATtiny pin 5 aan Arduino digitale pin 11
    • ATtiny pin 6 aan Arduino digitale pin 12
    • ATtiny pin 7 aan Arduino digitale pin 13
    • ATtiny pin 8 aan 5V
    • Sluit een 10μF condensator aan tussen de Reset en GND van de Arduino Uno (de negatieve zijde van de condensator moet aan de GND)
  3. Kies in het menu "Extra", "Programmer" voor de optie "Arduino as ISP";
  4. Kies in het menu "Extra", "Board" voor de optie "ATtiny85 @ 1 MHz (internal oscillator; BOD disabled)".

Bootloader branden

In de vorige stap hebben we als Board de "ATtiny85 @ 1 MHz (internal oscillator; BOD disabled)" gekozen. Standaard staat de ATtiny85 ingesteld op 1 MHz. Als die snelheid voldoende is, kunt u deze stap overslaan. Maar voor sommige sketches is de standaard klokfrequentie van 1 MHz niet voldoende. Bijvoorbeeld voor het lezen van de DHT11 waar pulsen van 28 microseconden moeten worden geklokt. We kunnen dan kiezen voor bijvoorbeeld "ATtiny85 @ 8 MHz (internal oscillator; BOD disabled)". Om de instellingen in de ATtiny85 goed te zetten moeten we dan de bootloader branden. Dat klinkt best wel eng maar is gelukkig heel eenvoudig. Nadat de keuze is gemaakt voor het Board met een afwijkende frequentie, maken we in het menu "Extra" de keuze "Bootloader branden". Waarschijnlijk verschijnen er wat meldingen over ontbrekende PAGEL en BS2 instellingen maar evengoed zou het moeten werken.

Sketch aanpassen en laden in de ATtiny85

We gaan er vanuit dat de sketch goed werkt in de Arduino Uno voordat u gaat proberen de sketch in de ATtiny85 te zetten. Omdat de ATtiny85 niet zoveel aansluitingen heeft, moeten de gebruikte pinnen van de Arduino worden toegewezen aan de juiste pinnen van de ATtiny85. In onderstaande figuur staan de aansluitingen van de ATtiny85. Het rondje linksboven bij pin 1 is het rondje dat ook in de behuizing van de ATtiny te zien is. De annotaties hebben de volgende betekenis:

Bijvoorbeeld pin 5 kan als digitale in- en output gebruikt worden. In de sketch wordt aan deze pin gerefereerd met pinnummer 0, bijvoorbeeld pinMode(0, OUTPUT). Omdat deze pin ook PWM ondersteunt, is ook analogWrite(0, 150) toegestaan. Let er wel op dat analogRead(2) leest van pin 3 en digitalRead(2) leest van pin 7.

Opruimen

We zullen niet de eerste maar zeker ook niet de laatste zijn die zo nu en dan vergeten de Arduino en de software weer in de juiste staat achter te laten. Dit "vergeten" leidt tot vreemde foutmeldingen, maar de volgende stappen moeten volstaan om de Arduino weer te kunnen programmeren.
  1. Kies in het menu "Extra", "Programmer" voor de optie "AVRISP mkII";
  2. Kies in het menu "Extra", "Board" voor de optie "Arduino Uno";
  3. Verwijder de 10μF condensator tussen de Arduino Reset en de GND.