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.