closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

XMega und EEPROM



pvs-deck offline
Schreiberling
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 990
Registered: 02 / 2009
Homepage Private message
Subject: XMega und EEPROM  -  Posted: 22.02.2019 - 10:44   -  
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
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1517
Registered: 03 / 2003
Private message
Subject: Re: XMega und EEPROM  -  Posted: 22.02.2019 - 12:55   -  
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).
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
This post has been edited 4-times. Last edit: 22.02.2019 - 13:10 by Harry.
go down go up
pvs-deck offline
Schreiberling
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 990
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 22.02.2019 - 14:28   -  
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).
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
This post has been edited 1-times. Last edit: 22.02.2019 - 14:29 by pvs-deck.
go down go up
rh offline
Administrator
Avatar
Gender: male
Location: GERMANY  Germany
Age:
Posts: 5442
Registered: 03 / 2002
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 22.02.2019 - 17:57   -  
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
Cars don't buy cars -- Autos kaufen keine Autos.
Henry Ford
go down go up
pvs-deck offline
Schreiberling
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 990
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 25.02.2019 - 11:20   -  
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
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1517
Registered: 03 / 2003
Private message
Subject: Re: XMega und EEPROM  -  Posted: 25.02.2019 - 11:43   -  
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
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
pvs-deck offline
Schreiberling
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 990
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 25.02.2019 - 18:32   -  
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
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
rh offline
Administrator
Avatar
Gender: male
Location: GERMANY  Germany
Age:
Posts: 5442
Registered: 03 / 2002
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 25.02.2019 - 18:53   -  
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
Cars don't buy cars -- Autos kaufen keine Autos.
Henry Ford
go down go up
pvs-deck offline
Schreiberling
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 990
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 25.02.2019 - 19:40   -  
Quote by rh

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

Hallo rolf,

Ja, aber ich muß zwischen SRAM und EEPROM unterscheiden können, deswegen das Banking.

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
pvs-deck offline
Schreiberling
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 990
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 28.02.2019 - 10:35   -  
Hallo rolf,

werden die BankDevOut und BankDevInp (bzw. UsrDevOut und UsrDevInp) 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
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 38
Posts: 227
Registered: 07 / 2013
Private message
Subject: Re: XMega und EEPROM  -  Posted: 01.03.2019 - 16:53   -  
Code
lock(self);


oder

Code

    if GetSchedulerState = true then
      // scheduler is running
      SchedulerOff;
      // do sth.
      SchedulerOn;
    else
     // do sth;
    endif;


eventuell auch
NOINTS, RESTOREINTS
This post has been edited 1-times. Last edit: 01.03.2019 - 16:59 by Thomas.AC.
go down go up
pvs-deck offline
Schreiberling
Avatar
Gender: male
Location: GERMANY 
Age: 48
Posts: 990
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 04.03.2019 - 09:45   -  
Hallo Thomas,

danke für die Info. Die Frage die aber noch immer im Raum steht, brauche ich sowas oder regelt das der Treiber beim Zugriff?

@rolf;
Ich habe mir das Demo "AVR_UsrDataI2C" angeschaut, aber ich verstehe hier etwas nicht ganz.

Code
UserDevice UsrDevInp(adr : word) : byte;
var ok  : boolean;
    inp : byte;
begin
//  DisableInts;

  (* because of a possible previous write access *)
  (* the I2Cout function can fail upto 10msec    *)
  (* and a timeout loop must be implemented      *)
  (* don't forget your watchdog                  *)
  SetSysTimer(Timer1, 2);
  repeat
    ok:= I2Cout(I2Cadr +hi(adr), lo(adr));              // set the read address
  until isSysTimerZero(Timer1) or ok;
  if ok then
    I2Cinp(I2Cadr, inp);                                // read the byte
    return(inp);
  else
//  error ...
  endif;

//  EnableInts;
  return($ff);
end;


Warum wird bei "I2Cout()", die I2C-Adresse mit dem hi-Byte vom "adr" addiert? Ist das eine besondere Funktionsweise? An dieser stelle sollte doch nur die Slave-Adresse liegen oder?

Oder ist das irgendeine Besonderheit wegen der WordAdresse?

Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
rh offline
Administrator
Avatar
Gender: male
Location: GERMANY  Germany
Age:
Posts: 5442
Registered: 03 / 2002
Homepage Private message
Subject: Re: XMega und EEPROM  -  Posted: 04.03.2019 - 20:57   -  
Hallo Thorsten,

nein, bei allen User und Bank Treibern wird kein Lock/unlock ausgeführt.
Ist evtl. zu gefährlich da es ja intern bzw. extern zu deadlocks kommen
kann und das Multitasking System zum stehen kommt.
Liegt in der Verantwortung des Users.

Zum UsrDevInp I2C kann ich momentan garnix sagen. Es tut einfach.
Ist schon viele viele Jahre her. Vermutlich ist das hi normalerweise zero.

rolf
Cars don't buy cars -- Autos kaufen keine Autos.
Henry Ford
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 22.05.2019 - 17:16