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.
- Maak een submap met de naam "hardware" in map waar de sketches worden opgeslagen;
- Download de Arduino AT tiny core;
- 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:
- 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;
- 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)
- Kies in het menu "Extra", "Programmer" voor de optie "Arduino as ISP";
- 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:
- GND is de pin die aan aarde (0V) moet worden aangesloten zowel bij het programmeren als bij het
uitvoeren van een sketch;
- VCC is de pin die aan de 5V moet worden aangesloten zowel bij het programmeren als bij het uitvoeren
van een sketch;
- RESET is de reset pin. Deze pin is ook te gebruiken als Analoge input 0 of digitale in- en output 5, maar
zolang we deze niet nodig hebben gebruiken deze niet. Om deze pin te gebruiken moet namelijk de reset functie
(pin heeft een ingebouwde pull-up weerstend en moet voor een reset naar 0 worden getrokken) worden uitgeschakeld
en dan is de ATtiny85 niet meer te programmeren zonder kunstgrepen.
- An betekent dat deze pin als analog input gebruikt kan worden, waarbij n het nummer is dat
in de sketch moet worden gebruikt;
- Dn betekent dat deze pin als digitale in- en output gebruikt kan worden, waarbij n het nummer
is dat in de sketch moet worden gebruikt;
- PWM betekent dat deze pin als Pulsebreedtemodulatie output gebruikt kan worden.
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.
- Kies in het menu "Extra", "Programmer" voor de optie "AVRISP mkII";
- Kies in het menu "Extra", "Board" voor de optie "Arduino Uno";
- Verwijder de 10μF condensator tussen de Arduino Reset en de GND.