Цитата(prottoss @ Mar 2 2006, 22:35)

А Вы хитрый. ОШИБКЕ ТО В КОДЕ НЕТ, а запрещать прерывания или нет, должен думать сам программист.
Ошибка есть, в том варианте кода который вы привели. И я совсем не хитрый

, просто если ссылаетесь на даташит, то не отрывайте код от контекста, иначе явные ошибки появляются.
Цитата
Если в прерываниях нет обращений к ЕЕПРОМ, то и запрещать прерывания нет смысла.
Вы вообще когда читаете даташит смысл оттуда понимаете? Вот смотрю, вроде переводите, да только ошибки допускаете, то ли случайно, то ли специально? Если прерывание произойдет между EEMWE = 1 и EEWE=1, то в EEPROM ничего не запишется!
Цитата
Или если обращения к ЕЕПРОМ ТОЛЬКО В ОДНОМ прерывании опять же нет смысла запрещать остальные прерывания. СМЫСЛ ЕСТЬ только в том случае, если несколько потоков могут читать/писать в/из ЕЕПРОМ. Так что НЕ ПУТАЙТЕ публику, код совершенно рабочий. В вышеприведенном англицком тексте об этом и написанно.
Смысл в том, чтобы функция учитывала обращение к EEPROM как из обработчика прерывания так и вне его, что собственно приведенная мной функция и делает.
Цитата
Вот Вам вольный перевод:
Предостережение: прерывание между шагом 5 и шагом 6 вызовет сбой цикла записи если програма прерывания будет изменять значения EEAR или EEDR.
....
Перевод у вас неправильный...
Первое предложение там такое:
"Прерывание между шагом 5 и шагом 6 приведет к сбою цикла записи, потому что EEPROM Master Write будет сброшен по тайм-ауту." ..
Ну и далее по тексту.
Цитата
А если прерывния использует системный клок, как же нам тогда к ЕЕПРОМу то обращаться. Мы запретим прерывание, и клок собъется, мы на работу опазлаем...Однако... :-)))
Тогда выход - запись EEPROM вести по прерыванию..
Цитата(beer_warrior @ Mar 2 2006, 22:30)

Господа, а никто не делал библиотечки EEPROM полностью на прерываниях?
Давайте сделаем, пригодится. Сейчас накидаю костяк, проверю.
Поможете подправить если что?