Arduino EEPROM?
Arduino EEPROM?
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?
Re: Arduino EEPROM?
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..
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..
Re: Arduino EEPROM?
Och det har inte med C att göra?
Läste att
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.
Re: Arduino EEPROM?
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
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
- Swech
- EF Sponsor
- Inlägg: 4695
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Arduino EEPROM?
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
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
-
- Inlägg: 1397
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Arduino EEPROM?
Det stämmer inte.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.
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.
Re: Arduino EEPROM?
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.
Den flagga styrs efter vad det finns i ackumulatorn på vilket givet tidpunkt.
Avkänningen av noll går alltså ganska snabbt.