Hi, ich möchte bei einem Spannungsabbruch noch einen Wert im Code ins Eeprom schreiben, sozusagen als Backup. Ich verwende einen ATXMEGA128A1 und habe nun den kurzen Beitrag über Brown Out Detektion hier im Forum gelesen. Nun frage ich mich, wie ich das ganze im C-Code umsetzen kann. Gibt es eine ISR Routine, welche direkt mit dem BO Detektion verbunden ist, so das bei Spannungsausfall diese Routine aufgerufen wird? Vielen Dank für eure Hilfe
Matthias schrieb: > Gibt es eine ISR Routine, welche direkt mit dem BO Detektion verbunden > ist, so das bei Spannungsausfall diese Routine aufgerufen wird? Nein. Macht auch keinen Sinn, da im BOR-Fall die Spannung nicht mehr zur Versorgung des Controllers+Perpiherie ausreicht. Eventuell angeschlossene Schaltungsteile sind ebenfalls Verbraucher, die den Rest an Energie vernichten. Du brauchst eine aktive Überwachung der Versorgungsspannung und einen geeigneten Energiespeicher (z.B.Elko) der die Zeit für das Schreiben des EEPROM überbrücken kann.
Es gibt keine isr, aber nimm nimm nen interrupt pin und konfiguriert denn auf low-level, hänge den an deine Versorgung und spendiert deinem mega nen Kondition, dass der noch nachläuft...
Hi, jo das habe ich hier nun auch so gelesen. http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=641935 Kennt jemand eventuell einen sehr zuverlässigen IC zur externen BO Detektion? Ich kenen zwar die vorgeschlagenen Dioden , Elko schaltungen würde jedoch lieber auf etwas fertiges zurückgreifen. Vielen Dank
Du kannst mit dem ADC Deine VCC messen und bei Unterschreitung den EEPROM beschreiben. Der Schwellwert muß aber noch genügend oberhalb des Brownout sein. Peter
Ist es möglich des VCC Pin auf einen positiven ADC Pin zu geben und dann mittels internem Komparator diesen mit VCC zu vergleichen mit einer z.B. 10 % Hystherese. Wenn nun der Komparator schaltet, dann soll eine ISR aufgerufen werden, in welcher ich die EEPROM Schreibmethode aufrufe. Vielen Dank für eure Hilfe
Wenn der Controller über einen Komparator verfügt, dann kannst du von diesem einen Interrupt auslösen lassen. Ist einfacher als den ADC zu verwenden.
Das hört sich doch gut an. Ich nehme den positiven Pin des internen Komparators des XMEGA und schließe ihn an VCC an. Den negativen Pin kann ich mittels 6 Bit VCC Scaler des XMEGA mit z.B. VCC*58/64 belegen. MIt einer kleinen Hyterese sollte dann bei ca. 3 V die ISR augerufen werden. Der XMEGA hat da wirkich viele Funktionen laut DB intern bereits vorhanden.
Problem könnte sein, wenn die Spannung dann zusammenfällt. Die Spannung auf dem positiven Pin ist vom VCC Pin abgegriffen. Nun sinkt diese Versorgungsspannung. Daraufhin sinkt jedoch auch die intern generierte negative Spannung. Somit unterschreitet der Wert des positiven Pins niemals den Wert des negativen. Also geht das wohl so nicht.
... Also geht das wohl so nicht ... Sehe ich auch so. Da muss eine stabile Referenzspannung ran. Hat der Controller eine interne Referenz die lange genug "durchhält", wenn die Spannung fällt? Bei einer 3,3 V Versorgung, würde ich schon bei 3,15 V "zuschlagen". Vielleicht kannst du das Fallen der Spannung auch an einem anderen Punkt deiner Schaltung feststellen (z. B. vor dem Stabi-IC oder so).
Ich müsste eigentlich nur die VCC in einem zweiten Pfad mit einer starken Elko-Schaltung Puffern und als Last für den Zweig nur den negativen Pin des uC nehmen. Der sollte dann viel länger durchhalten und so die Referenz bilden können. Kennt jemand von euch nen fertigen Bausatz zum Zwischenpuffern von 3,3 V. Vielen Dank
Vielleicht nun doch so: Ich nehmen die 5 V Versorgungsspannung Vin direkt vom Stecker mit einem Spannungsteiler auf 3,3 V auf einen freien INT0 Pin beim Port A des XMEGA. Die VIn geht auf einen Spannunsgwandler von 5 -> 3,3 V der mit ca. 110 uF vorgepuffert wird und einer zusätzlichen Diode. wie hier: http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren Ich triggere wie beschrieben den INTO auf die negative Flanke und habe dann noch ein paar milisekunden Zeit um zu schreiben.
Mit nem Goldcape und der Diode bekomme ich ne Bufferzeit von 320 ms hin. Das dürfte locker ausreichen um ins EEPROM zu schreiben.
Hi! Wenn du nen Spannungsregler vor Vdd für den µC hat, kannst du die Spannung dort messen. Bevor der Elko vor dem Spannungsregler leer ist, hast du mehr Zeit. Gruß PP
Was für´n Aufwand ... Beim zilog z8encore ist BO-Detection on-chip. Wieder ein guter Grund, nicht auf die atmel-Schiene umzusteigen ! :-)
thisamplifierisloud schrieb: > Was für´n Aufwand ... > Beim zilog z8encore ist BO-Detection on-chip. > > Wieder ein guter Grund, nicht auf die atmel-Schiene umzusteigen ! :-) Wenn Du den thread gelesen hättest, wüsstest Du, daß auch bei den Atmels die BO Detection on-chip ist. Ziel ist es, etwas (EEPROM schreiben) zu tun, kurz bevor die BO zuschlägt...
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.