roboforum.ru

Технический форум по робототехнике.

EEPROM в Mega16

EEPROM в Mega16

KiCom » 05 июл 2006, 14:08

Что это такое я вроде понял,что это энергонезависимая память в МК, если проводить аналогию с програмированием на ПК то это запись и чтение из файла, но как этим пользовать?

avr123.nm.ru » 05 июл 2006, 14:14

как в примерах к CVAVR и PROTEUS

KiCom » 05 июл 2006, 14:35

Вот что было найдено:
Код: Выделить всёРазвернуть
// EEPROM access example

// CodeVisionAVR C Compiler
// (C) 2000-2002 HP InfoTech S.R.L.
// www.hpinfotech.ro

// Chip: AT90S2313
// Memory Model: TINY
// Data Stack Size: 64 bytes

flash char f[]="This is a test";
#pragma warn-
eeprom char e[16];
#pragma warn+
char r[16];

void main (void)
{
char flash *ptr_to_flash;
char eeprom *ptr_to_eeprom;
char *ptr_to_ram;

// copy the string f from FLASH to
// the string e in EEPROM
ptr_to_flash=f;
ptr_to_eeprom=e;
while (*ptr_to_flash)
     *ptr_to_eeprom++=*ptr_to_flash++;

// copy the string e from EEPROM to
// the string r in RAM
ptr_to_eeprom=e;
ptr_to_ram=r;
while (*ptr_to_eeprom)
     *ptr_to_ram++=*ptr_to_eeprom++;

// stop here
while (1);
}

Из чего я понял что необходимо объявить переменную так:
Код: Выделить всёРазвернуть
eeprom char e[16];
или так:
Код: Выделить всёРазвернуть
eeprom int x;

потом в программе изменяем ее как хотим и в ней будет храниться последняя запись. НО! что в ней храниться изначально?
Если написать вот так:
Код: Выделить всёРазвернуть
eeprom int y=10;

то изначально в переменной храниться число 10, но при каждом запуске МК он по идеи должне исполнять эту строчку и присваивать ей значение 10 , весь смысл теряеться.

avr123.nm.ru » 05 июл 2006, 15:47

ну дак не пиши =10

mayso » 11 июл 2006, 08:05

А что вы имеете в виду говоря
НО! что в ней храниться изначально?
?

KiCom » 11 июл 2006, 08:35

При инициализации переменной
eeprom int a;
a=?

wolf » 11 июл 2006, 10:37

Что прошьёте.
Если ничего не прошивали - 0xFF.


cron
Rambler\'s Top100 Mail.ru counter