[an error occurred while processing this directive]
Мысль хорошая, только по мне, например, при работе с EEPROM проще пользоваться своими EEGET и EEPUT
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Щ.С. 18 декабря 2002 г. 16:02
В ответ на: a volatile приписать не пробовали? отправлено Elektronik 18 декабря 2002 г. 14:01


void EEPUT(unsigned ADR,char VAL)
{while (EECR & 0x02);
EEARL = (char)(ADR); EEARH = (char)((ADR) >> 8); EEDR = (VAL);
_CLI(); EECR|=0x04; EECR|=0x02; _SEI();
EEARL=0; EEARH=0;
}

void EEGET(char *VAR, unsigned ADR)
{while (EECR & 0x02);
EEARL = (char)(ADR);
EEARH= (char)((ADR) >> 8); EECR = 0x01; *(VAR)=EEDR;
EEARL=0; EEARH=0;
}

1). критическая по времени область записи защищена, я без прерываний программ не пишу в принципе (кстати, не знаю как это сейчас реализовано у IAR).
2). после операции адрес устанавливается на "жертвенную" и неиспользуемую ячейку 0;

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru