Hallo zur Webseite von
DL1DMW





UPDI-Programmer:
Mit Arduino UNO oder NANO

Neuere AVR-Prozesoren der Firma Microchip besitzen ein UPDI-Interface zur Programmierung und Fehlerbehandlung (Debugging). Es handelt sich um die ATtiny-Serien 0, 1 und 2. Ein käuflich zu erwerbendes Programmiergerät ist kostspielig und mag für den gelegentlichen Anwender ungeeignet sein. Hier ist die preiswerte Alternative auf der Basis eines Arduino.

Das Unified Program and Debug Interface (UPDI) ist eine bidirektionale, asynchrone Halb-Duplex-Kommunikation für Programmier- und Debugging-Zwecke zu dem zu programmierenden AVR-Tiny-Prozessor. Es handelt sich um eine Ein-Draht-Verbindung, benötigt zur Kommunikation mit dem Zielprozessor nur eine Leitung – eben UPDI_DATA – und die Masse (GND).

<- Bild 1: Anschlussbelegung des auf der Zielplatine befindlichen Programmiersteckers.

Obige Abbildung stammt aus der Beschreibung des Atmel-ICE, ein Programmiergerät, das neben vielen anderen Programmiertechniken auch UPDI unterstützt. Hier wird zusätzlich noch die Versorgungsspannung VCC auf dem Programmierstecker benötigt, der sich auf der Platine des zu programmierenden Prozessors befinden muss und vom Atmel-ICE abgefragt wird. VCC verwenden wir für die folgende Ersatzlösung zwar nicht. Bei dem Layout einer neuen Platine sollte man VCC jedoch mit einplanen, damit die Programmierschnittstelle dem Standard entspricht und damit zu anderen Programmiergeräten an den unten vorgestellten kompatibel ist.


UPDI mit Arduino UNO R3 oder NANO

Der Github-Nutzer El Tangas [1] hat sich die Mühe gemacht, das proprietäre und nicht offen gelegte UPDI-Protokoll zu analysieren und auf einem ATMega328P nachzubilden. Mit jtag2updi ist eine Lösung entstanden, die auf jedem Atmel/Microchip ATMega328P-Prozessor läuft und damit unter anderem auf dem Arduino UNO R3 und dem Arduino NANO. Selbstbauer achten darauf, dass der ATMega328P mit einem 16-MHz-Quarz ausgestattet wird. Zudem sollte sich die Spannungsversorgung des Prozess idealerweise zwischen 3,3 und 5 Volt umschalten lassen, damit entsprechend versorgte Zielprozessoren (ohne Level-Shifter) programmierbar sind. Die genannten Arduinos sind leider auf 5 Volt festgelegt, doch der aus Bulgarien stammende Olimex Olimexino-328 aus meiner Prozessor-Bastelkiste lässt sich bequem mittels Schiebeschalter zwischen diesen Spannungen umschalten – ein großer Vorteil, benötigt allerlei Peripherie, die man an die Controller anhängt, oft die geringere Versorgungsspannung.

Arduino UNO programmieren
Damit der Arduino UNO / NANO oder der zum UNO kompatible Olimexino-328 zum UPDI-Programmierer wird, benötigt er die jtag2updi-Software. Die kann man sehr praktisch mit der Arduino IDE auf den Arduino UNO R3 / NANO übertragen. Die Programmierung geschieht wie üblich über ein USB-Kabel und ist um Nu geschehen. Danach sind lediglich zwei Verbindungen zwischen Arduino und er Zielplatine herzustellen:

Tabelle 1:
Arduino UNO Zielplatine mit dem zu programmierenden Prozessor
PortD.6 – Arduino Pin 6 UPDI
GND GND
Hinweis: Zwischen Arduino und Zielplatine wird in der UPDI-Leitung ein 4k7-Widerstand eingefügt!


<- Bild 2: Verdrahtungsplan.,

Nun kann der Zielprozessor mit dem Programm AVRDUDE V6.3 programmiert werden. Damit das mit den neuen Microchip-Prozessoren der AVR-Serien 0/1/2 funktioniert, wurde die Konfigurationsdatei um den JTAG2UPDI-Programmer und die neuen Prozessoren erweitert. AVRDUDE ist keine grafische Anwendung mit Fenstern, wie man es von Windows kennt, sondern wird von der Kommandozeile (CMD.EXE) mit einigen Parametern gestartet. Um dem Umgang mit AVRDUDE zu vereinfachen, verwende ich gern die AVRDUDEGUI.



<- Bild 3: Programmierung eines AtTiny826 mit der AVRDUDE GUI.

























Bild 4 zeigt die Einstellung der Programmers und des verwendeten COM-Ports, den Windows dem Arduino zugewiesen hat, als dieser über ein USB-Kabel mit dem PC verbunden wurde, Hier ist es COM16.



<- Bild 4: Einstellungen für Programmiergerät und COM-Port.


Die Software, AVRDUDE und die GUI sowie die modifizierte AVRDUDE.Konfiguratuinsdatei finden Sie unter \Artikel\UPDI und deren Unterverzeichnisse auf der Heft-DVD. Viel Spaß bei der Programmierung der neueren Microchip-Prozessoren!








Welche Prozessoren lassen sich per UPDI programmieren?

Microchip/Atmel der Serien 0, 1 und 2, beispielsweise:
ATtiny202, 204, 212, 214
ATtiny404, 404, 406, 414, 416, 417
ATtiny804, 806, 807, 814, 816, 817
ATtiny1604, 1606, 1607, 1614, 1616, 1617
ATtiny3216, 3217, 3226, 3227
… und weitere, siehe [2]

Hinweis: Diese Prozessoren lassen sich mit der Arduino IDE flashen. Man benötigt dazu den „megaTinyCore - Arduino support for all tinyAVR 0/1/2-Series“ [3]


Literatur/Verweise:
[1] jtag2updi auf Github:
https://github.com/ElTangas/jtag2updi
[2] Liste UPDI-Prozessoren:
https://www.mikrocontroller.net/topic/543957
[3] ATTiny-Mega-Core:
https://github.com/SpenceKonde/megaTinyCore





Mehr Zeugs
  • Schaun mer mal
  • Moin
  • Bast scho

Hier gibt es was zu lesen

Adresse etc.

  • Op: Michael, DL1DMW
  • ITU Region 1, Zone 14, DL, JO41CO
  • Bad Sassendorf
  • NRW / Germany