Hallo,
mit einem Mega48 kommt es beim schnellen periodischen Umschalten der
Referenzspannung AVCC<->1V1(intern Ref) zum Reset. Hat jemand in der
Richtung schon eine Beobachtung gemacht oder gar eine Erklärung? Die
Umwandlung selber läuft mit Autotrigger und 125kHz, Versorgung 5V.
Sowohl AVCC als auch 1V1 dauerhaft allein machen kein Problem.
Gruß
Robert schrieb:> mit einem Mega48 kommt es beim schnellen periodischen Umschalten der> Referenzspannung AVCC<->1V1(intern Ref) zum Reset. Hat jemand in der> Richtung schon eine Beobachtung gemacht oder gar eine Erklärung?
Ja, wenn die Sache bei mir nicht bei einem Mega48 aufgetreten ist,
sondern bei einem Mega1284P.
Dein erster Ansatz sollte sein, direkt nach dem ungewollten Reset die
Resetursache auszulesen (MCUSR) und dir ausgeben zu lassen.
Wenn darin BORF gesetzt ist, dann ist es dieselbe Sache wie bei mir und
ich kann dir dann nicht nur die Erklärung liefern, wie das zustande
kommt, sondern auch einen Tip zur Abhilfe geben.
c-hater schrieb:> Dein erster Ansatz sollte sein, direkt nach dem ungewollten Reset die> Resetursache auszulesen (MCUSR) und dir ausgeben zu lassen.
Danke für den Tipp bzgl. BORF, dem ich mal nachgehen werde.
Daniel T. schrieb:> Könnte an der Stromversorgung liegen. Fehlt der> VCC-Abblockkondensator?
Nein. Ansonsten Standardbeschaltung mit dem üblichen Filter an AVCC und
Kondensator an AREF.
Robert schrieb:> Nein. Ansonsten Standardbeschaltung mit dem üblichen Filter an AVCC und> Kondensator an AREF.
Und damit schaltest Du einen 100nF Kondensator mit 1,1V hart auf VCC
(vermutlich AVCC), und wunderst Dich dann dass die Betriebsspannung
einbricht und Reset auslöst? Hättest Du mal einen Schaltplan gemalt, da
sieht man sowas.
Jim M. schrieb:> Du mal einen Schaltplan gemalt
Der Schaltplan hat uns nicht zu interessieren.
Robert (Gast) hat sich dazu entschlossen, dass es nicht an der Schaltung
liegen kann.
Wichtig wäre, bei welcher Umschaltrichtung der Effekt auftritt.
Ich könnte mir vorstellen, wenn der 100nF auf 5V aufgeladen ist und dann
an die 1,1V gelegt wird, daß dann die BOR-Schaltschwelle hoch geht, d.h.
das BOR auslöst.
Jim M. schrieb:> Und damit schaltest Du einen 100nF Kondensator mit 1,1V hart auf VCC> (vermutlich AVCC), und wunderst Dich dann dass die Betriebsspannung> einbricht und Reset auslöst?
Wenn das die gleiche Sache ist, die mir passiert ist, dann ist deine
Andeutung des Wirkungsmechanismus nicht korrekt.
Vielmehr geschieht der ungewollte Reset beim Umschalten von AVCC auf die
interne Referenz und zwar dadurch, dass deren Ausgang kurzzeitig HOCH
gezogen wird. Da diese Referenz gleichzeitig die Referenz für den BOD
ist, "sieht" dieser nun eine zu geringe Versorgungsspannung (obwohl sie
in Wirklichkeit nachweislich nicht einbricht) und löst somit
fälschlicherweise den Reset aus.
Nun sollte man meinen, dass eine Verkleinerung (oder vollständiges
Weglassen) des Kondensators an AREF das Problem lösen würde. Aber möööp:
das tut es leider nicht! Die in diesem Kondensator gespeicherte Ladung
ist also offensichtlich nicht die Ursache des Problems.
Meine Schluss war damals deshalb: Es bleibt als einzig denkbare Ursache
ein Fehler im Analog-Multiplexer, der irgendwie lange genug zur
Auslösung des BOD für eine Art "Querpfad" zwischen AVCC und der internen
Referenz sorgt. Leider läßt sich das nicht durch Messung verifizieren,
weil man an das entsprechende Signal von aussen nicht herankommt.
Es muss deshalb ein indirekter Beweis genügen (der gleichzeitig die
Lösung für das Problem darstellt). Voraussetzung: es läuft aktuell keine
AD-Wandlung. Dann ADMUX nicht direkt von AVCC auf interne Referenz
umschalten, sondern einen Zwischenschritt bei AREF einlegen. Und schon
klappt es, ohne dass der BOD anspringt.
Achtung: Die Voraussetzung der nicht laufenden Wandlung ist zwingend,
sonst funktioniert der Trick nicht, weil dann nur der zuletzt
geschriebene Zustand von ADMUX tatsächlich übernommen wird (beim Ende
der laufenden Wandlung), der Zwischenschritt wird dann also nicht
wirklich ausgeführt. Das bedeutet gleichzeitig übrigens auch: im
FreeRunning-Mode der ADC ist der Workaround leider nicht anwendbar.
c-hater schrieb:> Das bedeutet gleichzeitig übrigens auch: im> FreeRunning-Mode der ADC ist der Workaround leider nicht anwendbar.
Korrektur: Anwendbar wäre er schon, aber er kostet dann einen kompletten
Wandlungszyklus für den Zwischenschritt, was im Allgemeinen unerwünscht
sein dürfte.
Besten Dank @alle für die Rückmeldungen. Egal ob jetzt zutrifft
Jim M. schrieb:> Und damit schaltest Du einen 100nF Kondensator mit 1,1V hart auf VCC> (vermutlich AVCC), und wunderst Dich dann dass die Betriebsspannung> einbricht und Reset auslöst?
oder
c-hater schrieb:> Die in diesem Kondensator gespeicherte Ladung> ist also offensichtlich nicht die Ursache des Problems,
Fakt ist, daß tatsächlich BOR auslöst. Und zwar bis hinunter zum
kleinsten 1.8V Level. Offensichtlich lassen sich also die beiden
ADU-Referenzarten
- AVCC with external capacitor at AREF pin und
- Internal 1.1V voltage reference with external capacitor at AREF pin
nicht ohne weiteres schnell abwechselnd nutzen- jedenfalls nicht
zusammen mit BOR bzw. ohne einen hypothetischen Spannungseinbruch (den
ich leider nicht überprüfen kann) in Kauf zu nehmen. Den Tipp
c-hater schrieb:> Dann ADMUX nicht direkt von AVCC auf interne Referenz> umschalten, sondern einen Zwischenschritt bei AREF einlegen. Und schon> klappt es, ohne dass der BOD anspringt.
werde ich bei Gelegenheit mal testen- für meine aktuelle App inkl. BOR
langt mir nun vorerst eine einzige Referenz, zumal ich auf den ADU
FreeRunning Mode nicht verzichten möchte.