Hallo zusammen,
ich arbeite jetzt schon ca einen Monat an meinem richtigen
Elektronik-Projekt - nichts großes, nur gibt es viel zu lernen ;)
Nach der ersten Runde PCBs hatte ich festgestellt, dass ich noch einen
MCU brauche. Den habe ich dann ergänzt und neue Boards bestellt. Ein
board habe ich jetzt bestückt, aber der MCU will sich nicht
programmieren lassen - avrdude erkennt ihn einfach nicht ("Error:
initialization failed", oder mit -F: "Device signature = 00 00 00
(retrying)").
Ich habe mich ein bisschen umgeguckt und festgestellt, dass mir ein
reset-pullup fehlt. Den habe ich zum Testen dann an den ICSP header
drangelötet (funktioniert tatsächlich), aber es tut sich immer noch
nichts. Auch ein 100nF Kondensator zwischen VCC und VSS hat nichts
gebracht (den Widerstand habe ich mittlerweile auf dem Board ergänzt.
Für den cap ist mir keine offensichtlich tolle Lösung eingefallen, also
habe ich ihn von vor der Didode nach dahinter geschoben. Der Anhang
repräsentiert noch das alte Board, so wie ich es gerade physisch bei mir
liegt.).
Die ungenutzten Pins sind alle direkt mit VSS verbunden, weil das
Datasheet gesagt hat, dass ein festes Level den Verbrauch des MCUs
senken kann (Idealerweise will ich mich mit dem Verbrauch des MCU im
Bereich von 0 bis ca. 10uA bewegen - weniger ist besser.). Mir wurde
gesagt, dass ich auch die internen Widerstände benutzen kann, was dann
die nächste PCB-Bestellung umsetzen wird.
Auch habe ich die AVR-Checkliste auf dieser Seite gefunden, die hat mir
aber leider nicht weitergeholfen.
Sicherheitshalber habe ich mal alle SPI-Pins im Diodentest durchgemessen
und ich bekomme da überall "normale" Werte, also der Chip scheint
zumindest oberflächlich in Ordnung zu sein. Die wichtigen Pins sind alle
tatsächlich verlötet und soweit ich erkennen kann nicht irgendwie
miteinander verbunden. Den ICSP header habe ich direkt durchgemessen,
und da auch nichts gefunden. Ich habe noch nicht probiert einen anderen
MCU aufzulöten, weil ich nicht weiß, ob irgendwas auf dem Board den
momentanen MCU gesprengt hat, und wenn ja, warum.
Ein Oszilloskop habe ich auch mal angeschlossen. Der Reset-Pin landet
tatsächlich auf einem sauberen Logik-Niveau. Auf MOSI ist Kommunikation
auch klar erkennbar (und ja, meinen usbtinyisp habe ich mit einem
arduino uno getestet). Auf MISO ist nur schwache Noise (kurz vor dem LL
zu LH Übergang des Reset-pins glaube ich ein bisschen Chip-Aktivität zu
erkennen - kaum lauter als die Noise auf der Leitung.). Die Noise auf
den Leitungen bewegt sich im Bereich von bis zu +-100mV zu bewegen.
Zugegeben habe ich keine Ahnung, ob irgendwas in diesem Absatz von
Relevanz ist, aber man lernt ja immer dazu.
Ich bin ehrlich verwirrt bei sechs Pins so gravierend schief gehen kann.
Hat hier vielleicht jemand eine Idee, was ich übersehe?
Vielen Dank!
Wie kommst du auf die irrwitzige Idee, Aref auf GND zu klemmen?
Das Datasheet sagt, dass man ungenutzte Pins zu Gnd verbinden soll. Ich benutze nur die beiden i2c Interfaces, und wollte den ADC eh ausschalten. So wie ich das verstanden habe ist der ADC nur für analoge Messungen Relevant. Im Datasheet steht, soweit ich erkennen kann, nicht, dass man besonders mit dem Pin umgehen soll
:
Bearbeitet durch User
Und wo ist der Schwingquarz/Resonator, wo sind die Abblock-Cs? Warum ist eine Diode zwischen Regler und Prozessor-Versorgung?
Ist der Atmega328PB frisch vom Werk? Ich frage, weil du keinen Takt anlegst … LG, Sebastian
Sysfs schrieb: > Das Datasheet sagt, dass man ungenutzte Pins zu Gnd verbinden soll. Naja... Aref ist keine normaler IO Pin. Das Datenblatt sagt eher, dass man ihn mit 100nF gegen GND abstützen soll. Und die anderen brauchen auch kein GND, da reicht der interne Pullup oder diese Pins auf OUTPUT zu stellen. Sebastian W. schrieb: > Ich frage, weil du keinen Takt > anlegst … Bei 1MHz intern, macht es meist Sinn, den ISP Takt runter zu setzen. Dann: Ich sehe nur einen GND an deinem 328PB Bild. Der hat sicher mehr davon.
:
Bearbeitet durch User
Hallo, die Pin-Nummerierung des Programmiersteckers ist um 180° verdreht. (Tipp: in KiCad gibt es diesen Stecker als beschriftetes Schaltplansymbol) rhf
Arduino F. schrieb: > Dann: > Ich sehe nur einen GND an deinem 328PB Bild. > Der hat sicher mehr davon. Gut gesehen. Pin 21 GND fehlt! LG, Sebastian
Noch etwas: Falls man später den 328pb a la Arduino mit AVRDude programmieren möchte, bitte beachten, daß sich die gültigen RESET Schaltschwellen im Vergleich zum 328p unterscheiden. Wer dann versucht mit einem 3.3V USB Serial (CP2103 oder FT232RL) Kabel zu arbeiten wird oft Schiffbruch erleben, da die Spannung des Serial-RTS dann nicht mehr ausreicht, den RESET-Pin weit genug nach Masse hin zu schalten. Ohne Modifikation funktioniert es nur sporadisch. Ein Vergleich der Datenblätter bestätigt diesen Sachverhalt. Ich hatte das Problem vor einigen Jahren erstmalig mit 328PB Bords von Watterott. Eine "stopgap" Lösung des Problems war, den Reset Pin über einen 33K mit RTS zu überbrücken. (In parallel mit dem Reset Kondensator zwischen RTS und RESET). Diese Massnahme löste das Problem. Ich informierte übrigens Watterott von dem Problem und es ist seitdem auch dort dokumentiert. Über ISP hatte ich übrigens allerdings mit dem 328PB niemals Probleme.
Sebastian W. schrieb: > frisch vom Werk Ja, der MCU ist frisch vom Werk. Helmut -. schrieb: > wo sind die Abblock-Cs? Warum ist > eine Diode zwischen Regler und Prozessor-Versorgung? Die Diode soll verhindern, dass die 5V des programmers den LDO töten. Angeblich mögen die es nicht, wenn am Output ein höheres Potential anliegt. Den 100nF Kondensator habe ich wie gesagt vergessen. Der Plan war, den Filterkondensator vom LDO mitzuverwenden. Arduino F. schrieb: > Bei 1MHz intern, macht es meist Sinn, den ISP Takt runter zu setzen. Habe ich erfolglos versucht, hatte ich vergessen zu erwähnen. Roland F. schrieb: > Pin-Nummerierung des Programmiersteckers ist um 180° verdreht. Stimmt. In der Schematic habe ich den Anschluss Rotiert. Ich habe immer darauf geachtet, dass mein Kabel richtig herum angeschlossen ist. Arduino F. schrieb: > Ich sehe nur einen GND an deinem 328PB Bild. Guter Fund, aber das Symbol überlappt alle GNDs. Schließt man den einen an, dann sind automatisch alle anderen mit dabei. Vielen Dank für die vielen Ideen!
:
Bearbeitet durch User
Also bei mir hat das nur so funktioniert: Programmer mit einem levelshifter auf 3,3V zum ATmega328 hin. Der muß 328 vorher mit seiner 3,3V-Versorgung laufen, dann den Programmer anstecken und mit der Arduino IDE programmieren. Die Fehlermeldung bedeutet ja, daß der uC nicht reagiert. Mein 328P-AU (TQFP-SMD) war auch anfangs nicht ordentlich verlötet, einige pins sahen nur so aus, als ob. Habe auch 8MHz ohne Oszillator verwendet.
Walter B. schrieb: > Programmer mit einem > levelshifter auf 3,3V zum ATmega328 hin. Der muß 328 vorher mit seiner > 3,3V-Versorgung laufen, dann den Programmer anstecken und mit der > Arduino IDE programmieren. Also so wie ich das verstanden habe muss der Chip nicht erst mit eigener Stromversorgung laufen. Der Programmer bringt ja - sofern angeschlossen - selber eine 5V Versorgungsspannung mit. Der Arduino Uno, mit dem ich den Programmer getestet habe, musste auch nicht an eine zusätzliche Stromversorgung angeschlossen werden. Bezüglich der 3.3v möchte ich auf die Antwort von gerhard_ verweisen: Der 328P kommt beim Programmieren mit 3.3v wohl deutlich besser klar als der 328PB. Übersehe ich etwas?
:
Bearbeitet durch User
Wenn du ein Oszilloskop hast, messe VCC und RESET in dem Moment, wo der Programmiervorfang startet. Zeige uns due Bilder vielleicht sehen wir da schon was. Wenn nicht, wären als nächstes die drei Signale der ISP Schnittstelle von Interesse.
Was ich bei meinen Experimenten gelernt habe: Die Diode am Regler würde ich entfernen(überbrücken) und die Schaltung generell nicht über den Prog-Stecker versorgen. Welchen Programmer verwendest du, welches Programm/Umgebung? (Habe ich vllt überlesen..?) Hier ist ein Skript dass bei mir zuverlässig funktioniert. c:\WinAVR\avrdude\avrdude -p m328pb -P com3 -b 115200 -B 200 -c stk500v2 -e c:\WinAVR\avrdude\avrdude -p m328pb -P com3 -b 115200 -B 200 -c stk500v2 -U lfuse:w:0xE2:m c:\WinAVR\avrdude\avrdude -p m328pb -P com3 -b 115200 -B 200 -c stk500v2 -U hfuse:w:0xDF:m c:\WinAVR\avrdude\avrdude -p m328pb -P com3 -b 115200 -B 200 -c stk500v2 -U efuse:w:0xF5:m c:\WinAVR\avrdude\avrdude -p m328pb -P com3 -b 115200 -B 1.1 -c stk500v2 -D -U flash:w:deinHexFile.hex c:\WinAVR\avrdude\avrdude -p m328pb -P com3 -b 115200 -B 200 -c stk500v2 -U lock:w:0xC0:m pause Überprüf die Fuses die du verwendest. Einmal falsch gesetzt können die das IC "bricken". Alles andere wurde bereits erwähnt.
... und sag mal welcher ISP Programmer Du einsetzt. Wenn Du später mit Arduino usw. was machen willst, dann verwende noch ein Resonator / Quarz und baue die Resetbeschaltung mit auf. Wenn die Spannungversorgung über den ISP Programmer kommt,kannst Du Dir den LDO usw. vorerst sparen. Schau Dir mal die Standardschaltungen im Web an - daran kann man sich grob orientieren.
Arduino F. schrieb: > Wie kommst du auf die irrwitzige Idee, Aref auf GND zu klemmen? Spielt keine Rolle, solange man den A/D nicht verwendet. Der Stromverbrauch des µC kann natürlich ein klein wenig ansteigen.
:
Bearbeitet durch User
Sysfs schrieb: > Also so wie ich das verstanden habe muss der Chip nicht erst mit eigener > Stromversorgung laufen. Der Programmer bringt ja - sofern angeschlossen > - selber eine 5V Versorgungsspannung mit. Der Arduino Uno, mit dem ich > den Programmer getestet habe, musste auch nicht an eine zusätzliche > Stromversorgung angeschlossen werden. Das war eigentlich nicht so gedacht. Der VCC-Pin ist eigentlich nur dafür da, die Pegelwandler (GUTE Programmer haben welche) zu versorgen, damit die Logikpegel am Programmierstecker exakt zur Versorgungsspannung des Prozessors passen. Viele Leute vergessen auch, dass alle digitalen ICs an ihren Eingängen nur Spannungen zwischen 0 und der Versorgungsspannung vertragen, sofern es nicht ganz ausdrücklich im Datenblatt anders beschrieben wird. Wenn also nur der Prozessor versorgt wird, nicht aber der Rest der Schaltung, können unter Umständen seltsame Dinge passieren. Dann sehe ich im Schaltplan keine Abblockkondensatoren. JEDES VCC/GND-Paar (und AVCC/AGND) braucht einen eigenen - in der Regel 100nF - Kondensator (keramisch, X7R, möglichst kleine mechanische Bauform, weil sich dadurch die interne Induktivität reduziert) möglichst dicht an den Pins (da zählt jeder Millimeter). Zu den ungenutzten IO-Pins: Ich würde die unbeschaltet lassen und beim Start auf Ausgang und 0 programmieren. Und wenn Du WIRKLICH die Leistung reduzieren willst, dann reduzierst Du besser die Versorgungsspannung. Schau Dir die Graphen im Datenblatt im Abschnitt 34.1 an. Der Strom halbiert sich in etwa, die Leistung viertelt sich ganz grob. Gut, der 328PB is eine alte Kamelle. Moderne AVRs aus der nach-Atmel-Zeit laufen intern eh mit 1.8V, und nur der IO-Ring wird mit der externen Versorgungsspannung betrieben. Daher laufen die dann auch bei niedriger Versorgungsspannung mit vollem Takt. Du hast hier also keine wirklich gute Wahl getroffen. fchk
Nemopuk schrieb: > Zeige uns due Bilder Habe ich angehängt. Gelb ist reset, Hellblau ist MOSI und Lila ist MISO. Das triggerniveau habe ich für das Bild auf das Reset-High(Low?) Niveau gesetzt, dass man da die 1.0V erkennt. Christian schrieb: > Die Diode am Regler würde ich entfernen(überbrücken) und die Schaltung > generell nicht über den Prog-Stecker versorgen. Wieso das? Es hängt ja bei mir NUR der MCU dran. Absolut nichts anderes. Der Uno lässt sich mit dem Programmer problemlos durch den ICSP header versorgen. Ich brauche keinerlei externe Stromversorgung, und der Uno hat deutlich mehr Teile an board als ich hier. Christian schrieb: > Welchen Programmer Andreas S. schrieb: > und sag mal welcher ISP Programmer Wie schon erwähnt benutze ich einen USBTinyISP, der an einem arduino uno problemlos funktioniert. Frank K. schrieb: > ihren Eingängen > nur Spannungen zwischen 0 und der Versorgungsspannung vertragen Laut Datasheet hält der 328PB sogar 6V aus. Da sollten die 5V vom Programmer eigentlich ideal sein...? Frank K. schrieb: > JEDES > VCC/GND-Paar (und AVCC/AGND) braucht einen eigenen - in der Regel 100nF > - Kondensator Wie soll ich das dann mit dem LDO-Kondensator machen? De sitzen ja dann parallel und dann habe ich 1.001uF statt 1nF... Im MiniCore minimal setup hängt AVCC einfach an VCC und hat gar keinen eigenen Kondensator. Frank K. schrieb: > Und wenn Du WIRKLICH die Leistung reduzieren willst, dann reduzierst Du > besser die Versorgungsspannung Das war auch das Ziel, deshalb gibt der LDO 3.3V statt 5V aus. Andreas S. schrieb: > Wenn die Spannungversorgung über den ISP Programmer kommt,kannst Du > Dir den LDO usw. vorerst sparen. Das Programmieren möchte ich machen, bevor ich die eigentliche Stromversorgung anschließe - aus Sicherheitsgründen. Der LDO muss also sein, und die Diode scheinbar auch. Sorry, dass die Antwort so lange gebraucht hat. Hatte schwierigkeiten das alles halbwegs sauber mit dem Oszi zu verdrahten...
:
Bearbeitet durch User
Forsche mal nach warum das RESET Signal nicht auf 0V geht. Reset wird direkt vom selben 74HCxx angetrieben, wie MOSI. MOSI hat einen 1,5k Widerstand in Reihe. Also müsste der RESET Pin mindestens ebenso weit runter kommen wie MOSI. Die Differenz von 0,7V riecht verdächtig nach einer ESD Schutzdiode. Vielleicht hat dein Programmieradapter einen Kabelbruch auf der GND Leitung.
:
Bearbeitet durch User
Nemopuk schrieb: > Forsche mal nach warum das RESET Signal nicht auf 0V geht. Reset wird > direkt vom selben 74HCxx angetrieben, wie MOSI. MOSI hat einen 1,5k > Widerstand in Reihe. Also müsste der RESET Pin mindestens ebenso weit > runter kommen wie MOSI. Guter Einwand. Ich habe gerade mal in das Datasheet geguckt und tatsächlich scheint das Reset-Signal nicht weit genug runterzukommen. Wenn ich das richtig verstehe (Screenshot angehängt) muss das Signal bei High(Low?) zwischen -0.5 und 1V liegen. Da ist 1V ziemlich grenzwertig... Wie muss ich das mit dem Kabelbruch verstehen? Warum würde ein Kabelbruch verhindern, dass das Signal auf 0V herunterkommt? Wenn das Board angeschlossen ist, kann ich GND definitiv vom Programmer zum Board durchmessen, und ich bin mir unsicher, was Du sonst damit meinst.
:
Bearbeitet durch User
Sysfs schrieb: > Das Programmieren möchte ich machen, bevor ich die eigentliche > Stromversorgung anschließe deshalb ja nur der ISP Programmer für die Spannungsversorgung. Wenn der Chip i.O ist und alles passt muss ein "Only Read" möglich sein und Du kannst die ID und die Fuse Settings und den Speicher auslesen. Mehr braucht es für eine grobe Überprüfung der ISP Verdrahtung nicht. Das läuft dann auch mit einer DIL Version auf den Steckbrett, nur mit angeschlossen ISP Programmer und ohne viel "Drumherum" Zur Not erst einmal den ISP Takt etwas verringern um auf Nummer sicher zu gehen - durch den wilden Aufbau auf dem Steckbrett ist das manchmal nötig. Bitte überpürfe auch Deine Fuse Einstellungen (internal Clock) - nicht dass da das eigentlich Problem ist. Im Web gibt es gute Seiten mit Fuse Calculatoren.
Andreas S. schrieb: > deshalb ja nur der ISP Programmer für die Spannungsversorgung. > Wenn der Chip i.O ist und alles passt muss ein "Only Read" möglich sein > und Du kannst die ID und die Fuse Settings und den Speicher auslesen. Oh ich hatte Dich bei meiner vorherigen Antwort etwas missverstanden. Ja, der LDO könnte weg, aber es ändert ja so gesehen jetzt auch nichts, dass er da ist. Auslesen vom Chip ist momentan nicht möglich. Die Fuses konnte ich bisher nicht einstellen, weil ich nicht auf den Chip zugreifen konnte, sind also alle auf den defaults. Die Chips kommen wie schon gesagt direkt vom Hersteller und sind unbenutzt.
Sysfs schrieb: > Frank K. schrieb: >> ihren Eingängen >> nur Spannungen zwischen 0 und der Versorgungsspannung vertragen > > Laut Datasheet hält der 328PB sogar 6V aus. Da sollten die 5V vom > Programmer eigentlich ideal sein...? Das war der erste Fehler. Du hast in die Absolute Maximum Ratings geschaut. Das sind die Werte, bei der der Chip kurzzeitig gerade noch nicht stirbt. Damit designt man nicht. Du nimmst gefälligst die Recommended Ratings. Das zweite sind die IO-Pins: Unter 33.2 steht ganz klar: "Input High Voltage, except XTAL1 and RESET pins: max Vcc+0.5V" Wenn VCC=0V ist, dann beschädigt jede Spannung über 0.5V an einem beliebigen IO-Pin den Chip. Gilt für so gut wie jeden digitalen Chip, wobei oft nur 0.3V extra erlaubt sind. > Frank K. schrieb: >> JEDES >> VCC/GND-Paar (und AVCC/AGND) braucht einen eigenen - in der Regel 100nF >> - Kondensator > > Wie soll ich das dann mit dem LDO-Kondensator machen? De sitzen ja dann > parallel und dann habe ich 1.001uF statt 1nF... Genau so. Zweiter Fehler. Du betrachtest Leiterbahnen als einfache Verbindung. Stimmt so nicht. Jedes mm an Leiterbahn hat einen Widerstand, eine Kapazität und eine Induktivität. Jede Leiterbahn zwischen zwei Bauteilen ist also auch ein Bauteil. Deswegen hast Du keine einfache Addition von Kapazitäten, und deswegen ist es auch nicht egal, wo die Kondensatoren sind. > Frank K. schrieb: >> Und wenn Du WIRKLICH die Leistung reduzieren willst, dann reduzierst Du >> besser die Versorgungsspannung > > Das war auch das Ziel, deshalb gibt der LDO 3.3V statt 5V aus. Ja, und wenn Du wirklich Strom sparen willst, nimmst Du 1.8V und dazu passende Bauteile. fchk
Frank K. schrieb: > Du hast in die Absolute Maximum Ratings > geschaut. oha Tatsache, danke für den Hinweis. Ich finde mich in so großen Datasheets noch nichts gut zurecht... Frank K. schrieb: > Unter 33.2 steht ganz klar: > "Input High Voltage, except XTAL1 and RESET pins: max Vcc+0.5V" > Wenn VCC=0V ist, dann beschädigt jede Spannung über 0.5V an einem > beliebigen IO-Pin den Chip. Gilt für so gut wie jeden digitalen Chip, > wobei oft nur 0.3V extra erlaubt sind. Ich sehe das Problem nicht. Soweit ich das erkennen kann habe ich nichts verpolt. Frank K. schrieb: > Genau so. Hm ok alles klar, vielen Dank für die Erklärung. Dann werde ich versuchen, den auch noch unterzubringen. Muss ich den ergänzen bevor hier irgendwas klappen kann oder sollte ich den ergänzen aber es wird für meine wenigen Tests auf dem alten Board auch noch so funktionieren? Frank K. schrieb: > nimmst Du 1.8V Bei 1.8V wird der interne Crystal zu langsam. Ich brauche meine 8MHz. 4MHz Reichen für mein Projekt nicht mehr. Ich kann noch bis 2.7V runter gehen, aber mit der Diode hinter dem LDO bin ich eh nahe der 3V.
Sysfs schrieb: > Frank K. schrieb: >> nimmst Du 1.8V > > Bei 1.8V wird der interne Crystal zu langsam. Ich brauche meine 8MHz. > 4MHz Reichen für mein Projekt nicht mehr. Ich kann noch bis 2.7V runter > gehen, aber mit der Diode hinter dem LDO bin ich eh nahe der 3V. Du hast da keinen internen Crystal. Du hast einen relativ ungenauen RC-Oszillator. Dann nimmst Du halt beispielsweise einen AVR128DB32. Der kann auch bei 1.8V noch seine vollen 24 MHz, weil es eben ein viel modernerer Chip in einem neueren Halbleiterprozess ist. https://www.microchip.com/en-us/product/AVR128DB32 fchk
:
Bearbeitet durch User
Sysfs schrieb: > Wie muss ich das mit dem Kabelbruch verstehen? Warum würde ein > Kabelbruch verhindern, dass das Signal auf 0V herunterkommt? Weil der Strom nicht zu seiner Quelle zurück fließen kann. Dann fließt er oft über eine Signal-Leitung und ESD Schutzdiode zurück. Wegen der Diode mit etwa 0,7V Verlust. Sysfs schrieb: > Wenn das Board angeschlossen ist, kann ich GND definitiv vom Programmer > zum Board durchmessen, und ich bin mir unsicher, was Du sonst damit > meinst. Wie viel Ohm? Es sollten etwa Null Ohm sein. Sysfs schrieb: > Bei 1.8V wird der interne Crystal zu langsam. Es gibt keinen internen Kristall/Quarz. Du meinst den R/C Oszillator. Dem ist die Spannung egal. Wichtig ist, die Fuse für den Takt-Teiler passend zu setzen, damit die effektive Taktfrequenz des Chips nicht zu hoch ist.
Frank K. schrieb: > Dann nimmst Du halt beispielsweise einen AVR128DB32 Eigentlich möchte ich den Chip ja gar nicht austauschen, aber danke für den Vorschlag. ;) Nemopuk schrieb: > Es sollten etwa Null Ohm sein Es sind etwa Null Ohm. Nemopuk schrieb: > Weil der Strom nicht zu seiner Quelle zurück fließen kann. Dann fließt > er oft über eine Signal-Leitung und ESD Schutzdiode zurück. Wegen der > Diode mit etwa 0,7V Verlust. Achso, ich glaube ich verstehe. Auf dem Programmer sehe ich aber maximal 2 Dioden, es sei denn die Schutzdioden sind Teil des Atmel MCU. Neben dem MCU ist nur noch ein 74HC125 "quad buffer". Nemopuk schrieb: > Du meinst den R/C Oszillator. > Dem ist die Spannung egal. Ja, den meine ich, sorry. Im Datasheet steht eigentlich an diversen Stellen, dass die Frequenz mit sinkender Spannung immer weiter limitiert ist. Wieso gilt das nicht? Edit: Ich habe mich wohl verlesen. Da steht, dass der MCU bis 1.8V die vollen 8MHz kann.
:
Bearbeitet durch User
Sysfs schrieb: > Frank K. schrieb: >> Dann nimmst Du halt beispielsweise einen AVR128DB32 > > Eigentlich möchte ich den Chip ja gar nicht austauschen, aber danke für > den Vorschlag. ;) Wäre aber besser fürs Ergebnis. > Edit: Ich habe mich wohl verlesen. Da steht, dass der MCU bis 1.8V die > vollen 8MHz kann. Nein, das stimmt bei diesen alten Teilen nicht. Siehe Abschnitt "33.4 Speed Grades". Der interne Oszillator funktioniert bis herunter zu 1.8V gemäß Abschnitt 33.5.1. Das heißt aber nicht, dass der Prozessorkern das dann auch kann. Bei diesen alten Teilen sind die Transistoren bei geringer Spannung einfach zu langsam. Erst bei den modernen Microchip AVRs sind die Transistoren auch bei geringen Spannungen schnell genug bzw noch deutlich schneller. Deswegen solltest Du den wollen. fchk
Sysfs schrieb: > es sei denn die Schutzdioden sind Teil des Atmel MCU. Neben dem MCU ist > nur noch ein 74HC125 "quad buffer". Ich meine Dioden in den ICs.
Sysfs schrieb: > Im Datasheet steht eigentlich an diversen Stellen, dass die Frequenz mit > sinkender Spannung immer weiter limitiert ist. Wieso gilt das nicht? Der Oszillator funktioniert im gesamten Spannungsbereich. Die CPU hinter dem Oszillator ist anspruchsvoller.
Nemopuk schrieb: > Die CPU hinter > dem Oszillator ist anspruchsvoller. Frank K. schrieb: > Siehe Abschnitt "33.4 > Speed Grades". Also der CPU scheint die 10MHz noch bis zu 2.7V zu schaffen. Mein Ziel waren 3.3V also wird mir der MCU noch reichen.
Ich habe auch schon 16 MHz mit 3,0V gemacht, aber es ist halt nicht garantiert.
Ich bewege mich ja hier noch in der "Safe Operating Area" des Graphen, also müsste das ja eigentlich schon garantiert sein...?
Ich habe gerade einmal testweise den 10k Reset-Widerstand durch einen 60k Widerstand ersetzt, und jetzt schafft es der Programmer auf einmal, den Reset-Pin auf 0V zu ziehen. Überraschend. Weiterhin leider keine Antwort vom MCU...
Hier mein Schaltplan explizit für den ATMEGA328PB als Referenz – getestet und auf jeden Fall funktionierend. Irgendetwas grundlegendes machst Du falsch – alle Massen müssen verbunden sein – dieser µC hat zwei GND-Anschlüsse (Pin 5 und 21), die Massen des Programmiergeräts, Netzteils etc. müssen damit auch verbunden sein. Auch die Spannungsversorgung muss sowohl an VCC als auch AVCC vorhanden sein. VREF wird weder mit VCC noch mit GND verbunden – der Pin wird mit einem 100nF-Kondensator gestützt, insbesondere dann, wenn vom ADC Gebrauch gemacht wird. Abblockkondensatoren sind nicht spaßhalber gedacht, sondern Pflichtprogramm bei quasi jeder soliden Schaltung, die zuverlässig arbeiten soll – µC-Schaltungen gehören zu dieser Kategorie. Dein ISP-Programmieranschluss scheint auf jeden Fall irgendwie verdreht zu sein – vielleicht hast Du beim Anschließen des Programmieradapters über Dupontkabel hier einfach auch MOSI mit MISO vertauscht, dann geht gar nichts mit Programmieren. Wenn man nicht mit einem vernünftigen Programmer, der eingebaute Stromlimiter hat, programmiert, sollte man die Leitungen (MOSI, MISO, SCK und RESET) am besten mit jeweils einem Schutzwiderstand, z.B. 220 Ohm, schützen, um im Falle eines Pegelkonflikts die Sicherheit zu haben, dass da nichts passiert; auch die Injektionsströme bei fehlender Spannungsversorgung auf einer Seite werden dadurch so weit reduziert, dass nichts passieren kann. Irgendwelche gemessenen Low-Pegel mit ca. 1V sind in der Regel ein Indiz dafür, dass irgendetwas nicht richtig verbunden ist oder bereits ein Pinkonflikt fabriziert wurde. Ergo => alle relevanten Verbindungen nochmal explizit mit einem Multimeter prüfen – hinschauen, glauben hilft in diesem Fall nicht. Deine superdupa Optimierung, alle ungenutzen Pins auf GND zu schalten, birgt hohe risiken – insbesondere beim Prototypen bzw. Programmschreiben können die Portausgänge versehentlich als Ausgang mit High-Pegel geschaltet werden, was schlimmstenfalls zum Tod des µControllers führen kann. Wenn man zu solchen drastischen Maßnahmen greift, dann macht man das ganz am Ende der Entwicklungsphase, wenn das Schreiben der Software abgeschlossen wurde und das Risiko nicht mehr vorhanden ist.
:
Bearbeitet durch User
Nimm zum Test einen neuen Atmega setze nur die Minimalbeschaltung ein (max. 5V). Lass auch die unbenutzten I/O Pins einfach frei - antworten sollte der Chip über ISP. Orientieren kannst Du Dich an der Schaltung von Gregor J. Alles weitere wurde schon ausführlich erleutert.
Sysfs schrieb: > Ich habe gerade einmal testweise den 10k Reset-Widerstand durch einen > 60k Widerstand ersetzt, und jetzt schafft es der Programmer auf einmal, > den Reset-Pin auf 0V zu ziehen. Überraschend. Komisch. Der 74HCxx Treiber kann eigentlich locker mehr als 20mA treiben. > Da du so ein tolles 4-Kanal Oszilloskop hast, mache nochmal so ein Bild mit VCC, SCL, MOSI und RESET.
:
Bearbeitet durch User
Gregor J. schrieb: > Schreiben der Software > abgeschlossen wurde Das ist schon passiert. Andreas S. schrieb: > Lass auch die unbenutzten I/O Pins einfach frei - antworten sollte der > Chip über ISP Ich habe nun also wo möglich Teile an den IO-Pins abgelötet und einen neuen MCU aufgelötet. Schockierenderweise geht es jetzt. Ich habe wieder alle Teile zurückgelötet und es geht immernoch. Irgendwie ist also tatsächlich der MCU gestorben. Ich verstehe es nicht. Vielleicht habe ich nicht gut genug auf ESD geachtet und so den Chip getötet? Vielleicht habe ich den Chip gekocht als ich beim Auflöten zu spät gecheckt habe, dass mein Ganzes Flussmittel weggedampft war. Vielleicht hätte ich den usbtinyisp erst an den ICSP header anschließen und dann per USB anstecken sollen, um so zu vermeiden, dass womöglich kurzzeitig IO-Pins als GND fungieren, wenn VCC etwas früher den Kontakt herstellt... Danke an euch alle, die sich die Mühe gemacht haben, das Problem mit mir zu lösen. Ich habe heute viele tolle Tipps und Hilfe erhalten :)
Sysfs schrieb: > Vielleicht habe ich nicht gut genug auf ESD geachtet und so den Chip > getötet? Sehr unwahrscheinlich. Die AVR sind ziemlich robust.
Sysfs schrieb: > Irgendwie ist also > tatsächlich der MCU gestorben. Ich verstehe es nicht. doch mehr als 5V oder lag es an Deine GND Verbindungen ? Schön,dass es doch noch ein Erfolgserlebnis gibt und hoffendlich daraus gelernt wurde.
Sysfs schrieb: > Irgendwie ist also tatsächlich der MCU gestorben. Ich verstehe es nicht. Eigentlich sind die Atmega ziemlich robust. Vielleicht kann man ihm mit einem externen 1MHz-Takt wieder auf die Beine helfen. Einen 12V-Programmierer hast du wohl nicht, oder? LG, Sebastian
Nemopuk schrieb: > Da du so ein tolles 4-Kanal Oszilloskop hast, mache nochmal so ein Bild mit > VCC, SCL, MOSI und RESET. Das ist jetzt mit dem 60k Widerstand.
:
Bearbeitet durch User
Sysfs schrieb: > Das ist jetzt mit dem 60k Widerstand. Da sehe ich erfolgreiches SPI. Welche Farbe ist VCC? Ich wollte sehen, ob die Versorgung einigermaßen stabil ist.
:
Bearbeitet durch User
Sebastian W. schrieb: > Einen > 12V-Programmierer hast du wohl nicht, oder? Nein, einen 12V Programmer habe ich leider nicht. Andreas S. schrieb: > hoffendlich > daraus gelernt wurde. Ja, definitiv! Nemopuk schrieb: > Ich wollte sehen, ob die Versorgung einigermaßen stabil ist. Sorry, da have ich VCC überlesen. Neuer Anhang.
Sysfs schrieb: > Sorry, da have ich VCC überlesen. Neuer Anhang. Das sieht sehr gut aus. Jetzt würde ich aus Neugier mal den Reset Pin kräftig auf VCC ziehen, z.B mit 1k Ohm. Das Bild müsste danach immer noch genau so aussehen. Wenn nicht, ist vermutlich der Reset Ausgang deines Programmieradapters defekt.
Nemopuk schrieb: > Jetzt würde ich aus Neugier mal den Reset Pin kräftig auf VCC ziehen, Hm das sieht auch sehr ähnlich aus. ich frage mich, ob ich nicht gestern zu einem falschen Widerstand gegriffen habe. Ich würde mir das zutrauen...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.






