Цитата(vitko @ May 24 2007, 14:22)

Подскажите, пожалуйста, как в IAR оpганизовать запись во встроенную EEPROM из буфера по прерыванию, так чтобы это не мешало обращению к переменным в EEPROM как обычным переменным в памяти данных.
Цитата(vitko @ May 24 2007, 17:35)

Мне нужно переписать N байт из ОЗУ в ЕЕПРОМ. Если я напишу:
for (i=0, i<N, i++ ) *EE_ptr++ = *RAM_ptr++ ;
- надеюсь компилятор не запретит глобально прерывания на все время записи масива ?
Цитата(IgorKossak @ May 24 2007, 17:50)

Нет!
Если взглянуть как реализованы библиотечные функции обращения к ЕЕПРОМ (\avr\src\lib\eeprom.s90), то видно, что прерывания там запрещаются на крайне непродолжительное время.
И чем это поможет(запрет прерываний на очень короткое время) когда нужно
писать в eeprom и из основного цикла и из прерывания ?
И как нужно написать обработчик прерывания что бы он правильно разруливал
эту ситуацию (конкурирующие запросы на запись в eeprom)?
ИМХО
Для столь медленного устройства каким является eeprom есть только 2 стратегии его использования
1. Все делаем в прерывании eeprom, заводим буфер обмена с eeprom, как-то разруливаем
переполнение этого буфера.
2. Делаем все поллингом или через стандартный доступ к ЕЕ переменным в IAR, или, что намного
лучше, если в системе есть переодическая обработка событий (например прерывание таймера/
ADC или что-то еще ) опрашиваем окончание последней записи и запускаем новую(если надо),
ну и опять же как-то разруливаем возможные переполнения буфера(ну или как вариант,
делаем функцию опроса занятости буфера и пишем в него только если он свободен)