www.mikrocontroller.net

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


Autor: Marc Seiffert (euro)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ab und zu in den Eeprom sichern.

Autor: Marc Seiffert (euro)
Datum:

Bewertung
0 lesenswert
nicht 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 ^^

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marc Seiffert (euro)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schließte eben nen seriellen FRAM an (FM24C16).


Peter

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Ernst (sternst)
Datum:

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

Autor: Marc Seiffert (euro)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dein Akku (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!?

Autor: Marc Seiffert (euro)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.