Hallo zusammen!
ich beschäftige mich schon seit einigen Jahren immer mal wieder mit den
Themen Mikrocontroller etc. und setze dabei immer wieder auf die
Arduino-Plattform. Für ein neues Projekt von mir und weil ich mich an
den Bereich SMD-Löten rantrauen wollte, habe ich mir eine Platine
designed und diese fertigen lassen. Die Arbeit soll ein ATmega328P
verrichten, den ich als TQFP-Package habe. So weit so gut. Da SMD fällt
dieses Mal dann natürlich das ganze "uC auf dem Breadboard über einen
Arduino als ISP flashen" weg, weswegen ich die ISP-Pins herausgeführt
habe. Nun bekomme ich das Ding aber einfach nicht angesprochen. In der
Konsole sehe ich immer nur "Invalid Device Signature" mit Signaturen,
die für mich nach falscher Verdrahtung aussehen. Ich benutze die
MiniCore-Library und einen Arduino als ISP, aber mit einem AVRISP ist es
das gleiche Bild. Die Platine habe ich nun auch schon 5 Mal nachgelötet
und durchgemessen, das sieht mir alles okay aus. Daher die Frage: Hab
ich irgendetwas übersehen? Kann das überhaupt so funktionieren oder war
ich zu naiv? Ich kann vor dem Flaschen (bzw. "Uploaden") ja auch die
Clock-Speed einstellen. Hier hatte ich den internen 8MHz-Oszillator
ausgewählt. Auf dem Board habe ich einen 16-MHz-, aber so weit ich das
verstanden habe, kommen die vom Band mit dem internen konfiguriert. Ich
habe im letzten Schritt auch den 16MHz-Quarz wieder abgelötet, ohne
Veränderung. Vielleicht hat ja jemand eine gute Idee oder sieht, ob in
der Schaltung schon irgendwas nicht stimmt. Ich bin für jeden Tipp
dankbar!
Viele Grüße!
//Hier noch der Output von avrdude
Eiserne Regel von mir für mich: Bei der ersten Programmierung eines
bisher unbekannten uCs (Atmel Mega xyz), FINGER WEG VON DEN FUSES.
Ich vermute, die hast beim ersten Versuch so verstellt, daß er nicht
mehr mit dir redet. Externen Takt anschliessen und nochmal versuchen.
[Edit] Was ganz nett kommt, ist ein C vom Reset auf GND (100nF)
Crazy H. schrieb:> Eiserne Regel von mir für mich: Bei der ersten Programmierung eines> bisher unbekannten uCs (Atmel Mega xyz), FINGER WEG VON DEN FUSES.> Ich vermute, die hast beim ersten Versuch so verstellt, daß er nicht> mehr mit dir redet. Externen Takt anschliessen und nochmal versuchen.>> [Edit] Was ganz nett kommt, ist ein C vom Reset auf GND (100nF)
Danke für deine Antwort!
Klar, das kann gut sein, dass ich mir da schon was verhunzt habe. Hatte
als ich den 16MHz-Quarz noch auf dem Board hatte, auch schon alles
mögliche probiert, ohne Erfolg...
Super - danke für den Tipp mit dem Kondensator - werde ich in Zukunft
berücksichtigen!
Jim M. schrieb:> Christoph schrieb:>> Vtarget : 0.0 V>>> Ohne Spannung läuft kein Controller.
Wo kommt der Wert denn überhaupt her? Ist das irgendeine Fuse oder kommt
das vom uC sebst zurück? +5V liegt liegt auf der Platine auf jeden Fall
an.
Die Signatur des IC ist falsch, sagt AVR dude ja. Sicher das es sich um
einen ATmega328P handelt und nicht um einen ATmega328PB z.B.? Die haben
eine andere Signatur und dann geht es nicht. Lösung dann: MiniCore
installieren und den richtigen Chip wählen.
Wollte ich noch anhängen/editieren, aber da war wer schneller .... wenn
der wirklich Spannung hat und er nicht den DOF (death of fuses)
gestorben ist, ein Mega328 ist nicht das gleiche wie ein Mega328P,
zumindest was die Signatur betrifft.
..... schon wieder wer schneller :-D das Alter .... ja den PB gibts auch
noch.
Ben K. schrieb:> Die haben> eine andere Signatur und dann geht es nicht.
Na ja, bei den "erkannten" Signaturen wird es wohl keine Verwechslung
sein, sondern tatsächlich kein Signal.
> avrdude: device signature = 0xffffff (probably .xmega) (retrying)> avrdude: device signature = 0xff00ff
Oliver
Jim M. schrieb:> Christoph schrieb:>> Vtarget : 0.0 V>> Ohne Spannung läuft kein Controller.
Das gehört zur Konfiguration des echten STK500 und ist bei ISP
irrelevant.
Stimmt, hab ich übersehen. Mmmmh.
Oliver S. schrieb:> Ben K. schrieb:>> Die haben>> eine andere Signatur und dann geht es nicht.>> Na ja, bei den "erkannten" Signaturen wird es wohl keine Verwechslung> sein, sondern tatsächlich kein Signal.>>> avrdude: device signature = 0xffffff (probably .xmega) (retrying)>> avrdude: device signature = 0xff00ff>> Oliver
Hmmm schrieb:> Das gehört zur Konfiguration des echten STK500 und ist bei ISP> irrelevant.
Aber wird bei ISP nicht auch die Betriebsspannung gemessen, damit die in
einem Bereich liegt, in dem der Flash beschrieben werden kann?
Ben K. schrieb:> Die Signatur des IC ist falsch, sagt AVR dude ja. Sicher das es sich um> einen ATmega328P handelt und nicht um einen ATmega328PB z.B.? Die haben> eine andere Signatur und dann geht es nicht. Lösung dann: MiniCore> installieren und den richtigen Chip wählen.Crazy H. schrieb:> Wollte ich noch anhängen/editieren, aber da war wer schneller ....> wenn> der wirklich Spannung hat und er nicht den DOF (death of fuses)> gestorben ist, ein Mega328 ist nicht das gleiche wie ein Mega328P,> zumindest was die Signatur betrifft.
Habe mal Fotos von den Megas gemacht, die ich vom Chinesen bekommen
habe. Das ist ein 328PU-TH (?)... Habe aber auch noch 2 andere P-AU im
Schrank. Könnte es wirklich daran liegen? Die MiniCore Library bietet
mir die Optionen 328P/328PA, 328/328A und 328PB. Mit keiner klappts, hab
die schon durchprobiert.
H. H. schrieb:> Christoph schrieb:>> Habe mal Fotos von den Megas gemacht, die ich vom Chinesen bekommen>> habe.>> Du hast dir Fälschungen andrehen lassen.
Ja schaut so aus, der U-TH wird auch als QFN verkauft und das kann nicht
sein, daß es die gleiche Bezeichnung für unterschiedliche Gehäuse gibt.
https://forum.allaboutcircuits.com/threads/what-is-atmega328p-u-th.189896/
Hallo,
messe mal bitte direkt an den Controllerpins, nicht Pad sondern Pin,
ohne Programmieradapter nach ob die 5V anliegen. Denn wenn Vtarget 0V
meldet geht es nicht weiter. Was hast du für einen Programmieradapter?
Ein Programmieradapter dient in der Regel nicht dafür den Controller zu
versorgen.
Mit meinem avrISPmkII mache ich für einen ersten Verbindungstest nur
avrdude -c avrispmkII -p m328p -v
Wenn alles okay ist wird Signatur und Vtarget angezeigt.
H. H. schrieb:> Christoph schrieb:>> Habe mal Fotos von den Megas gemacht, die ich vom Chinesen bekommen>> habe.>> Du hast dir Fälschungen andrehen lassen.Crazy H. schrieb:> H. H. schrieb:>> Christoph schrieb:>>> Habe mal Fotos von den Megas gemacht, die ich vom Chinesen bekommen>>> habe.>>>> Du hast dir Fälschungen andrehen lassen.>> Ja schaut so aus, der U-TH wird auch als QFN verkauft und das kann nicht> sein, daß es die gleiche Bezeichnung für unterschiedliche Gehäuse gibt.>> https://forum.allaboutcircuits.com/threads/what-is-atmega328p-u-th.189896/
Oh verdammt... Gute Hinweise! Vielen Dank schon mal! Hatte da schon ein
paar mal was drüber gelesen. Sind das dann wohl nachgemachte oder
einfach nur "leere" Chips?
Da hier noch keiner aufgeschrien hat, dass meine Schaltung kompletter
Murks ist, gehe ich mal davon aus, dass das eigentlich funktionieren
sollte...?
Dann würde ich das Ding mal rauslöten und ersetzen. Sehen die P-AU denn
legitim aus?
Gibt es noch andere Indikatoren als zu prüfen, welche Bezeichnungs- und
Package-Kombination passen?
H. H. schrieb:> Crazy H. schrieb:>>> Ja schaut so aus, der U-TH wird auch als QFN verkauft und das kann nicht>> sein, daß es die gleiche Bezeichnung für unterschiedliche Gehäuse gibt.>>>> https://forum.allaboutcircuits.com/threads/what-is-atmega328p-u-th.189896/>> Das allerdings ist Unsinn.>> https://www.richis-lab.de/uC01.htm
Da der bei Richard von einem Arduino stammt, ist dessen genaue Herkunft
auch ungeklärt. Außerdem findet sich das Marking in keinem der
Dateblätter 328/328P/328PB
Bevor ich TQFPs in die Zielschaltung einlöte, kommen die in einen
Yamaichi Programmiersockel mit einem USBasp als Programmierer.
Keine Ahnung, ob der Sockel original ist, aber er tut sein Ding.
Als Software verwende ich eXtremeburner. eXtremeburner mault zwar eine
falsche ID an, kann man aber wegklicken, was ein nicht zu
unterschätzender Vorteil ist.
Bei Erstprogrammierung ist es ratsam, das Kommunikationstempo
runterzusetzen, sonst stellen die die Atinnys und Atmegas auch gerne mal
tot.
Ich löte die Dinger schon fertig geflasht in die Zielschaltung. Den ISP
Anschluß nutze ich dann nur noch für Softwareupdates. Ich habe aus
ersten Problemen von 328ern im DIL gehäuse gelernt, wo ich mal eine
kalte Löstelle am Quarz hatte und mir nen Wolf gesucht habe, weil das
Ding partout nicht mit mir reden wollte ;-)
Veit D. schrieb:> Hallo,>> messe mal bitte direkt an den Controllerpins, nicht Pad sondern Pin,> ohne Programmieradapter nach ob die 5V anliegen. Denn wenn Vtarget 0V> meldet geht es nicht weiter. Was hast du für einen Programmieradapter?> Ein Programmieradapter dient in der Regel nicht dafür den Controller zu> versorgen.> Mit meinem avrISPmkII mache ich für einen ersten Verbindungstest nur> avrdude -c avrispmkII -p m328p -v> Wenn alles okay ist wird Signatur und Vtarget angezeigt.
Danke für deine Antwort! Messe heute Abend noch einmal nach. Hatte
bisher aber immer schon direkt an den Pins gemessen. Ich benutze ich
einen Arduino UNO als ISP, habe aber auch einen MKII Nachbau, dann nur
mit externen 5V.
Peter D. schrieb:> Ich sehe keine GND-Verbindungen.> Wird denn der USB-Chip erkannt?
Ja, USB wird erkannt. GND ist auf der Rückseite, da gehen die Vias hin.
Sebastian R. schrieb:> Aber wird bei ISP nicht auch die Betriebsspannung gemessen, damit die in> einem Bereich liegt, in dem der Flash beschrieben werden kann?
Laut AVR068 (beschreibt das STK500v2-Protokoll) wird Vtarget
ausschliesslich vom STK500 (also nicht vom AVRISP) unterstützt, um die
Ausgangsspannung einzustellen.
Der AVRISP kann zwar theoretisch die Spannung messen (ADC7 hängt über
einen Spannungsteiler an VCC), scheint das aber nur zu nutzen, um HVSP
zu verweigern, wenn die Target-Spannung nicht zwischen 4.5V und 5.5V
liegt.
Anders sieht's beim AVRISP mkII (mit USB-Interface) aus, da ist Vtarget
read-only und dürfte die gemessene Spannung liefern.
Sebastian W. schrieb:> Crazy H. schrieb:>> Externen Takt anschliessen und nochmal versuchen.>> Schon probiert?>> LG, Sebastian
Jau - mit und ohne externen Quarz dasselbe Bild.
Sebastian W. schrieb:> Christoph schrieb:>> Jau - mit und ohne externen Quarz dasselbe Bild.>> Nein, externen Takt, nicht externen Quarz!>> LG, Sebastian
Sorry - mein Fehler. Habe leider keinen Taktgenerator zur Hand. Werde
ich mir wohl aber mal zulegen.
Christoph schrieb:> SCK period : 0.1 us
Ich hoffe, diese Angabe stimmt nicht, denn das wären 10 Mhz. Dafür
bräjcze man ein Target, das mit mindestens 40 MHz getaktet wird. So
schnelle AVR gibt es gar nicht (glaube ich).
Probiere mal -cstk500v2 (nicht v1) und -B20
So...
Ich habe jetzt einfach mal eine weitere Platine bestückt - diesmal nur
mit uC, Reset-Pullup und ISP-Header. Dafür habe ich auch die "anderen"
Megas benutzt, die ich noch hatte *. Leider hat das alles gar nichts
gebracht. Selber Fehler, krumme Signatur, nichts funktioniert.
Spaßeshalber mal das Atmel Studio installiert und mit dem MKII noch mal
probiert. Direkt eine Target Voltage von 0V, Kommunikation mit dem uC
geht auch nicht (s. Screenshot).
Irgendwas scheint also gewaltig nicht zu stimmen. Entweder ich habe
zufällig 2 kaputte China-uCs von 2 unterschiedlichen Händlern oder in
meiner Schaltung ist irgendwas kaputt oder es ist ein Layer 8 Problem...
Habt ihr Ideen, was das sonst vllt noch sein könnte? Passt meine
Platine/Schaltung wirklich so?
* die hier:
https://www.mikrocontroller.net/attachment/590923/IMG_1112.JPG
Christoph schrieb:> und mit dem MKII noch mal> probiert. Direkt eine Target Voltage von 0V
Der Atmel ISP mkII muss von der Zielschaltung mit Spannung versorgt
werden. Und wenn VCC anliegt, dann zeigt er sie auch korrekt an.
Stefan F. schrieb:> Dafür bräjcze man ein Target, das mit mindestens 40 MHz getaktet wird.
Korrektur: bräuchte
Stefan F. schrieb:> Christoph schrieb:>> SCK period : 0.1 us>> Ich hoffe, diese Angabe stimmt nicht, denn das wären 10 Mhz. Dafür> bräjcze man ein Target, das mit mindestens 40 MHz getaktet wird. So> schnelle AVR gibt es gar nicht (glaube ich).>> Probiere mal -cstk500v2 (nicht v1) und -B20
Damit bekomme ich einen Timeout...
Christoph schrieb:> Irgendwas scheint also gewaltig nicht zu stimmen.
Du musst alle GND Pins anschließen: 3, 5, 21
Dir fehlt auch ein VCC Pin: 4, 18, 18
Stefan F. schrieb:> Christoph schrieb:>> Irgendwas scheint also gewaltig nicht zu stimmen.>> Du musst alle GND Pins anschließen: 3, 5, 21>> Dir fehlt auch ein VCC Pin: 4, 18, 18Crazy H. schrieb:> Du hast in deinem Schaltplan nur einen GND, was ist mit Pin 5 und 21?
Ist in dem KiCad-Symbol zusammengelegt. Auf der Platine sind 3, 5 und 21
an GND.
Crazy H. schrieb:> Du hast in deinem Schaltplan nur einen GND, was ist mit Pin 5 und 21?> Ebenso gibts 2 VCC (+AVCC).> Der PB hat nur einen VCC und 2x GND.
4, 6, 18 liegen an +5V. AREF ist hier irrelevant, richtig?
Stefan F. schrieb im Beitrag #7366146:
> Pin 18 ist im Layout nur mit dem ISP Stecker verbunden, aber nicht mit> der 5V Versorgung. Deswegen zeigt dein Atmel ISP mkII korrekt Null Volt> an
Ja genau - beim ISP geht der nach hinten durch und von dort durch das
Via unterm Mega an die anderen Pins.
Christoph schrieb:> Ist in dem KiCad-Symbol zusammengelegt
Blöde Idee. Hast du dir das ausgedacht?
Wie viel Volt hast du wirklich am VCC/GND am ISP Stecker? Wenn dein
Atmel ISP mkII 0.0 anzeigt, dann wird das wohl stimmen, oder er ist
defekt.
Christoph schrieb:> beim ISP geht der nach hinten durch
Das hatte ich übersehen. Habe meinen Beitrag daher inzwischen wieder
gelöscht.
Ich sehe noch etwas, was aber wohl auch gerade nicht die akute
Problemursache ist:
An jedes VCC/GND Pärchen gehört ein eigener Abblock-Kondensator. Und
zwar ganz nahe an das IC. Vor allem auf Seite des ISP Steckers vermisse
ich ihn.
Darf ich davon ausgehen, dass die ganzen GND Pins über eine unsichtbare
Plane miteinander verbunden sind?
Messe doch mal (ohne angesteckten Programmieradapter) die Spannung an
VCC/GND und Reset/GND am ISP Anschluss. Das muss beides 5V sein.
Sorry für die "späten" Antworten, ich darf mit dem frischen Account noch
nicht spammen ;-)
Stefan F. schrieb:> Christoph schrieb:>> Ist in dem KiCad-Symbol zusammengelegt>> Blöde Idee. Hast du dir das ausgedacht?>> Wie viel Volt hast du wirklich am VCC/GND am ISP Stecker? Wenn dein> Atmel ISP mkII 0.0 anzeigt, dann wird das wohl stimmen, oder er ist> defekt.>> Christoph schrieb:>> beim ISP geht der nach hinten durch>> Das hatte ich übersehen. Habe meinen Beitrag daher inzwischen wieder> gelöscht.
Nein, das Symbol hab ich nicht selbst gebastelt.
Multimeter sagt 4,95V zwischen VCC und GND und auch zwischen RST und
GND, beides ohne MKII.
Ich hab jetzt den MKII an den ISP gehängt, VCC und Masse zusätzlich noch
an einen Arduino, den ich hier rumfliegen hab zur Spannungsversorgung.
So ganz grundsätzlich passt das, richtig?
Trotzdem 0V... Ist "nur" ein Klon, den hatte ich vorgestern für 35€
geschossen, aber wird im Studio erkannt.
Stefan F. schrieb:> Ich sehe noch etwas, was aber wohl auch gerade nicht die akute> Problemursache ist:>> An jedes VCC/GND Pärchen gehört ein eigener Abblock-Kondensator. Und> zwar ganz nahe an das IC. Vor allem auf Seite des ISP Steckers vermisse> ich ihn.>> Darf ich davon ausgehen, dass die ganzen GND Pins über eine unsichtbare> Plane miteinander verbunden sind?>> Messe doch mal (ohne angesteckten Programmieradapter) die Spannung an> VCC/GND und Reset/GND am ISP Anschluss. Das muss beides 5V sein.
Okay, guter Punkt. Danke dir! Würde schätzen, dass es trotzdem erstmal
funktionieren sollte...? Und ja, richtig, GND liegt auf der Rückseite.
Christoph schrieb:> weg, weswegen ich die ISP-Pins herausgeführt> habe. Nun bekomme ich das Ding aber einfach nicht angesprochen. In der> Konsole sehe ich immer nur "Invalid Device Signature" mit Signaturen,> die für mich nach falscher Verdrahtung aussehen.
Zieh mal den SS-Pin (PB2) über einen Widerstand hoch. Möglicherweise ist
der Controller bei unbeschaltetem SS-Pin im Slave Modus. Im Programm
dann den Pullup einschalten.
Uwe
Christoph schrieb:> Ist "nur" ein Klon
Ich würde es eher als schlechte Fälschung bezeichnen. Wenn es ein
nachgebauter Atmel ISP mkII wäre, würde er die Spannung korrekt
anzeigen.
> für 35€
Wow, soviel habe ich für das Original bezahlt.
Also: Versorgung liegt an allen Pins (auch am Programmieradapter) an.
Reset wird per Pull-Up auf HIGH gezogen und ist mit dem ISP Stecker
verbunden. Zumindest ein Abblock-Kondensator ist vorhanden. Damit sind
alle Voraussetzungen erfüllt, die mir einfallen.
Christoph schrieb:> Ich hab jetzt den MKII an den ISP gehängt
Welche Meldungen kommen damit denn genau? STK500v1 und COMx passt nicht
zum AVRISP mkII, das muss noch ein anderer gewesen sein.
Christoph schrieb:> Sorry - mein Fehler. Habe leider keinen Taktgenerator zur Hand.
Jeder Arduino kann einen 1MHz Takt über PWM erzeugen.
LG, Sebastian
Uwe K. schrieb:> Ist der ISP Stecker richtig herum aufgesteckt?
Na großartig, ein Negativer Klick. Manchmal ist es so banal!
Wenn die Masse nicht verbunden ist, kann es auch zu dem Phänomen kommen.
Oder der Tackt ist zu hoch.
Stefan F. schrieb:> Wow, soviel habe ich für das Original bezahlt.
Vor wieviel Jahren? ;)
Zum Thema:
Ist denn der ISP-Stecker auch richtig rum drin? Einfach mal versuchen
die Versorgungsspannung zu messen, das muss auf jeden Fall gehen, auch
wenn gar kein µC verbaut wurde.
Hallo Christoph,
es klemmt scheinbar an der nicht vorhandenen/gemessenen
Betriebsspannung. Versuch doch mal folgendes:
Direkt am ISP-Stecker des Programmieradapters nur die Spannung anlegen
und im AVR-Studio zu messen, siehe Bilder. In dem Fenster irgendeinen
Prozessor eintragen und die beiden Buttons in der Reihenfolge betätigen.
Wenn dein MKII dort nichts anzeigt, scheint er nicht richtig kompatibel
zu sein, mein Beispiel funktioniert mit einem JTAGICE3, was anderes habe
ich nicht.
Meine Erfahrungen dazu: Früher hatte ich einen Eigenbau-Programmierklon
hier aus dem Forum. Der funktionierte mit AVR-Studio V4.X ohne
Spannungsmessung. Dann konnte ich recht günstig hier im Markt den
JTAGICE3 bekommen. Habe nun auch Studio 7 imnstalliert und es
funktionierte ... nichts. Ich hatte in meinen bisherigen Projekten an
dem ISP-Stecker den Vcc-Anschluß nie belegt, war ja bisher nicht nötig.
Nachdem ich das nachgeholt hatte, funktionierte die Programmierung auch.
Meine Vorschläge, wenn das mit der Spannungsmessung nicht funktioniert:
- Anderer Programmieradapter, möglichst ein Original
- Mal mit AVR-Studio V4.x versuchen
Reinhard
Steve van de Grens schrieb:> Viele, ich bin alt.
Merke: Du bist alt, wenn du nichts Neues mehr anfängst.
Also, immer am Ball bleiben und neue Ideen verwirklichen, dann wird das
schon...
Reinhard