Drücke „Enter”, um zum Inhalt zu springen.

ATtiny2313 per Programer flashen und in Arduino oder PlatformIO programmieren

2

Wer sich in der “Maker-Szene” herumtreibt und mit dem Arduino schon das ein oder andere Projekt realisiert hat ist bestimmt auch schon mal an den Punkt gekommen, dass selbst ein Arduino Nano einfach zu groß für sein Projekt ist. Neben dem eigentlichen Mikrocontroller wird bei den Arduino Boards nämlich auch diverse Peripherie auf das Board gepackt.

Hier lohnt es sich mal einen Blick auf die preiswerte Mikrocontroller Familie ATtiny aus dem Hause Atmel zu werfen. Je nach Projekt stehen hier Controller mit 8 bis 32 Pins zur Verfügung.

ATtiny2313-20PU

Das Besondere am ATtiny ist für mich jedoch, dass er für eigene Schaltungen ganz ohne aufwendige externe Beschaltung auskommt. In der Praxis bedeutet das: Programmieren, Spannung dran, fertig. Außerdem kommt der ATtiny mit sehr variablen Versorgungsspannungen zurecht. So lässt sich der 2313 mit 2,7-5,5V DC versorgen. Dabei verügt er über 18 I/O Pins. Der Tiny kann mit einem internen Takt von bis zu 20MHz betrieben werden. In der Standardeinstellung (Stichwort: Fuses) wird aber ein interner Teiler verwendet, womit der letztendlich mit 1MHz internem Takt arbeitet (Anmerkung: was für einen großen Teil der typischen Maker-Projekte oftmals ausreichend ist).

Da er jedoch nicht auf einem üppig ausgestattetem Board mit USB-Schnittstelle und Bootloader daherkommt, stellt sich nun die Frage: wie wird er programmiert? Ich habe mich persönlich inzwischen auf C++ bzw. Arduino eingeschossen, da ich ohnehin nicht mehr so häufig zum Programmieren komme. Deshalb habe ich nach einer Möglichkeit gesucht, den Tiny in Arduino zu programmieren. Im Netz bin ich über zahlreiche Anleitungen gestolpert (meist für den kleineren ATtiny85), wie man den ATtiny mit Hilfe eines zweckentfremdeten Arduino Uno als ISP programmieren kann. Mit war die Lösung zu wenig komfortabel, weshalb ich mir bei einem Online-Versandhändler einen günstigen AVR-ISP Programer mit Schwenkhebelmodul zum Einsetzen des Mikrocontrollers gekauft habe.

USB ISP-Programer für Atmel AVR und ATtiny

Die Treiber für den Programmer hat Windows 10 ohne Probleme eigenständig erkannt und installiert. Da der Programmer den ATtiny zur Programmierung auf mit Spannung versorgen muss, wird der DIP Schalter 1 auf ON geschaltet. Der DIP Schalter 2 legt die Höhe der Spannung fest (OFF=3,3V, ON=5V). Da der ATtiny mit beiden Spannungen zurecht kommt, habe ich auch Schalter 2 auf ON gestellt. Die mitgelieferte Flachbandleitung wird mit der einen Seite am 10-poligen Pfostenstecker des Programmers und mit der anderen Seite an dem entsprechend beschrifteten Port des Schwenkhebelmoduls (ATTiny 2313/4313) angeschlossen.

Anschluss der Flachbandleitung am Schwenkhebelmodul

Jetzt nur noch den Programmer an der USB Schnittstelle des PCs angeschlossen… und fertig.

Um nun ein Arduino Programm auf den Tiny zu bekommen, muss man sich für eine Progammierplattform (IDE) entscheiden. Ich beschreibe die Programmierung einmal mit der weit verbreiteten Arduino IDE und dem (meiner Meinung nach) etwas komfortableren IDE PlatformIO auf Basis von Visual Studio Code von Microsoft.

Bevor sich die Arduino IDE dazu überreden lässt den Controller zu flashen, muss noch eine passende Hardware-Library installiert werden. Dazu geht man in der Arduino IDE auf “Werkzeuge” -> “Board” -> “Boardverwalter” und sucht nach “ATTinyCore” von Spence Konde. Ich habe die derzeit aktuelle Version 1.4.1 installiert.

Anschließend muss der korrekte Mikrocontroller, Chip, Takt, Port und zu guter Letzt der Programmer ausgewählt werden:

Einstellungen Arduino IDE

Als erstes Beispielprogramm habe ich “Blink.ino” ausgewählt, wobei ich als Ausgang den Pin 7 des ATtiny für die LED ausgewählt habe. Jetzt noch ein Klick auf den Upload Button… und die LED blinkt im Sekundentakt!

Mit PlatformIO ist der Weg ähnlich einfach, wenn man die entsprechenden Einträge in der Konfigurationsdatei platformio.ini des Blink-Projekts getätigt hat:

Konfigurationsdatei platformio.ini

Eine entsprechende Beispielkonfiguration für den Programer ist in der Dokumentation von PlatformIO bereits zu finden und muss nur noch auf den verwendeten Mikrocontroller angepasst werden:

[env:program_via_AVRISP_mkII]
platform = atmelavr
board = attiny2313
board_build.f_cpu = 1000000L
framework = arduino
upload_protocol = custom
upload_port = COM7
upload_flags =
    -C
    ; use "tool-avrdude-megaavr" for the atmelmegaavr platform
    $PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
    -p
    $BOARD_MCU
    -P
    $UPLOAD_PORT
    -c
    stk500v2
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i

Nachdem unter upload_port die entsprechende serielle Schnittstelle des Programers ausgewählt wurde, muss lediglich noch das Board (attiny2313) und die Taktfrequenz von 1MHz (board_build.f_cpu = 1000000L) eingetragen werden. Für den Betrieb mit einer höheren Taktfrequenz müssten jedoch noch die Fuses des Controllers angepasst werden.

Viel Spaß beim Maken!

  1. Jane Doe

    Hi.
    ich habe in der Arduino IDE schon mal für den Attiny13 die Anpassung vorgenommen.
    board_build.f_cpu = 1000000L

    Ich finde aber nicht mehr die Datei in der ich da abändern musste.

    • André

      In der Arduino IDE musste ich zur Programmierung des ATtiny keine besonderen Anpassungen in Programmdateien vornehmen. Die Auswahl der beschriebenen Einstellungen unter dem Menüpunkt “Werkzeuge” hat in der Arduino IDE vollkommen ausgereicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.