Forum: Mikrocontroller und Digitale Elektronik ATxmega128A4U per PDI programmieren funktioniert nicht.


von Leo T. (tipstricks)



Lesenswert?

Hey Zusammen,
Ich bin am Rande der Verzweiflung angekommen...
Ich habe vor einen ATxmega128A4U-AU mit einem Bootloader und einer 
Firmware zu programmieren, aber nichts funktioniert.
Hier im Forum konnte ich leider nichts passendes für mein Problem 
finden, also seid nachsichtig mit mir :)
Ebenso bin ich noch relativ neu in dem Thema, also könnte es auch eine 
sehr simple Lösung geben, die ich schlichtweg übersehe.

Kurz zur Erklärung.
Ich habe eine eigene Platine entworfen und herstellen lassen. Darauf 
sitzt ein ATxmega128A4U-AU als Hauptchip.
Der Chip ist frisch vom Hersteller und daher "leer"...
Nun habe ich mir von Diamex einen AVR Programmer besorgt , der PDI 
unterstützt. 
(https://www.diamex.de/dxshop/Diamex-AVR-Prog-Programmer-fuer-ISP-PDI-TPI)
Der Programmer wird vom Windows PC erkannt und auch von Atmel Studio 7 
als AVRISP mkII...

Als Bild angehängt seht ihr meine Schaltung. Rot eingekreist die Pins, 
die an dem Programmer hängen.
Der PDI_Clock des ATxmega geht (über einen 10KOhm Widerstand der diesen 
auf 3,3V zieht), direkt an den CLK Pin meines Programmers.
Der PDI Pin des ATxmega geht ohne weiteres an den DATA Pin des 
Programmers.
Und GND und 3.3v natürlich auch direkt...

Der Programmer ist auf PDI und 3.3v eingestellt.

Wenn ich jetzt aber versuche über Atmel Studio eine Verbindung zu dem 
Chip herzustellen (z.B. die Device Signature oder Target Voltage 
abzufragen) dann leuchtet die Processing LED auf dem Programmer und 
wenig später gibt Atmel eine Fehlermeldung raus, dass keine Verbindung 
zu dem IC hergestellt werden konnte...

Ich habe schon diverse Sachen versucht, Programme gewechselt etc., aber 
es will nicht.
Langsam glaube ich fast, dass etwas mit meiner Platine nicht stimmt. 
Kann der 10KOhm Widerstand das Problem verursachen?!

Muss vielleicht irgendein Pin auf HIGH um den ATxmega in einen 
programmier Modus zu befördern?

Können andere Bauteile auf der Platine den Programmiervorgang hindern? 
Eigentlich doch nicht wenn ich direkt an die Pins von dem IC gehe...

Ich will doch nur ne verdammte .hex und .eep flashen....

Ich hoffe jemand von euch hat damit Erfahrung und kann mir ein paar 
Tipps geben...

Einen schönen Abend Euch, schonmal Vielen Dank und einen guten Rutsch 
ins neue Jahr,
Leo

von Ben S. (bensch123)


Lesenswert?

Was soll denn VIC und GNDIC sein?

von Leo T. (tipstricks)


Lesenswert?

Ben S. schrieb:
> Was soll denn VIC und GNDIC sein?

Das sind nur die Pins zu dem Charging Controller bzw. der 
Hauptstromversorgung. Ich wollte dort einen direkten Draht legen. Sollte 
für das programmieren aber nicht wichtig sein...

von Ben S. (bensch123)


Lesenswert?

Ich hoffe dass du dort auch Spannung angelegt hast.
Und ich hoffe auch, dass deine Schaltung wie gezeigt nicht vollständig 
ist.

: Bearbeitet durch User
von Leo T. (tipstricks)


Lesenswert?

Ben S. schrieb:
> Ich hoffe dass du dort auch Spannung angelegt hast.

Na klar. Der Programmer ist mit seinen 3.3v und dem GND angeschlossen. 
Siehe angehängte Bilder...

von Stefan F. (Gast)


Lesenswert?

Leo T. schrieb:
> Muss vielleicht irgendein Pin auf HIGH um den ATxmega in einen
> programmier Modus zu befördern?

Nicht dass ich wüsste.

Hast du mit deinem Programmieradapter jemals einen AVR via PDI 
erfolgreich programmiert?

von Ben S. (bensch123)


Lesenswert?

Zeige dochmal Bilder von deinem ganzen Schaltplan und Layout ..

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Die Abfrage der Target Voltage müsste immer gehen, selbst wenn überhaupt 
keine Verbindung besteht.

von Leo T. (tipstricks)


Lesenswert?

Stefan ⛄ F. schrieb:
> Leo T. schrieb:
>> Muss vielleicht irgendein Pin auf HIGH um den ATxmega in einen
>> programmier Modus zu befördern?
>
> Nicht dass ich wüsste.
>
> Hast du mit deinem Programmieradapter jemals einen AVR via PDI
> erfolgreich programmiert?

Nein habe ich nicht...

von Leo T. (tipstricks)



Lesenswert?

Ben S. schrieb:
> Zeige dochmal Bilder von deinem ganzen Schaltplan und Layout ..

Na klar... Mal sehen ob man daraus schlauer wird...

von Leo T. (tipstricks)


Lesenswert?

Stefan ⛄ F. schrieb:
> Die Abfrage der Target Voltage müsste immer gehen, selbst wenn
> überhaupt
> keine Verbindung besteht.

Interessant! Wirst du aus meinem gesamten Schaltplan schlauer (eben 
gepostet)?!

von Ben S. (bensch123)


Lesenswert?

Ich habe Bauchweh bzgl. Pin 9/38 ... hängt da zumindest eine Batterie 
dran beim programmieren? GNDIC ist vermutlich nirgends mit GND verbunden 
oder?

: Bearbeitet durch User
von Leo T. (tipstricks)


Lesenswert?

Ben S. schrieb:
> Ich habe Bauchweh bzgl. Pin 9/38 ...

Aber die haben nun ja gar nichts mit dem Programmieren zu tun! Darüber 
lege ich nur die 3V der Batterie an... Muss die Batterie beim 
Programmieren ran? Ich dachte der Programmer versorgt den IC?
GND IC hängt an dem - Pol der Batterie.

: Bearbeitet durch User
von Ben S. (bensch123)


Lesenswert?

Leo T. schrieb:
> Aber die haben nun ja gar nichts mit dem Programmieren zu tun!

Du solltest aber alle Versorgungspins des IC mit Spannung versorgen und 
alle GND miteinander verbinden. Pin 8/18/30/38 gehören miteinander 
Verbunden und an alle 9/19/21/39 3.3V!

: Bearbeitet durch User
von Leo T. (tipstricks)


Lesenswert?

Ben S. schrieb:
> Leo T. schrieb:
> Aber die haben nun ja gar nichts mit dem Programmieren zu tun!
>
> Du solltest aber alle Versorgungspins des IC mit Spannung versorgen und
> alle GND miteinander verbinden.

Danke! Ich checke das mal...

von Mike J. (emjey)


Lesenswert?

"The RESET pin includes an internal pull-up resistor."

Probiere es mal ohne den 10kOhm Widerstand.
Ich hatte 100kOhm genutzt.

Dass alle Vcc und GND-Pins verbunden sein müssen, das sollte eigentlich 
klar sein, auch wenn damit scheinbar nur der Analogteil versorgt wird.

von Leo T. (tipstricks)


Lesenswert?

Ben S. schrieb:
> Leo T. schrieb:
> Aber die haben nun ja gar nichts mit dem Programmieren zu tun!
>
> Du solltest aber alle Versorgungspins des IC mit Spannung versorgen und
> alle GND miteinander verbinden. Pin 8/18/30/38 gehören miteinander
> Verbunden und an alle 9/19/21/39 3.3V!

@bensche123 Du bist mein HELD!!!! Es funktioniert 👍👍👍👍 Ich freue mich 
unglaublich! Manchmal können die Fehler auch simple sein 😅
Atmen Studio spuckt jetzt alles aus 👍👍👍👍
Mal sehen ob das flashen klappt. Einen schönen Abend!

von Ben S. (bensch123)


Lesenswert?

Leo T. schrieb:
> @bensche123 Du bist mein HELD!!!!

Dass ich das hier noch erleben darf ...
Wie sich das aber mit deiner Ladeschaltung verträgt weiß ich jetzt 
nicht.

: Bearbeitet durch User
von au weia (Gast)


Lesenswert?

... und wie üblich halt mal wieder an den Abblock-Kondensatoren
für den ATXMega gespart. Eigentlich sollte den Entwickler dafür
der Blitz treffen ...

Ja, die Devise lautet: sparen, koste es was es wolle.

Denn Abblock-Kondensatoren sind ja reiner Luxus, braucht es
sowieso nicht.

von Ben S. (bensch123)


Lesenswert?

au weia schrieb:
> ... und wie üblich halt mal wieder an den Abblock-Kondensatoren
> für den ATXMega gespart. Eigentlich sollte den Entwickler dafür
> der Blitz treffen ...

Ich zähle im Schaltplan 6 Abblockondensatoren. Also sind diese 
vermutlich drin.

von Mike J. (emjey)


Lesenswert?

Ben S. schrieb:
> Ich zähle im Schaltplan 6 Abblockondensatoren. Also sind diese
> vermutlich drin.

Er hat sich wahrscheinlich nur die beiden Bilder aus dem ersten Beitrag 
angeschaut und da ist keiner vorhanden.

von au weia (Gast)


Lesenswert?

Mike J. schrieb:
> und da ist keiner vorhanden.

Sehr richtig!

von au weia (Gast)


Lesenswert?

Mike J. schrieb:
> Bilder aus dem ersten Beitrag

Intelligenterweise ist ein Kondensator zum Prozessor zugeordnet
eingezeichnet, aber die Anschlusse dazu anderen ICs zugeordnet.

Also möglichst kompliziert und irreführend, genau passend fürs
Forum hier, damit noch ein paar Salamischeiben kommen können.

von Leo T. (tipstricks)


Lesenswert?

Mike J. schrieb:
> "The RESET pin includes an internal pull-up resistor."
>
> Probiere es mal ohne den 10kOhm Widerstand.
> Ich hatte 100kOhm genutzt.
>
> Dass alle Vcc und GND-Pins verbunden sein müssen, das sollte eigentlich
> klar sein, auch wenn damit scheinbar nur der Analogteil versorgt wird.

Hi Mike, danke auch nochmal für deinen Tipp. Ich habe den 10K mal 
rausgenommen aber keinen Unterschied bemerken können.
Da du dich aber anscheinend mit den ATxmegas auskennst würde ich dir 
gerne noch eine Frage stellen.

Ich habe es jetzt geschafft, meine Firmware .hex auf den ATxmega zu 
flashen. Als ich dann aber versuchte den EEPROM .eep zu flashen hat sich 
mein Programmer aufgehängt und der ATxmega gab keine Rückmeldung mehr...
Das passiert jedes Mal mit dem EEPROM...

Erst wenn ich den ATxmega danach für ein paar Sekunden per USB an meinen 
PC angeschlossen habe, lässt sich der ATxmega wieder per Programmer 
erreichen...
Hast du eine Idee?!

Ich habe für meine Application auch einen separaten Bootloader, den ich 
jetzt zuvor nicht aufgespielt hatte. Kann es damit zusammenhängen?

Wäre das die Flash-Reihenfolge:
Bootloader
.hex
.eep

Entschuldige bitte die vielen Fragen! Es würde mir wirklich viel 
weiterhelfen, wenn du mich dabei unterstützt 🙏

Viele Grüße

: Bearbeitet durch User
von Mike J. (emjey)


Lesenswert?

Leo T. schrieb:
> Als ich dann aber versuchte den EEPROM .eep zu flashen hat sich
> mein Programmer aufgehängt und der ATxmega gab keine Rückmeldung mehr...

Als Programmer nutze ich einen USBasp mit PDI.
https://github.com/nieldk/USBASP-PDI

Hab da keine Probleme.

Vielleicht schaust du einfach mal ab wo dein Programmer versucht die 
.hex oder .eep Datei hinschreiben möchte.

Theoretisch solltest du nur den Bootloader flashen müssen und mit dem 
Bootloader kannst du dann hex und eep flashen.

Wenn das nicht funktioniert, dann versucht dein Bootloader die hex/eep 
an eine falsche Adresse zu schreiben.

> Ich habe für meine Application auch einen separaten Bootloader,
> den ich jetzt zuvor nicht aufgespielt hatte. Kann es damit zusammenhängen?

Du nutzt also nicht den Original-Bootloader von Atmel?
Bist du sicher dass dieser richtig funktioniert?

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.