ISP-Programmer (4/4)

Der ATTiny 13 kommt zwar aus derselben Chipfamilie wie der ursprüngliche Arduino, lässt sich aber nicht wie dieser zum Progammieren einfach an den PC anschließen.

Das notwendige Interface mit dem PC wird als ISP-Programmer bezeichnet. ISP steht für In-System-Programming und bezeichnet die Fähigeit des ATTiny im fertig eingelöteten Zustand programmiert zu werden. Auf dem Board findet sich dazu ein ISP-Anschluss im 10-pin-Standardformat. Die für die Programmierung nötigen Ports dürfen dafür aber nicht inkompatibel beschaltet werden (z. B. auf Masse gelegt werden, oder Relais antreiben). Ist so etwas für einen entsprechenden Port notwendig, muss z. B. mit einem Jumper dafür gesorgt werde, dass diese Funktionalität während des Programmiervorgangs abgetrennt werden kann.

 ISP-Connections
[Pinbelegung der 6-pin und 10-pin Standardverbindung, Steckeranschlüsse von unten, Pin-1-Markierung beachten!]

Es gibt ISP-Programmer für kleines Geld bei verschiedenen Anbietern. Die Geräte heißen meist USBASP-Programmer.


IMG_20220302_175509
[USBASP-Programmiergerät]

Leider wird bei Billiggeräten der USB-Chip auf dem Programmer unter Windows nicht immer erkannt, in diesem Fall ist es notwendig, einen Zusatztreiber zu installieren, z. B. den Zadig-Treiber.

ISPASP-Programmer in Microchip Studio

Um den Microcontroller mit einem USB-ISP (USBASB) oder Arduino zu programmieren, braucht es ein Zusatzprogramm, das die Kommunikation mit dem Microcontroller herstellt: Avrdude.

Avrdude kann entweder direkt heruntergeladen werden oder kommt mit der Installation von WinAVR oder Arduino auf den Rechner.

Im Menüpunkt Tools -> External Tools kann der Avrdude mit den für den USB-ISP nötigen Paramtern eingerichtet werden:

 externaltools
[Microchip Studio -> Tools -> External Tools]

Unter "Command" wird der Pfad zu avrdude.exe angegeben (falls das Programm über WinAVR installiert wurde, reicht avrdude.exe als Angabe).

Unter "Arguments" kommen die für Avrdude nötigen Kommandozeilenargumente:

  • Release-Version: -c usbasp -p t13 -U flash:w:"$(TargetDir)$(TargetName).hex":i
  • Debug version: -c usbasp -p t13 -U flash:w:"$(ProjectDir)/Debug/$(ItemFileName).hex"
  • Verwendet man das mit der Arduino-IDE installierte avrdude ist die Arguments-Zeile um die Angabe des Pfads zur avrdude.conf-Datei zu ergänzen, z. B.: -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"

Leider kann bei der Verwendung des USB-ISP (USBASP) nicht der Kompilierungsprozess (Build) und die Übertragung des Programms auf den Microcontroller in einem Durchlauf geschehen, sondern zuerst wird das Programm kompiliert (Build -> Build Solution oder F7) und danach mit Tools->USBASP Release (oder wie immer man die Tools benannt hat) programmiert.

USBASP mit Arduino-IDE

In der Arduino-IDE kommt ein USBAsp-Interface beispielsweise mit der Installation der ATTiny 13 MicroCore-Erweiterung in die Auswahlliste unter Werkzeuge -> Programmer -> USBAsp (MicroCore). Die Übertragung des Programms geht über den Menüpunkt: Sketch -> Hochladen mit Programmer. Wird das Gerät nicht erkannt, bzw. kommt die Meldung, dass der serielle Port falsch ist, dann sollte mit Hilfe des Zadig-Tools ein neuer Treiber ausprobiert werden. Mit der Arduino-IDE funktioniert normalerweise der libusbK-Treiber.

Arduino als ISP-Programmiergerät

Auch der Arduino kann als USB-Programmiergerät verwendet werden. Dazu ist mit der Arduino-IDE der Sketch "ArduinoISP", zu finden unter Dateien -> Beispiele auf den Arduino zu laden.

Die Verbindungs-Pins können ggf. im Sketch angepasst werden, die Standardbelegung für die meisten Arduinomodelle ist wie folgt:

arduinio-isp[Die Status-LEDs sind optional]

Achtung: Wenn Arduino und Microcontrollerboard verschiedene Spannungen haben, dann entsprechende Vorsichtsmaßnahmen ergreifen, Versorgungen separat und ggf. TTL-Wandler zwischenschalten.

Beim Arduino-UNO können auch folgende Pins verwendet werden, VCC und GND sind beliebig:

  • PIN 10 -> RESET
  • PIN 11 -> MOSI
  • PIN 12 -> MISO
  • PIN 13 -> SCK

Arduino-ISP mit Microchip Studio

Für die Programmierung des ATTiny 13 mit Hilfe eines Arduino UNO (oder eines anderen Modells) wird ebenfalls avrdude verwendet. Sie können es hier herunterladen oder das in der Arduino-IDE enthaltene verwenden (ggf. mit der Suchfunktin nach avrdude.exe suchen).

In Microchip Studio unter Tools -> External Tools auf "Add" und dann die drei Felder:

  • Title: Arduino Debug
  • Command: Pfad zur avrdude.exe, z. B.: C:\avrdude\avrdude.exe
  • Arguments: Debug-Version: -e -v -p t13 -c arduino -P COM9 -b 19200 -D -U flash:w:"$(ProjectDir)Debug$(ItemFileName).hex":i
microchip-arduino
[Arduino als ISP-Programmer mit Microchip Studio verwenden]

Zu beachten:

  • Der serielle Anschluss, den der Arduino belegt (hier COM9) ist den eigenen Gegebenheiten anzupassen, am leichtesten findet man ihn heraus, wenn man die Arduino-IDE startet und unter Werkzeuge -> Port nachschaut.
  • Verwendet man das mit der Arduino-IDE installierte avrdude ist die Arguments-Zeile um die Angabe des Pfads zur avrdude.conf-Datei zu ergänzen, z. B.: -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
  • Wenn die Release-Dateien verwendet werden sollen, dann ist die Angabe des Hex-File-Pfades in den Arguments anzupassen: -U flash:w:"$(TargetDir)$(TargetName).hex":i
Die Programmierung erfolgt dann mit Tools -> Arduino Debug (oder was immer als Title eingegeben wurde).

Arduino-ISP mit Arduino-IDE

Im Menüpunkt "Werkzeuge" -> Programmer -> Arduino as ISP (MicroCore) wählen. Danach kann mit Sketch -> Hochladen oder Sketch -> Mit Programmer hochladen (beides bewirkt dasselbe) der ATTiny-13-Sketch kompiliert und via Arduino-ISP auf das Experimentierboard übertragen werden.

Angerer Harald - Mittwoch, 2. März 2022 (Zuletzt geändert: Montag, 7. März 2022)

Kategorie: Microcontroller

Kommentieren Sie diesen Beitrag

Ihr Kommentar

Captcha