Нужно на время запретить прерывания при записи внутренней флешки.
Делаю так:
Код
ISR_MASK = AT91C_BASE_AIC->AIC_IMR;
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF; // запрет
... FalshDWrite(...);
AT91C_BASE_AIC->AIC_IECR = ISR_MASK; // восстановить
В какой-то момент виснет на записи в IDCR=FFFFFFFF
Проверял так, без записи во внутреннюю флеш:
Код
printf(".");
ISR_MASK = AT91C_BASE_AIC->AIC_IMR; /*printf("m");*/
printf(",");
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;
j++;
printf("|");
AT91C_BASE_AIC->AIC_IECR = ISR_MASK;
j++;
Соответственно, в консоли:
Код
,|.,|.,|.,|.,|.,|.,
и зависает.
Правильно ли так запрещать прерывания? Что еще попробовать? Заранее благодарю любые за любые советы
Включен PIT, TC0, UART, прерывания от ног.
И еще, вроде бы только с PIT -ом виснет, попробую его отдельно отключить...
Сообщение отредактировал TU-104 - May 27 2014, 06:18