Sitter och bläddrar i boken
"Embedded C Programming and the Atmel AVR" av Barnett,Cox & O'Cull. De använder sig av CodeVision i boken, men ingenstans på de 495 sidorna kan jag hitta något som liknar de koder du nämner (
ptr_to_eeprom) ... ptr kan ju stå för t.ex. "put register"? Men nu kör du ju "standardkoden" enligt databladet så det kanske inte har nån betydelse längre vad
ptr_to_eeprom är för något.
Boken ovan verkar vara bra för nybörjare.
EDIT: har hittat detta i
CodeVisionAVR - User Manual
Kod: Markera allt
CodeVisionAVR - 3.14 Accessing the EEPROM
Accessing the AVR internal EEPROM is accomplished using global variables, preceded by the
keyword eeprom.
Example:
/* The value 1 is stored in the EEPROM during chip programming */
eeprom int alfa=1;
eeprom char beta;
eeprom long array1[5];
/* The string is stored in the EEPROM during chip programming */
eeprom char string[]=”Hello”;
void main(void) {
int i;
/* Pointer to EEPROM */
int eeprom *ptr_to_eeprom;
/* Write directly the value 0x55 to the EEPROM */
alfa=0x55;
/* or indirectly by using a pointer */
ptr_to_eeprom=&alfa;
*ptr_to_eeprom=0x55;
/* Read directly the value from the EEPROM */
i=alfa;
/* or indirectly by using a pointer */
i=*ptr_to_eeprom;
}
Pointers to the EEPROM always use 16 bits.
Lösningen ligger alltså i att det finns olika variabeltyper som man kan se i deklarationerna.
eeprom int alfa=1; // här definieras variabeln "alfa" som ligger i EEPROM-utrymmet.
// adress tilldelas automatiskt av kompilatorn
eeprom char string[]=”Hello”; // och man kan lagra långa texter utan krångel i EEPROM
och så deklarerar man en pekare till en eeprom-adress (även denna vald av kompilatorn):
int eeprom *ptr_to_eeprom;
Man använder alltså inte egna adresser alls i EEPROM:et utan man definierar datautrymme i form av variabler precis som i sram. smidigt faktiskt.