XMega und EEPROM

  • 1
  • 2
  • Page 1 of 2
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

XMega und EEPROM

 · 
Posted: 22.02.2019 - 10:44  ·  #1
Hallo Leute,

ich muss einen Zähler realisieren, der auch nach einem Reset den Wert hat, deswegen ein paar Fragen dazu:

1. Wie oft kann man eine Speicherstelle des EEPROM beschreiben bis diese defekt ist?

2. Ich meine rolf hätte mal was geschrieben, das der AVRco bei EEPROM Schreibbefehlen selbst prüft ob es überhaupt eine Änderung gegeben hat.

Also könnte man ja regelmäßig so vorgehen ohne das EEprom zu schaden oder?

Code
...
{$EEPROM}
//Structconst
 BSysRun   [EEpromEnd-48] : boolean;  // Zustand Run / Stop
...
BSysRun:= ioRunStop;
...


Im Moment mache ich das in etwa so:

Code
...
{$EEPROM}
//Structconst
 BSysRun   [EEpromEnd-48] : boolean;  // Zustand Run / Stop
...
 if BSysRun <>  ioRunStop then BSysRun:= ioRunStop; endif;
...


Thorsten
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: XMega und EEPROM

 · 
Posted: 22.02.2019 - 12:55  ·  #2
Quote by pvs-deck

1. Wie oft kann man eine Speicherstelle des EEPROM beschreiben bis diese defekt ist?

Hallo Thorsten,

bei den Megas steht (meine ich) 10000x im Datenblatt. XMega guggsdu Bild.

[EDIT] Ok falsche Erinnerung ..... Endurance: 100,000 Write/Erase Cycles (Mega32)

Ich mag das EEPROM nicht. Hab früher mal aus Platzgründen Display-Texte ins EEPROM ausgelagert und unter bestimmten Bedingungen hat es mir die Texte zerhagelt. D.h. im Display stand plötzlich nur noch Mist. Irgendwo gab es dann einen Schrieb von Atmel, daß wenn ein Controller mit extrem niedrigen Spannung betrieben wird (und das kann von einem Elko durch elektrochemische Reaktionen kommen), es dann den EEPROM-Inhalt zerschiessen kann.

Harry

Was mußt du zählen? Bereich?
You must be logged in or your permissions are to low to see this Attachment(s).
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: XMega und EEPROM

 · 
Posted: 22.02.2019 - 14:28  ·  #3
Quote by Harry

...
Was mußt du zählen? Bereich?


Hallo Harry,
Unterschiedlich, es geht um die Anzahl der Türöffnungen.
Ich war auch schon am überlegen einen Zwischenspeicher auf die SDCard zu legen, aber auch dieser kann nicht unendlich beschrieben werden.

Es kann bis zu rund 3000 Öffnungen am Tag kommen, ich hatte mir auch schon überlegt einen der beiden 2Byte Speicher der RTC zu nutzen (Batterie) und immer wenn der Speicher an die 250 kommt den Speicher im EEProm oder auf der SD-Card zu schreiben und wieder auf 0 zu setzen.

Und ich bin jetzt noch an eine sehr günstige Alternative zum ISL1208 RTC gekommen der MCP79410 hat 128Byte EEProm und 64Byte SRAM (Batterie) , da könnte ich einiges an Zählern ablegen.
Ich glaube ich bestell mir da mal 50 St zum ersten testen, der ist Pin-Kompatibel mit dem ISL1208.

Kann ich diesen Speicher eigentlich mit dem $UDATA Userdevice über I2C nutzen? Habe ich bis jetzt noch nie gebraucht und noch nie nutzen müssen.

Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: XMega und EEPROM

 · 
Posted: 22.02.2019 - 17:57  ·  #4
Ja, der Compiler prüft ob sich der eeprom Inhalt sich wirklich verändern muss.
Bei extrem häufigem update empfiehlt sich ein FRAM
Rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: XMega und EEPROM

 · 
Posted: 25.02.2019 - 11:20  ·  #5
Hallo rolf,

ich habe mich mal etwas in das Thema Banking Port und UserDevice reingelesen.
Eigentlich ist die Idee dahinter "genial", ich kann jeglichen Externen Speicher so nutzen als ob es interner Speicher ist.

Der MCP79410 I2C hat EEPROM und SRAM (Batteriegepuffert), wenn ich das jetzt richtig verstehe könnte ich nun 2 Bankingbereiche einstellen:

//----------------------
{BDATA 0}
// EEPROM Bereich
var
eePromVar1 : word;
eePromVar2 : word;
eePromVar3 : word;
..
{BDATA 1}
// SRAM Bereich
var
SRAMVar1 : word;
SRAMVar2 : word;
SRAMVar3 : word;
..
//-------------------------

Und in den Routinen BankDevOut und BankDevInp verarbeite ich je nach Bank entweder SRAM oder EEPROM Zugriffe aus das I2C-Device.

Was ich aber noch nicht verstanden habe. Woher bekommt nun der Compiler die Info wieviel Bytes in den Banks drinnen ist? Bei UserDevice kann man mit dem Define "UserPort" die Größe angeben, wie sieht das aber beim Banking aus? Ich habe mir das Manual jetzt mehrmals durchgelesen, aber von einer Größenangabe habe ich nichts gefunden?

Thorsten
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: XMega und EEPROM

 · 
Posted: 25.02.2019 - 11:43  ·  #6
Hallo Thorsten,

ich vermute mal, daß du darauf achten mußt, daß es paßt. Deine Out/In-Routinen müssen das überprüfen.

Gruss
Harry
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: XMega und EEPROM

 · 
Posted: 25.02.2019 - 18:32  ·  #7
Hallo rolf,

werden die BankDevOut und BankDevInp in LOCK / UNLOCK ausgeführt?
Und wenn nicht wie kann man dann selbst in seinen Routinen "BankDevOut/BankDevInp" ausführen?

Ich muss ja dann einen Process angeben!

Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: XMega und EEPROM

 · 
Posted: 25.02.2019 - 18:53  ·  #8
Hallo Thorsten,

zu Banking Port:
In der vorliegenden Implementation können bis zu 16 banks mit jeweils 32kB definiert und verwaltet werden. Dies ergibt eine zusätzliche Speichergrösse von bis zu 512kBytes.
Dem Treiber ist es also fast egal wie gross dieser Bereich ist.
Aber wozu das Banking??
Hierfür bietet sich doch das UserPort an. Dazu gibt es zwei
Beispiele: AVR UserData und AVR UserDataI2C.

rolf
  • 1
  • 2
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   139   153 · Page-Gen-Time: 0.031291s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI