Forum: Mikrocontroller und Digitale Elektronik UPDI Programmer bauen - alias "El Tangas"


von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich möchte mir eine Platine bauen die als UPDI Programmer dient. So der 
aktuelle Plan.
Bestehend aus FT232RL und ATmega328P.
Auf den ATmega wollte ich das Programm von "El Tangas" flashen.
https://github.com/ElTangas/jtag2updi

Damit möchte ich später aus Atmel Studio 7 heraus die neuen UPDI µC 
programmieren. Ich möchte es zumindestens probieren.  :-)

Jetzt tun sich im Vorfeld paar Fragen auf.

Als was wird der "El Tangas" Programmer in AS7 erkannt?
Irgendwie muss der mit einem Treiber zusammenarbeiten, sonst geht das 
sicherlich nicht.
Anders gefragt. Was muss man noch alles beachten bzw. ändern damit das 
dann alles funktioniert?

Eine Alternative wäre sich ein ATtiny416 Xplained Nano zu kaufen.
Muss ich hier zwischen dem mEDBG Chip und dem ATtiny alle Verbindungen 
kappen?
Wie funktioniert die µC Erkennung?
Meldet sich der µC der dann gerade per UPDI angeklemmt ist?

Aktuell habe ich nur einen AVRISP mkII für meine ATmegas und ATtiny ohne 
UPDI.

von H.Joachim S. (crazyhorse)


Lesenswert?

Willst du basteln oder Geld sparen?
Falls ersteres: versuch es. Ob es klappen kann kann ich nicht 
einschätzen.
Falls es ums Geld geht: bei Microchip direct gibts immer wieder mal 
Aktionen, ich meine ich hätte für den AT ATMEL-ICE full kit 50€ bezahlt. 
Und finde den ziemlich gut.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

eigentlich wollte ich basteln, auch wenn es länger dauert. Habe jetzt 
mitbekommen das man die avrdude.conf anpassen muss. Vermutlich taucht 
dann in AS ein Programmer names "jtag2updi" auf. Und dann muss man wohl 
fehlende µC nachtragen falls einer noch nicht drin steht. Das muss man 
demnach aktuell halten. Hat "El Tangas" aktuell gemacht. In meiner 
avrdude.conf stehen jedenfalls keine aktuellen "UPDI µC" drin. Gefällt 
mir schon nicht so sehr wenn man dabei auf fremde Leute angewiesen ist 
die das jetzt machen und später vielleicht nicht mehr.


50,- Euro für ein Full-Kit wäre ein Schnäppchen. Das würde ich mir 
gönnen. Wie bekommt man das mit?
Jede Woche vorbeischauen, oder?
Mich drängelt nichts.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

habe mal etwas recherchiert. Die 50% Rabattaktion auf den Atmel-Ice war 
vor über einem Jahr. Februar 2018. Könnte eine einmalige Aktion gewesen 
sein. Glaube nicht das die das wiederholen. Werde wohl doch basteln 
müssen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Dann habe ich wohl Glück gehabt.

von Wilhelm M. (wimalopaan)


Lesenswert?

Basteln brauchst Du gar nichts:

https://github.com/mraardvark/pyupdi

mit einem USP/Seriell-Adapter (ein cp2102) und eine Diode, das wars.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

wie muss man das Pythonscript verwenden? Geht das aus AS heraus oder 
muss man dafür immer in die Konsole wechseln?
Wie würde sich die Hardwarelösung verhalten?
Taucht hier ein auswählbarer Programmer in AS auf?
Für mein Verständnis wäre es schön wenn meine obigen Fragen beantwortet 
werden könnten. Dann kann ich besser entscheiden was mehr Sinn macht.

von Wilhelm M. (wimalopaan)


Lesenswert?

Veit D. schrieb:
> Hallo,
>
> wie muss man das Pythonscript verwenden?
1
~/Projekte/updi/pyupdi/pyupdi.py -d mega4809 -c /dev/ttyUSB2  -f test90.hex

> Geht das aus AS heraus oder

keine Ahnung. Das verwende ich nicht.

> muss man dafür immer in die Konsole wechseln?
> Wie würde sich die Hardwarelösung verhalten?

Verstehe ich nicht. UPDI ist eine halbduplex serielle Verbindung zu 
einem dedizierten Pin (updi/reset).

> Taucht hier ein auswählbarer Programmer in AS auf?

s.o.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Der Programmer läuft anscheinend auf dem Raspi oder an einer seriellen 
PC-Schnittstelle und erwartet ein "Intel HEX file to flash" wie im 
Programmtext steht. Ich sehe keine Emulation irgendeines bekannten 
Programmers im Text
https://github.com/mraardvark/pyupdi/blob/master/pyupdi.py

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ihr beide redet vom pyupdi.py Script. Mir ist jetzt klar das man dazu 
immer die Konsole verwenden muss. Soweit okay.

Am Anfang habe ich von der Hardwarelösung geredet. Also mit 
programmierten ATmega328P. Davor muss auch ein USB-Serial-Wandler. Hier 
ist meine Frage wie verhält der sich Softwaremäßig? Taucht hier ein 
auswählbarer Programmer in AS auf? Der muss laut meinem Verständnis 
irgendwas emulieren.

Was ich eigentlich nicht möchte oder vermeiden wollte ist, in AS 
programmieren und zum flashen in die Konsole wechseln. Ist mir auf Dauer 
zu umständlich und Fehleranfällig.

von Dieter R. (drei)


Lesenswert?


von Veit D. (devil-elec)


Lesenswert?

Hallo,

wenn mein Problem mit AS7 geklärt ist kann ich hier weitermachen. Vorher 
macht das keinen Sinn. Eine kurze Recherche zum PICkit4 ergab jedoch 
nichts Eindeutiges. Es ist nicht bekannt oder nicht sicher das es mit 
den neuen µC mit UPDI funktioniert.

von Dieter R. (drei)


Lesenswert?

Veit D. schrieb:

> Es ist nicht bekannt oder nicht sicher das es mit
> den neuen µC mit UPDI funktioniert.

Wenn du den verlinkten Thread gelesen hättest, wüsstest du, was ich dazu 
geschrieben habe.

von Framulestigo (Gast)


Lesenswert?

Hab auch schon mal nachgedacht, mir so was zu bauen. Der Eigenbau hätte 
für mich den Vorteil: Ich könnte den Progger direkt mit nem 
Bluetooth-Modul ausstatten und hätte kein Kabel mehr (ist unpraktisch, 
wenn die Zielschaltung fahren kann).

Wenn ich das so richtig verstehe, kommuniziert der verlinkte Quellcode 
mit AVRDude. Das Programm wiederum beinhaltet CommandLine-Optionen, also 
müsste man im AS7 wohl etwas für das AVRDude in die PostBuild-Events 
eintragen?!?

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Sorry, hatte ihn überflogen, jetzt deine Antwort darin richtig gelesen. 
Okay Danke. Hatte jedoch auf der Microchipseite zum Teil die 
Beschreibung gelesen, dort steht dazu nichts drin. Ich habe auch wie 
gesagt z.Z. andere Sorgen mit AS. Das Problem hier ist nachgelagert.

Vielleicht kannst du mir helfen wie ich AS7 mit aktuellen avr-gcc-9.1 
überredet bekomme C++ für die neuen µC kompilieren zu können?

: Bearbeitet durch User
von Dieter R. (drei)


Lesenswert?

Veit D. schrieb:

> Vielleicht kannst du mir helfen wie ich AS7 mit aktuellen avr-gcc-9.1
> überredet bekomme C++ für die neuen µC kompilieren zu können?

Leider keine Ahnung. Ich verwende C, damit gibt es (fast) keine 
Probleme, außer aktuell dem Problem, dass der Linker manchmal mit 
Fehlermeldung aussteigt. Lösung ist da, die Optimierungs-Optionen zu 
ändern. Wenn man dann den Code weiter entwickelt und der Linker wieder 
aussteigt, einfach andere Optionen, dann mag er wieder. Das wird dir 
aber vermutlich nicht helfen.

Zum Programmer: es soll bei Microchip eine Liste geben, welche Devices 
offiziell unterstützt werden und welche noch Beta sind. Danach habe ich 
aber noch nicht gesucht.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Okay, Danke dir, ich kümmere mich darum wenn "AS" gelöst ist.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

bin weitergekommen. Mit der Windows Kommandozeile klappt das erstmal. 
Verschiedene Blinktimings stimmen auch.
1
>> was bis jetzt funktioniert
2
3
# Python 3.7 installiert. Installationspfad ist etwas merkwürdig, keine Ahnung warum.
4
# pyupdi Tool liegt bei mir in C:\avrToolchain\
5
6
# >> Windows Kommandozeile << (geht vielleicht auch in der Python Shell)
7
8
# fehlende Module wie folgt nachinstallieren, Pfade anpassen
9
> C:\Users\devil\AppData\Local\Programs\Python\Python37\Scripts\pip.exe install intelhex pylint pyserial
10
11
# .hex File flashen (mit Infoausgabe Option -v), Pfade anpassen
12
> C:\Users\devil\AppData\Local\Programs\Python\Python37\python.exe C:\avrToolchain\pyupdi\pyupdi.py -d mega4808 -c COM5 -f C:\Users\Worker\Documents\Led_Example_ATmega4808.hex -v

Was nicht geht ist die Kommandozeilenoption in Atmel Studio. Wobei das 
angeblich funktionieren soll.
Project -> Properties -> Tool -> select Custom Programming Tool
'Command'
1
C:\Users\devil\AppData\Local\Programs\Python\Python37\python.exe C:\avrToolchain\pyupdi\pyupdi.py -d mega4808 -c COM5 -f $(OutputDirectory)$(OutputFileName).hex

Mit F5 erhalte ich eine Infomeldung das es mit Debugging nicht 
funktioniert.
Wähle ich Debug -> Start without Debugging kompiliert es überträgt aber 
nicht.

Was mache ich falsch?

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich habe nun einen ATmega328PB mit dem jtag2updi Code geflasht. Ich habe 
in der main.cpp F_CPU 8MHz eingetragen und in der sys.cpp alles rumd um 
das PRR Register korrigiert. Testweise auch das zweite PRR1 Register 
hinzugefügt. Kompiliert fehlerfrei. Dann alles nach Schaltplan 
angeklemmt. https://github.com/ElTangas/jtag2updi

Aber avrdude scheitert schon am ersten Test mit der Meldung

> jtagmkII_getsync(): sign-on command: status -1

USB Serial Adapter ist ein Profilic.

Kommando lautet
> avrdude -c jtag2updi -P com5 -p m328pb

Klemme ich meinen mkII an reagiert avrdude wie es soll.
> avrdude -c avrispmkII -p m328pb -v

Ich weiß mittlerweile das der "µC updi Adapter" überflüssig ist, weil 
auch damit muss man die Kommansozeile bemühen. Das mit Python ist schon 
komfortabler und einfacher. Ich wollte es aber wenigstens probieren, 
wenn möglich erfolgreich.

Gibt es jemanden der mit Tipps gegen könnte?

von Jan B. (do9jhb)


Lesenswert?

H.Joachim S. schrieb:
> Falls es ums Geld geht: bei Microchip direct gibts immer wieder mal
> Aktionen, ich meine ich hätte für den AT ATMEL-ICE full kit 50€ bezahlt.
> Und finde den ziemlich gut.

Mittlerweile gibt es von Microchip den MPLAB Snap 
(,https://www.microchipdirect.com/product/search/all/PG164100) der 
kostet ca. 13€  und kann neben anderen Protokollen auch UPDI. Nachteilig 
ist dass der nicht Atmel Studio unterstützt, sondern das neue MPLAB X 
(von Microchip) braucht, und teilweise werden scheinbar noch nicht alle 
AVRs unterstützt...

Außerdem dürfte der ähnlichen Probleme haben wie der PICKit 4 (das ist 
quasi der kleine Bruder davon).

von Veit D. (devil-elec)


Lesenswert?

Hallo,

jetzt klappt das mit Python auch in Atmel Studio unter Custom 
Programming Tool. Man muss auch dort den Pfad zum .hex explizit angeben. 
Findet er nicht alleine, was ich fälschlicherweise annahm.

Bsp.
1
C:\Users\devil\AppData\Local\Programs\Python\Python37\python.exe C:\avrToolchain\pyupdi\pyupdi.py -d mega4808 -c COM5 -f "C:\Users\devil\Documents\Atmel Studio\7.0\WorkSpace_ATmega4808\Led_Example_ATmega4808\Led_Example_ATmega4808\Release\Led_Example_ATmega4808.hex" -v

Bedeutet die Kommandozeile ist immer gleich egal wo man die eingibt. Ob 
Terminal, in einer .bat oder in dem "AS Customfenster". Damit kann man 
nun auch aus AS heraus fast wie gewohnt flashen.

Damit hat sich das mit dem µC als Programmer nun auch erledigt.

Vielleicht helfen die Zeilen der Nachwelt.  :-)

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich hätte da noch eine Frage zum UDPI flashen. Kann es sein das mit den 
"billig" Methoden keine echte Überprüfung des Flashvorgangs stattfindet? 
Ich sehe im Datenlogger keinen separaten Schreibvorgang und 
nachfolgenden Lesevorgang. Die Schreibdaten gelangen 1:1 vom Tx zum Rx 
Pin und zurück. Bei der Pythonmethode mittels Widerstand kann das nur so 
sein.

Wie das beim "El Tangas µC" ist weiß ich nicht.

Macht ihr euch darüber keine Sorgen? Ich meine auch ein 
Hobbyprogrammierer möchte nicht einen kaputten µC flashen und bekommt es 
nicht mit und wundert sich erstmal das der µC nicht das macht was er 
soll.

Die Programmer wie ICE lesen doch bestimmt nach dem schreiben beim UDPI? 
Macht ja mein AVRmkII auch für ISP.

von Lutz S. (lutzs)


Lesenswert?

Falls es doch mehr ums programmieren als ums basteln geht: ich verwende 
dieses Board mit dem 817 (unter 10 Euro), einfach den UDPI-Pin 
durchgetrennt und zum eigenen Projekt geleitet:

https://www.elektormagazine.de/news/review-attiny817-xplained-mini

Wenn man dann noch dem Atmel Studio sagt dass es alle Boards zur Auswahl 
anzeigen soll kann man damit auch anderes als den 817 über UDPI 
programmieren.

: Bearbeitet durch User
von Lutz S. (lutzs)


Lesenswert?

Natürlich soll das beide Male UPDI heissen ...

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

Selbstbau lohnt nicht,

momentan der MPLAB Snap mit 50% Rabatt:

https://www.microchipdirect.com/product/DevToolDeals

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Sascha, falls du auf den MPLAB® Snap In-Circuit Debugger/Programmer 
abzielst, der soll leider nicht in Atmel Studio funktionieren.

Lutz, klingt gut. Kann man zwischen 3,3V und 5V für den Ziel µC 
umschalten? Theoretisch müßte das demzufolge mit meinem "ATmega4809 
Curiosity Nano" auch funktionieren. Wo genau schaltest du in AS die 
Auswahl frei? Oder meinst du in den Projekteigenschaften die 
Device-Auswahl?

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

1
Sascha, falls du auf den MPLAB® Snap In-Circuit Debugger/Programmer 
2
abzielst, der soll leider nicht in Atmel Studio funktionieren.

Ja, aber funktioniert in MPLABX, GCC für AVR gibt es dafür auch.

von Lutz S. (lutzs)


Lesenswert?

@Veit: Habe bisher mit dem Board nur mit 5 Volt gearbeit, über den 
Jumper J100 kann man es wohl aber auch auf 3,3 Volt für das Target 
umstellen. (Punkt 4.1 in dem PDF)
http://ww1.microchip.com/downloads/en/DeviceDoc/50002657A.pdf

Im Atmel Studio lässt sich die Auswahlmöglichkeit anderer Controller 
über 'Tools' 'Options' 'Tools' 'Tool Settings' 'Hide unsupported 
devices' = False einstellen.

Danach habe ich eine Weile gesucht, aber dann klappte es. Habe bisher 
damit den 1614 und den 3217 programmiert und auch debuggt. Und Rx/Tx 
über den virtuellen seriellen Port hat man auch zur Verfügung.

Mit weniger Aufwand geht es wohl kaum.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Lutz, dass liest sich hervorragend. Danke.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

kurz vorm bestellen packte mich nochmal der Ergeiz den "El Tangas" 
jtag2updi Programmer zum laufen zubekommen. Was heute auch 
funktionierte. Da ich weiß das er ein Verify macht konnte ich die 
Datenübertragung (Datalogger) mit der vom pyupdi vergleichen und kann 
sagen, auch der pyupdi macht ein Verify. Frage ist damit selbst 
beantwortet.

Der jtag2updi hat den Vorteil er ist avrdude kompatibel und man muss 
kein Python installieren welches man ansonsten nie benötigt.
Das soll jetzt Lutz Tipp mit dem ATtiny817 Xplained Mini nicht 
schmälern.
Jetzt hat man die Qual der Wahl.
Alles wird gut.  :-)

von lutzs (Gast)


Lesenswert?

Veit D. schrieb:
> Das soll jetzt Lutz Tipp mit dem ATtiny817 Xplained Mini nicht
> schmälern.

Da bin ich überhaupt nicht empfindlich, viele Wege führen nach Rom.

Ich lese immer interessiert mit wie andere ein Problem lösen.

von Veit D. (devil-elec)


Lesenswert?

Hab'scha Glück gehabt.  :-)

Deswegen verrate ich dir noch eine Kleinigkeit, vielleicht kann man das 
einmal gebrauchen. Die Ellenlangenpfade kann man abkürzen und den 
Eintrag in "Custom Programming Tool" benötigt man auch nicht mehr. Darin 
habe ich die abgekürzten Pfade nicht zum laufen bekommen.

Man kann sich in AS unter > Tools > External Tools...
mehrere Einträge anlegen. Ich habe mir zum rumspielen 2 angelegt.
1
Title: FlashAvrdudeUPDI
2
Command: C:\avrToolchain\avrdude\avrdude.exe
3
Arguments: -c jtag2updi -P com5 -p m4808 -v -U flash:w:"$(ProjectDir)Release\$(TargetName).hex":i
4
5
und "Use Output Window" aktivieren

und
1
Title: FlashPythonUPDI
2
Command: C:\Users\Devil\AppData\Local\Programs\Python\Python37\python.exe
3
Arguments: C:\avrToolchain\pyupdi\pyupdi.py -d mega4808 -c COM5 -f "$(ProjectDir)Release\$(TargetName).hex" -v
4
5
und "Use Output Window" aktivieren

avrdude und python kann man noch in die Systemumgebungsvariable 
eintragen.

Ich denke damit ist das Thema erstmal erschöpfend ausgereizt.
Danke fürs zuhören.   ;-)

von Merci (Gast)


Lesenswert?

Hallo Devil elec,
merci ... besten Dank, deine updi Beiträge u. Anliegen sind alle sehr 
sinnvoll, praxisnah und   normalo brauchbar  !!!

Und nicht so verschrobben wie bei manchen anderen hier die für jeden 
Baustein andere IDE s und  dazu wieder andere Programmer empfehlen. 
Diese Inflation von Pseudoexpertise geht mir ziemlich auf den Senkel, 
weil man irgendwann nur noch im Datenschrott watet.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

oh, dass freut mich, wenn meine Texte jemanden weiterhelfen. Danke.

von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Hallo,

wenn hier mindestens Einer liest, dann stelle ich meinen ersten Adapter 
vor. Das ist ein universeller USB-Serial Adapter. Zusatzlich stellt er 
per Jumper das UPDI Signal und einen DTR Impuls zur Verfügung. Mit dem 
Board und Pyhton kann man "UPDI µC" programmieren. Oder man programmiert 
mittels Arduino IDE und dem DTR "Reset" Impuls "herkömmliche" ATmegas 
die einen Bootloader draufhaben. Im Großen und Ganzen 3 Werkzeuge auf 
einem Board. Falls es jemand 1:1 nachbauen möchte kann ich die passenden 
Dateien rausgeben. Es sind Target 3001 Dateien. Die Platine ist 23x75mm 
ohne USB Stecker gemessen. An meinem Monitor passen 2 nebeneinander in 
die USB Buchsen.

Der zweite Adapter mit ATmega328PB ist noch unbestückt. Damit kann man 
dann mittels avrdude nach Art "El Tangas" flashen.

von Framulestigo (Gast)


Angehängte Dateien:

Lesenswert?

Es lesen mindestens zwei...

... eine ganz einfache kabellose Lösung nach EL Tangas, die sich aus der 
Zielschaltung versorgt. Das geht zwar nur bis 3,3V (darunter müsste man 
das HC06-Modul einzeln versorgen), reicht bei mir aber für 95% der 
Anwendungen.

Danke nochmal für's Prechecking.

von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Hallo,

ist auch eine praktische Lösung, mußte keine Kabel stecken.   :-)

Hatte heute Zeit zum bestücken. Anbei der avrdude kompatible jtag2updi 
Adapter. Kann man auch als USB Serial Wandler und Arduino Programmer 
verwenden. Das solls nun erstmal hier gewesen sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.