ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
374586
ilyaul (09.12.2012 03:32, просмотров: 5296)
Вот ведь нарвался , часа три убил. Казалось бы что может быть проще , чем запись в EEPROM в фоновом режиме. ( Прерывание) При этом успевается сделаться куча дел. В том числе и вывод на LCD. И всё, как только дело доходит до вывода на LCD , записываются ещё 2 байта и обнуляется EERIE. Учитывая , что прерывание EEPROM и LCD используют разные регистры (R17 XL YL - EEPROM , R16 R18 Z-LCD) для данных и адресации, то даже в принципе пересечся никак не могут. Поэтому и сохранений этих регистров в EEPROM и в прерывании таймера (задержки LCD) я не делал. Но откл. подпрограмму LCD пишет память от начала и до конца. Вот два кода выхода из записи EEPROM. Функционально - братья близнецы. Первый отрабатывает в паре с прерыванием USART и 2 байта с LCD/ Второй отрабатывает до конца обе пары. В чём причина ,я так и не понял. Но даже в пошаговом режиме после brpl в первом случае EERIE слетает, хотя он выполняет переход минуя сброс EERIE. Загадка какая-то. Может глюк студии 4.19 subi YL,1 brpl PC+2 outi EECR,0<<EERIE pop temp1 out SREG,SAVE_SREG reti subi YL,1 brpl NGOOD outi EECR,0<<EERIE NGOOD: pop temp1 out SREG,SAVE_SREG reti