Здравствуйте! Помогите пожалуйста разобраться в проблеме. Задача: необходимо обеспечить хранение данны в DataFlash процессора MC56F8322. Разработка ПО осуществляется в среде CodeWarrior v.6.0. После программирования процессора по последовательному интерфейсу, управление передается основной программе и работа с DataFlash проходит штатно, данные пишутся/читаются. При рестарте процессора, предварительно записанные после загрузки программы данные из DataFlash читаются правильно, но не записываюся. Выяснилось, содержимое регистра FMCLKD (регистр управления частотой генератора работы с Flash) после отработки загрузчика = 0xCE (206), а при рестарте = 0x80 (128). Согласно руководству, регистр FMCLKD записывается один раз, и его содержимое изменяться в дальнейшем программно не может. В программе инициализации есть следующие строчки: void PE_low_level_init(void) { . . /* FMCR: AEIE=0 */ output( FMCR, input( FMCR ) & ~256 );//регистр конфигурации Flash /* FMCLKD: PRDIV8=1,DIV=37 */ output( FMCLKD, input( FMCLKD ) | 101 );//регистр управления частотой генератора работы с Flash . . } Получается, что при рестарте в регистр FMCLKD записывается 0x80 (128), и команды инициализации его состояния не изменяют. Кроме как в PE_low_level_init(void) обращений к этому регистру в программе больше нет. Почему же он тогда так устанавливается, в чем причина????????? Зараннее спасибо!
|