Arduino EEPROM?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
4kTRB
Inlägg: 18291
Blev medlem: 16 augusti 2009, 19:04:48

Arduino EEPROM?

Inlägg av 4kTRB »

Arduino Uno ska ha ett eeprom om 2kb. Hur vanligt är det att nyttja detta i ett program och hur mycket används där vid uppstart alltså hur mycket finns egentligen att använda sig utav?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Arduino EEPROM?

Inlägg av Micke_s »

vanligtvis så använder inte sketchen något eeprom. Så 2k är ledigt.

Behöver du lagra inställningar/serienr mm så är eeprom:et bra.


Jag brukar dock undvika position 0 av någon anledning, någon gammal chip bug som ligger i mitt minne antagligen..
Användarvisningsbild
4kTRB
Inlägg: 18291
Blev medlem: 16 augusti 2009, 19:04:48

Re: Arduino EEPROM?

Inlägg av 4kTRB »

Och det har inte med C att göra?
Läste att
C garanterar att noll aldrig är en giltig adress för data, så återlämnande av värdet noll
kan användas för att signalera en onormal händelse.
Användarvisningsbild
AndLi
Inlägg: 17051
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Arduino EEPROM?

Inlägg av AndLi »

Hur kan C garantera det, det är ju upp till arkitekturen hur den lagt upp minnet?

Om adress 0 nu används borde det vanligaste vara att den innehåller en hoppinstruktion förbi interruptvektorerna, så det är nog rimligt sannolikt att minnespekare som pekar på 0 är NULLA_de
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4689
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Arduino EEPROM?

Inlägg av Swech »

Eeprom adress pekaren brukar nollställas vid reset
Om man av misstag får en skrivning till EE är det lite högre sannoliket att det hamnar på adress 0
T.ex. om man inte har brownout aktiverad på AVR så brukar de kunna skriva lite sporadiskt
i eepromet

Swech
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Arduino EEPROM?

Inlägg av Mr Andersson »

4kTRB skrev:Och det har inte med C att göra?
Läste att
C garanterar att noll aldrig är en giltig adress för data, så återlämnande av värdet noll
kan användas för att signalera en onormal händelse.
Det stämmer inte.
C garanterar att null aldrig är en giltig adress till något objekt. Dvs. länkaren kommer aldrig placera någon variabel på null. malloc och vänner kommer aldrig returnera en giltig pekare till null.
Det står ingenstans att 0 och null är samma sak, eller att 0 inte är en giltig adress. Skillnaden är liten, men viktig.
Det enda som sägs är att konstanten 0 blir en null-pekare, och att det inte är tillåtet att dereferera en null-pekare.

Praktiskt så använder alla kompilatortillverkare samma binära representation för 0 & null för att det är enkelt och effektivt, men det är lika giltigt att använda t.ex. 123456 som null-pekare så länge resten av pekarreglerna följs.

Dessutom gäller allt detta bara för direkt adresserbart minne. Åtkomst till EEPROM:et på en AVR sker genom cpu-register, dvs. indirekt adressering.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduino EEPROM?

Inlägg av Icecap »

Och orsaken till att noll indikerar falsk (pekare/logisk värde) är att nästa alla µC har ett statusregister som innehåller en Zero-flagga.
Den flagga styrs efter vad det finns i ackumulatorn på vilket givet tidpunkt.

Avkänningen av noll går alltså ganska snabbt.
Skriv svar