Здравствуйте!
Помогите пожалуйста разобраться в проблеме.
Задача: необходимо обеспечить хранение данны в 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) обращений к этому регистру в программе больше нет.
Почему же он тогда так устанавливается, в чем причина?????????
Зараннее спасибо!