Хорошего времени суток. Прошу совета, подсказки и т.д. знающих людей. Было серийно выпускаемое устройство еще на AT89C2051 которое запоминало данные во внешней флеш-памяти АТ24С256. Все было хорошо пока не решили перейти на проц по новее ATtiny2313. И часть данных решил сохранять во встроенной EEPROM. Имеется опыт работы с ATmega, но как-то не приходилось использовать их внутренние EEPROM. Ничего не предвещало беды, но устройства начали глючить. Через некоторое время проблема была найдена - по какой-то причине данные в EEPROM сбивались. Причем - могло проработать и 2 неделе, а потом глюкнуть. А могло и сразу. Проблему решил просто - все данные опять храню во внешней флешке. Проблемы нет, но хочется понять!!! Вот образец: ;----------- резервирование EEPROM .ESEG .ORG $0 zad: .byte 1 master: .byte 8
А это сами программы: ;--------------- запись байта ---------------- ;адрес ячейки для записи/чтения находится work. ;результат в buf eeprom_write: cli sbic EECR,EEWE ;-- ждать флаг готовности rjmp eeprom_write out EEAR,work ;-- установить байт адреса out EEDR,buf ;-- копировать данные для записи sbi EECR,EEMWE ;-- sbi EECR,EEWE ;-- начать запись sei ret ;--------------- чтение ---------------- eeprom_read: cli sbic EECR,EEWE ;-- ?ac?aoaiey ia ?oaiea rjmp eeprom_read out EEAR,work ;-- onoaiiaea ieaaoaai cia?aiey aa?ana ;clr buf sbi EECR,EERE ;-- onoaiiaea i?eciaea ?oaiey in buf,EEDR ;-- eiie?oai ?acoeuoao sei ret
во время выполнения этих процедур пропадание питания не наблюдалось, прерываний, которые могли бы вносить "коррективы" в адрес или менять байт информации - нет. Грешу только на питание - от 12В через 7805. Но ведь с внешней памятью работает нормально............ Думал наводка на кварц или его цепи - переключил на внутренний RC - результат тот же.
|