Ein Mega88 getaktet mit 7,37MHz Quarz, versorgt mit 5V macht bei aktiviertem brownout 4,3V Zicken (reset?), die ich nicht nachvollziehen kann. Es sieht so aus, als ob der Brownout dann und wann zuschlägt, wenn ungenutzte, offene Pins floaten (ich weiss, das macht man nicht). Das versuchsweise aktivieren der internen pullup's reduziert nur die Häufigkeit, stellt aber das Problem nicht gänzlich ab. Messungen mit dem DSO an der Vcc haben keine Werte unter 4,9V ergeben. Im Datenblatt steht als obere Schranke für den brownout 4,5V - also eigentlich selbst im worstcase genug Luft. Am Avcc habe ich stellenweise einen kurzen Einbruch von 200mV gemessen. (liegt über 100 Ohms an Vcc und 220nF an Masse) Ist nicht schön, aber laut Datenblatt innerhalb der zulässigen Grenzen von 0,3V. Das Ganze lässt sich so auf mehreren Exemplaren nachvollziehen, defekter Chip ist also eher unwahrscheinlich. Der Aufbau ist sauber, Vcc mit Kapazitäten abgeblockt, Groundplane. Nimmt man die Fuse für den brownoutlevel auf 2,6V, läuft alles normal. Jetzt zur Frage: nimmt der brownout detector seine Spannung etwa am AVCC ab? Wer zieht hier sporadisch bis zu 20mA aus dem Avcc? Hat jemand schon ähnliche Erfahrungen gemacht, oder eine Idee was da passiert und wie man das verhindern kann?
Mit der BOD vom Atmel hab ich noch nicht gearbeitet, kenne aber nen ähnlichen Effekt von Logikgattern. Speziell beim Pegelwechsel entstehen kurzzeitige, zum Teil aber erhebliche Spannungseinbrüche, die beeinflussen die benachbarte Elektronik, das gibt die schönste Kettenreaktion, weswegen ich jedes Gatter immer mit nem kleinen Kondensator puffere. Beim Atmel könnte das ähnlich sein. Offene Pins flattern, dadurch kommt es zu kurzen Unterspannungen, die die BOD triggern. Normalerweise müßte das auf dem Oszi aber zu sehen sein, versuch mal, direkt an den Pins vom Chip zu messen. Ansonsten kanns noch sein, daß nach außen alles okay scheint, die erwähnten Unterspannungen aber innerhalb des AVR auftreten und die interne Logik durcheinanderbringen. Warum schließt Du die offenen Pins nicht einfach nach Masse ab?
Hi Dennis, die Spannungen sind alle in einem Abstand von weniger als 5mm vom Pin des Mega88 gemessen. DSO macht 1GS und hat eine 100MHz Bandbreite, ein Singleshot mit Triggerlevel 4,9V löst über Stunden nicht aus. Tja, der Abschluss der Pins ist in der Testkonfiguration nur über die Pullup's möglich, das hatte ich als ausreichend angesehen. Die Frage bleibt trotzdem, warum löst der brownout hier schon aus. Mit der Einstellung sollte mein system zuverlässiger werden, jetzt habe ich das Gegenteil errreicht.
Es gibt doch ein Register, in dem die letzte Reset-Quelle angegeben wird, sofern es sich nicht Power-On-Reset handelt. Da sollte man eigentlich feststellen können, ob BOD für den letzten Reset verantwortlich war. Das Register muß man natürlich zum Programmstart auslesen (kann es aber eigentlich auch später machen...).
MCUSR ist das Register. Ich kann die BOD-Probleme bei einem Mega168 nachvollziehen, der ja zum 88er weitestgehend kompatibel ist. Ich hatte dazu auch schon einmal einen Thread eröffnet - es gab aber niemanden, der darauf eine Antwort hatte oder dies gar schon einmal erlebt hatte. Bei meinen Exemplaren war auch mit dem Oszi kein "Loch" in der Versorgungspannung zu sehen, trotzdem resetete der Controller in unregelmäßigen Abständen über BrownOut. Nur eine Änderung der Ansteuerung der angeschlossenen Peripherie brachte Abhilfe (oder aber das Ausschalten des BrownOut-Detektors). Auf jeden Fall scheint sich der Controller nicht auf die im Datenblatt angegebenen Mindestpulsbreiten für einen BrownOut-Reset zu halten.
Das der Mega88 tatsächlich einen brownout reset macht, ist unstrittig und überprüfbar. Was jetzt nach vielen Messungen fest steht, ist das das Problem nur Auftritt, wenn bei mir folgende Bedingungen zusammen herschen: 1. ADC sampelt ADC0 und ADC1 zyklisch alle 0,5mS (jeweils 8-fach oversampling) 2. Die Spannung am AVCC differiert mehr als ca. 180mV von VCC nach unten 3. ungenutzte Pins sind nur mit dem interen PullUp's beschaltet. Damit sieht es so aus, als ob die zuverlässige Funktion des brown out detector stark vom ADC und der AVCC abhängt. Was bei mir jetzt durch ausprobieren noch herauskam ist, dass das Setzen des DIDR0 auf $3B das Problem quasi verschwinden lässt. Leider änderen sich durch diesen Registereintrag, der die digitalen Treiber von den analog genutzten Eingängen trennt, auch die Spannungseinbrüche auf der AVCC sodass letztlich kein eindeutiger Schluss auf die Ursache möglich ist. Aber was bleibt ist der Verdacht, dass der Chip leider wenig robust auf Pegel reagiert, die laut Spezifikation durchaus zulässig sind. Insbesondere AVCC scheint kritisch. Betreibt man den Chip übrigens mit 5,2V VCC, ist das Problem auch nicht mehr sichtbar.
> Am Avcc habe ich stellenweise > einen kurzen Einbruch von 200mV gemessen. (liegt über 100 Ohms an Vcc > und 220nF an Masse) Ist nicht schön, aber laut Datenblatt innerhalb der > zulässigen Grenzen von 0,3V. Warum verwendest du überhaupt 100 Ohm? In Datenblatt(seite 252) steht doch etwas anderes, nämlich 10µH und 100n.
Da hast du recht, aber das habe ich als Vorschlag gewertet, und nicht als Notwendigkeit. 100 Ohm sind zum einen billiger und kleiner als 10uH. Zum Anderen wurden auf dem Prototypen an AVCC nie Ströme über 0,2mA gemessen. Damit ergibt sich ein Spannungsabfall über den 100 Ohm von 20mV. Die 300mV sind also mit 15facher Reserve weit genug weg. Die Filterwirkung ist mit meiner Beschaltung bei mittleren Frequenzen eher besser, als mit 10uH und 100nF.
>die Spannungen sind alle in einem Abstand von weniger als 5mm vom Pin >des Mega88 gemessen. Also sowohl GND und VCC am Atmel abgenommen? Nur VCC am Atmel und GND irgendwo anders auf der LP abgenommen könnte zu anderen Ergebnissen führen (Ground bounce). Die Versorgung ist ja auch entsprechend mit 100nF am AVR abgeblockt? Ich abe zwar noch nicht mit mega88 gearbeitet, nur mit 32,64,128er aber da habe ich unbenutze Pins irgendwohin gepullt - braucht nur Strom und Bauteile/Platz.
Versorgung hat 3x 100n + 3u3 Tantal. Das ärgerliche ist ja, dass man das alles im nachhinein korrigieren muss...
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.