Forum: Mikrocontroller und Digitale Elektronik ATMEGA - Variable bei Reprogrammierung nicht ändern


von Marc S. (euro)


Lesenswert?

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

von Sven (Gast)


Lesenswert?

Ab und zu in den Eeprom sichern.

von Marc S. (euro)


Lesenswert?

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 ^^

von Karl H. (kbuchegg)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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

von Marc S. (euro)


Lesenswert?

> 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....

von Peter D. (peda)


Lesenswert?

Schließte eben nen seriellen FRAM an (FM24C16).


Peter

von spess53 (Gast)


Lesenswert?

Hi

>@ spess53
>Wo hast die Infos her ? Hab in keinem Datenblatt was gefunden....

Aktuelles Datenblatt vom 
ATxmega256D3/ATxmega192D3/ATxmega128D3/ATxmega64D3
S.59.

MfG Spess

von Stefan E. (sternst)


Lesenswert?

Und im Datenblatt der A-Serie ist es Seite 64 (Kapitel 34.4).

von Marc S. (euro)


Lesenswert?

@ 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

von Dein Akku (Gast)


Lesenswert?

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!?

von Marc S. (euro)


Lesenswert?

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
Noch kein Account? Hier anmelden.