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