Hallo, ich stehe im Moment vor folgendem Problem: Ich nutze einen Xmega256A3 in einer recht komplexen, Akkubetriebenen Schaltung. Eine der Funktionen die der Xmega erfüllen muss ist die, Strom in und aus dem Akku aufzusumieren um so den Füllstand recht genau zu bestimmen. Der Xmega wird über den Akku dauerhaft gespeist. Es ist also nicht nötig die Werte auch ohne Betriebsspannung aufrechtzuhalten. Was mich jedoch stört ist das der Wert bei jeder Reprogrammierung verloren geht. Ich habe bereits versucht das ganze in die .noinit - Abteilung zu verlegen um somit ein Überschreiben der Variable zu verhindern. Das klappt auch ganz gut beim normalen Reset....nicht jedoch beim Reprogrammieren. Ist es unvermeidlich dass der Raminhalt beim Reprogrammieren des Chips gelöscht wird ? Oder gibt es vielleicht doch eine Möglichkeit wie ich meine Variable behalten kann ? MfG, Marc Seiffert
Das mit dem Eeprom wollte ich eigentlich vermeiden: 1. Ich finde bei Atmel keine Informationen dazu wie oft das EEPROM neu beschrieben werden darf. Ich müsste also grob schätzen...und das dürfte aufgrund des Technologieunterschiedes zwischen Mega und Xmega vermutlich eher schwierig werden. 2. Der Akku wird mit 1C geladen. Das heist ich muss recht oft speichern wenn ich die genauigkeit nicht in den Keller fallen lassen will....und dann noch die Fragen wie was passiert wenn die Daten gerade geschrieben werden wenn ich den Chip neuprogrammiere.... Ich sehe nur im Moment eigentlich keinen Grund dafür warum das SRAM beim Reprogrammieren unbedingt gelöscht wird....am liebsten wäre mir das könnte man einfach ausstellen ^^
Marc Seiffert schrieb: > 1. Ich finde bei Atmel keine Informationen dazu wie oft das EEPROM neu > beschrieben werden darf. Ich müsste also grob schätzen...und das dürfte > aufgrund des Technologieunterschiedes zwischen Mega und Xmega vermutlich > eher schwierig werden. Ich seh das so: Da der Xmega neuer als der Mega ist, werden seine Technologiedaten wohl nicht schlechter sein, als die eines Mega. Die garantierte Zyklenzahl des Mega wirst du wohl auch beim XMega als Minimalwert vorfinden. > 2. Der Akku wird mit 1C geladen. Das heist ich muss recht oft speichern > wenn ich die genauigkeit nicht in den Keller fallen lassen will.... Läuft deine Schaltung eigentlich im Dauerbetrieb? Denn: Ich denke, du gaukelst dir da eine Genauigkeit vor, die du sowieso nicht hast. Ein Akku, der einfach nur rumliegt ohne etwas zu tun, verliert ebenfalls an Kapazität. Je nach Technologie einmal mehr und einmal weniger. Aber weniger wird es ganz von alleine. Dazu kommt: Lade 800mA in einen Akku rein. Du wirst nicht 800mA raussaugen können. Nach ein paar Lade/Entladezyklen ist dein Ladezustand sowieso nur noch ein Schätzwert, wenn du nur geladene mA mit entnommenen mA verrechnest. > und > dann noch die Fragen wie was passiert wenn die Daten gerade geschrieben > werden wenn ich den Chip neuprogrammiere.... wenn erst mal alles fertig ist, programmierst du ja nicht den Chip ständig neu
Hi >1. Ich finde bei Atmel keine Informationen dazu wie oft das EEPROM neu >beschrieben werden darf. Ich müsste also grob schätzen...und das dürfte... Datenblatt: EEPROM Write/Erase cycles 25°C 80K 85°C 30K MfG Spess
> Ich seh das so: > Da der Xmega neuer als der Mega ist, werden seine Technologiedaten wohl > nicht schlechter sein, als die eines Mega. Die garantierte Zyklenzahl > des Mega wirst du wohl auch beim XMega als Minimalwert vorfinden. Das glaube ich leider nicht...ich nehme an dass der Xmega eine kleinere Strukturgröße hat wie die Mega-Serie --> das würde dazu führen dass das EEPROM seltener neu beschrieben werden muss bevor die ersten Fehler auftregen. > Läuft deine Schaltung eigentlich im Dauerbetrieb? Ja...allerdings ist die Stromaufname der Schaltung extrem unterschiedlich je nachdem was grad getan wird (2mA im Standby bis zu 8A bei Vollast). > Denn: Ich denke, du gaukelst dir da eine Genauigkeit vor, die du sowieso > nicht hast. Ein Akku, der einfach nur rumliegt ohne etwas zu tun, > verliert ebenfalls an Kapazität. Je nach Technologie einmal mehr und > einmal weniger. Aber weniger wird es ganz von alleine. > > Dazu kommt: > Lade 800mA in einen Akku rein. Du wirst nicht 800mA raussaugen können. > Nach ein paar Lade/Entladezyklen ist dein Ladezustand sowieso nur noch > ein Schätzwert. Jeder vollständige Lade- / Entladezyklus führt dazu das das ganze neu kalibriert wird. Und die verwendeten Akkus sind was die Verwertbarkeit der Gespeicherten Energie angeht recht gut....aber ich mach mir da nix vor. 5% Tolerant für den Ladezustand sehe ich als realistisch an (und habe ich auch schon ohne Probleme in Repeditivversuchen erreicht). > wenn erst mal alles fertig ist, programmierst du ja nicht den Chip > ständig neu Ja das ist richtig....aber ich hab noch einiges an Weg vor mir...^^ @ spess53 Wo hast die Infos her ? Hab in keinem Datenblatt was gefunden....
Schließte eben nen seriellen FRAM an (FM24C16). Peter
Hi >@ spess53 >Wo hast die Infos her ? Hab in keinem Datenblatt was gefunden.... Aktuelles Datenblatt vom ATxmega256D3/ATxmega192D3/ATxmega128D3/ATxmega64D3 S.59. MfG Spess
Und im Datenblatt der A-Serie ist es Seite 64 (Kapitel 34.4).
@ Peter Dannegger Das ganze ist schon komplett fertig gestellt und in nem Gehäuse. Eine Bastellösung ist auszuschließen, auch wenn den Fram nur ausm Regal holen müsste. Vor allem da das ganze eine Anwendung ist die insofern kritisch ist als dass wenn sie ausfällt ich unter Wasser im Dunklen darstehe ;) @ spess53 , Stefan Ernst Danke für die Infos, da habt ihr beide recht. Witzig ist dass diese Information bei der A1-Serie nicht zu finden ist o_O
Was spricht gegen ein Speichern im EEPROM kurz vor der Neuprogrammierung? Falls du einen Bootloader nutzt, kannst du das ja direkt mit dem Aufruf machen. Selbst wenn nicht, sollte die Verzögerung zwischen manuellem Auslösen des Speicherns und der Programmierung nicht groß ins Gewicht fallen, so dass dir kaum was verloren geht. Und außerdem hast du das Problem ja nur während der Entwicklung. Und da wirst du ja wohl kaum in die Dimension der maximalen Schreibzyklen kommen!?
Das mit dem Maximalen Schreibzyklen beim debuggen...irgendwie hast du da recht. Hab immer so gerechnet wie für ein fertiges Produkt ^^ Hab nu aber ne andere Lösung gefunden: Wenn ich anstelle des "Chip Erase" im Menü des Proggers "Programm Erase" wähle wird der SRAM nicht genullt und ich kann den Wert übers Prgrammieren hinweg behalten. Danke an alle !
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.