mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Veit D. (devil-elec)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Dann habe ich wohl Glück gehabt.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Veit D. schrieb:
> Hallo,
>
> wie muss man das Pythonscript verwenden?
~/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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert

von Veit D. (devil-elec)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von Veit D. (devil-elec)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bin weitergekommen. Mit der Windows Kommandozeile klappt das erstmal. 
Verschiedene Blinktimings stimmen auch.
>> was bis jetzt funktioniert

# Python 3.7 installiert. Installationspfad ist etwas merkwürdig, keine Ahnung warum.
# pyupdi Tool liegt bei mir in C:\avrToolchain\

# >> Windows Kommandozeile << (geht vielleicht auch in der Python Shell)

# fehlende Module wie folgt nachinstallieren, Pfade anpassen
> C:\Users\devil\AppData\Local\Programs\Python\Python37\Scripts\pip.exe install intelhex pylint pyserial

# .hex File flashen (mit Infoausgabe Option -v), Pfade anpassen
> 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'
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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.
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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Natürlich soll das beide Male UPDI heissen ...

von Sascha F. (sascha_focus) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Selbstbau lohnt nicht,

momentan der MPLAB Snap mit 50% Rabatt:

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

von Veit D. (devil-elec)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht lesenswert
Sascha, falls du auf den MPLAB® Snap In-Circuit Debugger/Programmer 
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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Lutz, dass liest sich hervorragend. Danke.

von Veit D. (devil-elec)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.
Title: FlashAvrdudeUPDI
Command: C:\avrToolchain\avrdude\avrdude.exe
Arguments: -c jtag2updi -P com5 -p m4808 -v -U flash:w:"$(ProjectDir)Release\$(TargetName).hex":i

und "Use Output Window" aktivieren

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

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.   ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.