Moin! ich möchte, daß mein AVR jedes mal wenn er ausgeschaltet wird noch ein paar Einstellungen im EEPROM speichert. Hatte mir das irgendwie so vorgestellt, daß an einem Eingangs-Pin die normale Versorgungsspannung anliegt und der Zustand des Pins im AVR die ganze Zeit gepollt wird. Sobald der Pin Low geht soll er dann halt in die EEPROM-Schreib-Routine hüpfen. Das setzt natürlich vorraus, daß der AVR noch ein paar Millisekunden am leben erhalten wird (z.B. mit Elko vor VCC). Ist das möglich? Wie macht man sowas oder gibt es einen anderen Weg? danke, ciao christian
Hallo Christian, deine Idee ist schon ganz gut, nur dass sie so noch nicht funktionieren würde, weil auch der Elko die Spannung für deinen Portpin aufbringen würde. Eine einfache Diode dazwischen und das ganze sollte so funktionieren. Du musst nur einen Elko nehmen, der eine Kapazität hat, die groß genug ist, alle Daten noch sicher im EEPROM zu sichern. Problematisch könnte sein, dass das EEPROm sich nicht unendlich oft beschreiben lässt. Das kommt dann auf die Anwendung an, ob es sinnvoll ist ... Ein anderer Weg wäre, einfach einen Ausschalter mit einem Portpin zu verbinden und bei Betätigung des Tasters alle Daten abzuspeichern und anschließend mit einem anderen Portpin die Stomversorgung zu unterbrechen (z.B. über ein Relais, ...) Gruß Steffen
So eine selbsterhaltende Schaltung mit einem Relais wäre wohl die beste lösung wenn es nicht so unbedingt auf die Anzahl der Ausgänge ankommt. Da der Controller dann die Daten auch ganz sicher ins EEprom schreibt.
moin! so, also die Lösung mit der Diode wird wohl nicht funktionieren denk ich... da bleiben von meinen 5V versorgungsspannung nicht mehr genug für den controller übrig... die eeprom-wiederbeschreibbarkeits-problematik wollte ich eigentlich möglichst minimieren, indem nur die daten weggeschrieben werden, die sich auch wirklich geändert haben... und so oft wird man an dem gerät vermute ich die einstellungen nicht ändern... die geschichte mit dem relais habe ich nicht ganz verstanden... gut, es gibt einen aus-schalter, der bewirkt das der controller alles abspeichert und sich selber danach per relais die stromversorgung kappt... nur wie wird das ganze wieder angeschaltet? ... ciao christian
Hallo, es empfiehlt sich nicht, die 5V-Spannung über Kapazitäten zu puffern. Bei einem Netzausfall fällt diese Spannung zu schnell auf die Resetspannung. Besser ist es, eine höhere Spannung zur Pufferung zu verwenden, z.B. 24V. Auf jeden Fall muss vor dem Pufferkondensator eine Diode zum Pin der Versorgungsspannung liegen. Sonst entlädt sich der Kondensator eventuell über das Netzteil. Um die Störempfindlichkeit zu minimieren würde ich ein RC-Glied an den Portpin empfehlen. Sonst führt jeder Störimpuls auf der Leitung zum Pin zum Speichern der Daten. Die Lösung mit dem Schalter funktioniert leider nicht, wenn die Versorgungsleitung gezogen wird. Um die Anzahl Schreibvorgänge auf das EEPROM zu optimieren, kann man das EEPROM quasi in Sektoren aufteilen. Bei jedem Schreibvorgang wird der Sektorschreibzähler um eins erhöht. Ist die maximale Anzahl Schreibvorgänge in diesem Sektor erreicht, dann einfach auf den nächsten Sektor umschalten. Zur zusätzlichen Sicherheit kann noch eine CRC-Summe mit eingebaut werden. Dadurch lässt sich nach dem Einschalten feststellen, ob das letzte Speichern erfolgreich war. Nun viel Spass beim Umsetzen.
Hallo, Ich würde die versorgungs spannung vor dem regler messen, und wenn er unter einen gewissen wert geht, die einstellungen speichern. Wenn der ELKO nach der regler gross genug ist, hast Du noch ausreichend zeit zum speichern. Zusetzlich die daten im EEPROM mit einen CRC sichern, wenn einen CRC fehler beim starten detectiert wird, standaard werte aus dem ROM/FLASH nehmen. (wie Dieter auch schon sagte) Grüße Mark.
Hallo, die Spannung vor dem Regler messen und überwachen ist wohl am besten geeigent und die Entkopplung des µP vom Netzteil mit einem Transistor vornehmen, da gibt es keinen Spannungsabfall. Ich benutze zur Setup Speicherung ein FRAM (25C020 währe allerdings ein zusätzliches Bauteil), daß ist im Gegensatz zum EEPROM extrem schnell(100nS) und unterliegt keinen max Schreibzyclen. MfG Manfred Glahe
Hallo! danke an euch alle, das waren schonmal ein paar ziemlich gute tips! ... @dieter; das eeprom in sektoren aufzuteilen hört sich gut an. wenn das funktionieren soll, dann müssen die maximalen schreibzugriffe ja pro speicherzelle gelten und nicht gleich für das gesamte eeprom. ist das so? @manfred; unbegrenztes schreiben hört sich natürlich verlockend an. allerdings scheinen die teile a) ziemlich teuer zu sein, b) ziemlich groß (>=DIL32...) und c) für meine zwecke auch ziemlich überdimensioniert (>=1Mbit). muß eigentlich lediglich maximal 16 Bytes sichern. laut dieter könnte ich also mein 512Byte-EEPROM in 32 Sektoren aufteilen. wenn diese laut atmel-datenblatt ca. 100000 mal beschrieben werden können ergibt das insgesamt 3.2Mio schreibzugriffe. geht man davon aus, daß man das gerät z.B. durchschnittlich 4 mal am Tag an- und ausschaltet und auch jedes mal die config ändert, ergibt sich eine lebensdauer von ca. 2200 Jahren. das sollte reichen :) ciao christian
@christian 8 polig SOT23, SPI BUS, 256 Byte, (32KB Type ca. 10 EUR) MfG Manfred Glahe
Hallo, die maximal zulässigen Schreibzugriffe auf das EEPROM gelten pro Speicherzelle. Gruß Dieter
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.