реклама на сайте
подробности

 
 
> AT91SAM7X256 запретить прерывания временно, запрет всех прерываний
TU-104
сообщение May 27 2014, 05:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 10-12-08
Пользователь №: 42 354



Нужно на время запретить прерывания при записи внутренней флешки.
Делаю так:

Код
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
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016