Atmel brengt ook bij de ATTiny meerdere modellen op de markt in verschillende behuizingen. Ik ga hier alleen in op de 8 pins DIP uitvoering, bij grotere uitvoeringen heb ik al snel de neiging om weer de 28 pins Atmega328 te nemen omdat deze bijna net zo duur of soms zelfs goedkoper is. Zoals we van Atmel gewend zijn bestaan er meerdere uitvoeringen met verschillende hoeveelheden Flash rom en sram geheugen met ook een verschillende prijs. Standaard hebben ze een ingebouwde RC oscillator die niet super nauwkeurig is maar wel twee pinnen vrijhoud, er kan ook door het opofferen van twee pinnen een externe kristal oscillator aangehangen worden. De ATtiny85 werkt standaard op een 1 Mhz ingebouwde RC oscillator maar dit kan door het laden van de software verhoogd worden.
Device | I/O pins | Flash | RAM | EEPROM | USI | counters | PWM | ADC | clock |
---|---|---|---|---|---|---|---|---|---|
ATtiny13 | 6 | 1 | 64 | 64 | - | 1 | 1 x 2 | 4 | 9.6..20 Mhz |
ATtiny25 | 6 | 2 | 128 | 128 | 1 | 2 | 2 x 2 | 4 | 1..20 Mhz |
ATtiny45 | 6 | 4 | 256 | 256 | 1 | 2 | 2 x 2 | 4 | 1..20 Mhz |
ATtiny85 | 6 | 8 | 512 | 512 | 1 | 2 | 2 x 2 | 4 | 1..20 mHz |
Om een arduino te programmeren heeft u software nodig, namelijk de Arduino programmeeromgeving. Deze gratis ontwikkelomgeving kunt u hier downloaden , deze omgeving is geschikt voor Windows, Linux en Mac OS X. Wanneer u de computer via een USB kabel aangesloten heeft op het Arduino board kunt u rechtreeks de programmacode overzetten naar de Arduino. U programmert dus op uw eigen computer en "upload" de code naar het Arduino board. Het enige wat u hoeft te doen is in het menu het type board te selecteren dat u gebruikt en de poort waarop het board aangesloten is (wanneer er meerdere poorten zijn). Er is eigenlijk maar één programmeertaal populair voor de Arduino en dat is de programmeertaal C en C++. De programmeeromgeving inclusief een grote hoeveelheid standaard bibliotheken voor LCD, Servo, motoren, wifi e.d. is gratis te downloaden. De programeertaal C is niet de meest eenvoudige programmeertaal, op deze site kunt u ook een eenvoudige beginnerscursus C en C++ vinden. De Arduino C veriant wijkt op een paar punten af van de C standaard en helaas zijn ook niet alle functies aanwezig in de meegeleverde bibliotheken. Het blijft natuurlijk een 8 bits processor en bijvoorbeeld de ondersteuning van double variabelen is een beetje gebrekkig. Daar waar een standaard C programma begint met een main() routine, bestaat een arduino programma (vaak een sketch genoemd) bestaat uit twee programma blokken, de setup() en de loop(). Aan het begin van het programma staat de "void setup()" en in deze functie staat de initialisatie van het programma zoals initialisatie van I/O pinnen, initialisatie van software libraries en globale variabelen. De setup() functie wordt bij het opstarten van het programma één keer uitgevoerd door de arduino. Daarna is de loop() functie aan de beurt, deze wordt eindeloos herhaald tot de stroom wordt uitgezet. Vanuit deze loop() functie kunt u weer andere functies aanroepen en zo kunt u een goed gestructureerd programma in elkaar bouwen.
Een bron van verwarring blijkt toch de functie en de nummering van de in/out pinnen van de aTtiny processor te zijn. Ik heb zelf gezocht op Internet en de datasheets gelezen en kwam tot het volgende eenvoudige overzicht die alles duidelijk maakt. Elke pin heeft een ander intern nummer en functie afhankelijk van hoe deze geconfigureed is met pinMode() en of men analogRead, analogWrite, digitalRead of digitalWrite gebruikt. Om het duidelijk te maken heb ik dit in een excel blad gezet waarvan hier een afdruk staat. U hoeft zelf niet via de internet registers de functie van de pinnen te programmeren, tenzij u van de alternatieve functies van de pinnen gebruik wilt maken. De standaard IDE en de chip definitie hierin, zullen het meeste al voor u uit handen nemen wanneer u de pinnen op de standaard wijze gebruikt.
Open in nieuw venster of/en download voor een grotere versie!
Om de ATting85 te kunnen programmeren moeten we eerste de ISP sketch in de Arduino Uno uploaden. Deze sketch kunt u vinden in voorbeeld bestanden die meegeleverd zijn met de Arduino IDE en die u kunt vinden in het bestand -> Voorbeelden en de sketch heet ArduinoISP. Verbind de Arduino Uno zonder shield aan de computer en upload deze sketch naar de Arduino Uno op de gebruikelijke wijze. Nu gaan we de Arduino IDE aanpassen zodat deze de Attiny gaat ondersteunen. Zoek in het scherm dat u kunt vinden onder Bestand -> Voorkeuren naar het invoerveld "Aditionele bordenbeheer URL" en vul daar de volgende URL in:
Druk daarna op de OK knop om de instelling op te slaan en sluit het scherm. Ga daarna naar Hulpmiddelen -> Board -> Bordenbeheer en zoek helemaal onderaan naar het blok met de tekst "attiny by Davis A. Mellis" en klik op installeren. Na het installeren moet er een nieuw board toegevoegd zijn aan het selectiescherm voor de boards. Hier kist u het board, de processor en de keuze voor Arduino as ISP waarna u de schield op de Arduino kunt plaatsen. Nu kunt u de Blink sketch gaan laden waarbij u de LED pin even moet veranderen in 0 omdat we op deze pin de led gezet hebben. Wanneer u de Arduino met de schield aan de computer aansluit moet u in staat zijn om via de normale upload knop deze sketch in de ATtiny te laden, waaarna deze vrolijk zal gaan knipperen. Bij mij ging dit helemaal niet goed en gaf de IDE een foutmelding over een device nummer 00000, na controle bleek toch net een soldeerverbinding aan het IC voetje niet lekker te zijn. Hierna lukt het prima en kon ik mijn ATtiny85 met de blink sketch laden.
Ik heb nog een kleine uitbreiding op mijn programmer boardje gemaakt. Bij een van mijn eerste experimenten vergiste ik mij en gebruikte ik per ongeluk een bootloader met een extern kristal waarna de attiny85 chip niet meer reageerde. Ik kon er dus ook niet meer de goede bootloader in zetten om de ATtiny85 weer op interne oscillator te laten werken. De bootloader zet namelijk de "fuses" die bepalen of de chip van een interne of externe klok gebruik maakt. Staat de chip op extern en er is geen kristal zal de chip niet opstarten. De enige wijze om de chip weer te kunnen herprogrammeren is een extern kristal aan te sluiten. Ik besloot dus om een extern kristal van 8 Mhz op het printje te plaatsen in een klein voetje zodat ik het ter controle ook weer vanaf kon halen. Het kristal zit aan beide pootjes ook via een 22 pF condensator aan de massa. De condensators kunnen wel blijven zitten wanneer het kristal er uit gehaald is. Na het plaatsen van de ATtiny85 op het board seleteerde ik de 1 Mh intern boatloader die ik ook met succes kon uploaden waarna de Attiny ook weer werkte zonder het kristal. Door middel van deze uitbreiding kan ik nu ook code laden die in de definitieve schakeling gebruik gaat maten van een extern kristal op de Attiny processor.
Link: Tiny robot family Gallery
Link: Terminator 2 - Micro robot
Link: ATTiny Line Follower
Link: ATtiny-Powered Arduino Projects
Link: attiny - The Garage Lab
Link: ATiny mini spelcomputers
Link: ATiny automatisch fietslicht