jetzt stehe ich wirklich auf dem Schlauch und komme nicht weiter.
Zufällig habe ich ein mir nicht erklärbares Verhalten entdeckt und will der Ursache auf den Grund gehen und verstehen, was passiert.
Um andere Effekt soweit wie möglich auszuschließen, habe ich meine Schaltung soweit reduziert, dass nur noch der Controller ATmega168A-PU und ein Elko 470uF an der Versorgung drauf ist.
Der Code auf dem Controller ist wie folgt:
Alle Pins als Inputs mit Pullup
Ein Pin (PB1) als Ausgang high
while(1)
Die Fuses sind so programmiert: Der Controller läuft mit dem internen RC-Oszillator und CLDIV8, also mit 1MHz. Brown-Out Dectetion und Watchdog sind abgeschaltet, ein Bootloader wird nicht verwendet.
Wenn ich die Versorgung trenne, fällt diese langsam ab (rote Kurve). An dem als Output geschalteten Pin (gelbe Kurve) fällt sie genauso, bis sie dann bei ca. 2,1V auf Null springt. Die Versorgungsspannung selbst fällt weiter ab, nun aber langsamer als zuvor.
Für mich sieht das so aus, als ob der Controller bei 2,1V ein dauerhaftes Reset bekommt.
Um das zu testen nutze ich die fallende Flanke von PB1, um die Spannungsversorgung wieder einzuschalten. Dazu erweitere ich seine Funktion, so dass er bei seiner Initialisierung ein paarmal toggelt.
Damit wird also nach dem Sprung von 2,1V auf 0V die Versorgung gleich wieder eingeschaltet, der Pin toggelt, der Controller scheint also tatsächlich aus dem Reset zu kommen.
Im Datenblatt finde ich folgendes:
Ein Power-On Reset wird bei Unterschreiten von Vpot ausgelöst. Vpot ist mit max. 1,6V angegeben.
Brown-Out Erkennung ist abgeschaltet, sollte aber bis hinunter auf 1,8V funktionieren.
Bei einer Taktfrequenz von 4MHz ist der sichere Betrieb bis runter auf 1,8V angegeben (Safe Operating Area).
Meine Frage ist nun, was bei 2,1V passiert. Nach den Angaben im Datenblatt sollte der Controller bis hinunter auf 1,8MHz funktionieren. Warum geht der Controller in Reset?
Brown-Out Erkennung ist abgeschaltet, sollte aber bis hinunter auf 1,8V
funktionieren.
Operating Voltage ist laut Datenblatt 2,7-5,5V, nur die speziellen A und V Versionen gehen bis 1,8V runter. Bist du sicher, so ein Modell vorliegen zu haben?
Schaltung soweit reduziert, dass nur noch der Controller ATmega168A-PU
und ein Elko 470uF an der Versorgung drauf ist.
Das ist schonmal ungünstig: Es muss ein Keramikkondensator mit z.B. 100 nF parallel zur Versorgung möglichst nahe am Controller vorhanden sein. Ein Elko reicht nicht, der ist zu langsam im relevanten Frequenzbereich.
Ein paar Fotos und Screenshots machen – vom IC selbst (Aufschrift lesbar), vom Aufbau, ein Screenshot der Fuses und ein größeres Bild vom Oszilloskopbild, wo man die Skala etc. sehen kann und nicht so einen kleinen Ausschnitt. Code anhängen, auch wenn er vermeintlich kurz sein soll – Fehler kann man auch in kurzen Codes fabrizieren. Schaltplan wäre auch hilfreich.
Dafür gibt es in so gut wie allen modernen LCD-TFT-Geräten die Funktion, sich das aktuelle Bild via USB auf den PC zu schicken oder auf einem Speicherstick abzulegen – die meisten User machen sich aber nicht einmal die Mühe, wenigstens einmal die Bedienungsanleitung des erworbenen Geräts mit den Augen durchzufliegen oder zumindest querzulesen. Eigentlich sollte man so etwas schon vor dem Kauf machen, da die PDFs zum Download von den Händlern in der Regel auch angeboten werden.
Entspr. den Angaben auf der Seite sollte das die Version -PU sein, die bis zu 1,8V funktioniert.
Der Aufdruck auf dem Controller lautet "ATMEGA328P U", siehe Foto. Im auf der genannten Seite verlinkten Datenblatt ist aber ein Controller mit diesem Aufdruck nicht enthalten.
Wenn ich nun mit dem andern Controller den gleichen Test mache, springt der Pin wie gehabt bei ca. 2,1V auf 0V. Es hat sich also nichts geändert.
Sowohl Reichelt als auch Mouser haben im Online Shop das richtige
Datenblatt hinterlegt, aber fälschlicherweise "ab 1,8V" angegeben. Im
Datenblatt steht 2,7V.
Nö. 1,8 V sind korrekt, siehe angehängten Ausschnitt aus dem Datenblatt ATmega48A/PA/88A/PA/168A/PA/328/P, S. 312.
Im auf der genannten Seite verlinkten Datenblatt ist aber ein Controller
mit diesem Aufdruck nicht enthalten.
ATmega328-PU, wobei P für das 28P3-Package steht.
Wenn du den Controller in der Hand hältst, siehst du die Bauform und brauchst es nicht zusätzlich noch drauf zu schreiben.
Aber hier mal die Schaltung. Vielleicht gibt es ja noch andere Möglichkeiten, warum sie bei 2,1V aussteigt.
Und nochmal als jpg, bei png stimmt die Darstellung nicht.
Weil ich zunehmen verwirrt bin:
Welchen Controller habe ich nun hier? Ist das der mit Pico Power?
Und welchen müsste ich bei Reichelt bestellen, damit ich den gewünschten bekomme?
Der Betrieb der Chips (ATMEGA328P-PU oder -AU) ist runter bis ungefähr zu der Angabe im Datenblatt möglich – ich weiß es 100%, weil ich gerade noch an meiner Fernbedienung baue, die mit Batterien vorsorgt wird und in der ich einen 328P-AU verwende. Meine Schaltung habe ich bis runter auf ca. 2,0V konzipiert und deshalb den BOD-Level auf 1,8V eingestellt – auf dem Prototyp kann ich die Spannung sehr präzise mit einem Spannungregler einstellen, um verschiedene Szenarien durchzutesten. Der BOD löst dann bei ca. 1,84V aus und der µC ist im Reset, oberhalb dieser Spannungsschwelle läuft er ganz normal. Ich habe die Schaltung jetzt rausgeholt und den BOD-Detektor testhalber abgeschaltet – damit habe ich einen funktionierenden µC bis ca. 1,55V. Das stimmt auch soweit mit den Angaben des Datenblatts überein – es gibt wie üblich Toleranzen und Angaben 'von - bis', passt aber alles ganz gut zusammen. Der niedrige Stromverbrauch von 0,1µA ist übrigens auch machbar, sofern man imstande ist, codemäßig den µC in den Tiefschlafmodus (Power-Down) zu versetzen und keinen Murks in dem Schaltungsentwurf fabriziert. Diese Stromangabe passt auch zu dem, was im Datenblatt angepriesen und angegeben wird.
ATmega328-PU, wobei P für das 28P3-Package steht.
Wenn du den Controller in der Hand hältst, siehst du die Bauform und
brauchst es nicht zusätzlich noch drauf zu schreiben.
Deshalb meine ich, dass es sich bei dem Aufdruck "328P U" um einen "328P-PU" handelt. Also mit zwei "P". Eben weil das eine P ja durch das gegebene Package schon klar ist.
Ich hatte ebenfalls mal zehn Stück 328P-PU bei Reichelt bestellt (als die gerade relativ günstig waren) und welche mit gleichem Aufdruck bekommen.
Deshalb meine ich, dass es sich bei dem Aufdruck "328P U" um einen
"328P-PU" handelt. Also mit zwei "P". Eben weil das eine P ja durch das
gegebene Package schon klar ist.
Das ist richtig und die Aufdrucke sind korrekt und es sind KEINE Fakechips, die P-Redundanz wurde – aus welchen Gründen auch immer – entfernt.
Das mit dem AVCC werde ich heute Nachmittag ausprobieren.
Das Bild von dem Controller habe ich ja schon oben hochgeladen.
Ich bin mir aber noch immer nicht darüber im klaren, ob das wirklich einer mit Pico Power bis 1,8V ist.
Die Geheimniskrämerei ist auffällig, und bei solchen kuriosen Fehlern leider auch typisch. Vielleicht müsste er uns töten, wenn wir die Schaltung sehen würden.
Vielen Dank an alle, die sich bemüht haben und mir bei der Fehlersuche
geholfen haben.
Die grösste Mühe für den geneigten Leser ist es die Beratungs-
resistenz des Hilfesuchenden zu überwinden.
Schaltpläne in Prosa und die häufig auftretende Salami-Taktik
machen dem potentiellen Helfer das Leben schwer.
Um andere Effekt soweit wie möglich auszuschließen, habe ich meine
Schaltung soweit reduziert, dass nur noch der Controller ATmega168A-PU
und ein Elko 470uF an der Versorgung drauf ist.
Die grösste Mühe für den geneigten Leser ist es die
Beratungs-resistenz des Hilfesuchenden zu überwinden.
Das stimmt, oftmals.
Wobei allerdings so manches Mal der Umgangston des einen oder anderen 'geneigten Lesers' nicht gerade hilfreich ist.
Und die Resistenz kann durchaus auf beiden Seiten vorkommen, siehe die Automotive-Nebelkerze.
Fazit: kaum macht man es so, wie es im Datenblatt vorgesehen ist, und schon funktioniert der Baustein, wie es laut Datenblatt vorgesehen ist.
EDIT: dieses in Datenblättern gern verwendete "should" wird oft falsch übersetzt mit "sollte", es ist hier aber nur die höfliche Form eines expliziten "muss".
Jetzt habe ich aber mal eine Frage zur Automotive Version. Ist das ein anderes Produkt, oder lediglich ein anderes Datenblatt mit weniger Mut zur Lücke in den elektrischen Daten?
Ich denke 100nF an jedem der Versorgungsspannungspärchen und falls du das interne EEPROM nutzt, ist so eine langsam fallende Spannung, wie du die mit dem 470uF Elko fabrizierst, eine gute Möglichkeit den EEPROM-Inhalt zu zerstören.
Vollständigkeitshalber noch diese Info: ich komme ohne BOD mit meinem 328P-AU eigentlich auch bis auf ca. 1,40V herunter – bei VCC=1,55V hört meine rote LED auf zu leuchten, aber ich habe jetzt nochmal genauer nachgeschaut und die Fernbedienung selbst sendet bei Tastendruck weiter bis 1,4V und erst dadrunter ist dann definitiv Feierabend. Dabei habe ich sogar zwei Nachteile gegenüber dem ATMEGA hier im Thread – ich benutze einen externen Quarz und dann auch noch mit 4MHz. Trotzdem funktioniert es bei Raumtemperatur bis 1,4V – der sichere Betrieb ist das aber nicht, daher habe ich schon von Anfang an die Grenze für mich bei 2V bzw. mit BOD=1,8V angesetzt.