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

 
 
> Прерывания в Cortex-M3
1kvi1
сообщение Nov 24 2011, 02:31
Сообщение #1


Участник
*

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



Добрый день!

Возникла следующая интересная проблема.

По ходу выполнения прошивки в какой то момент происходит зацикливание программы на прерывании от USART1.

То есть выполняется запуск обработчика прерываний с частотой примерно 100 кГц.

Основная программа успевает сделать несколько инструкций после чего снова происходит прерывание.

При этом если остановить обработку прерывания отладчиком и походить по инструкциям нормальный ход программы восстанавливается.

Прерывания разрешены только на прием, флаг готовых данных не взведен.

В регистре NVIC->ICSR указывается что активное прерывание от usart1.

С чем может быть связанно такое поведение?

Осциллографом контролировал линию - стабильная единица на обоих линиях.
Стабильно повторяется. Прерывания по приему не запрещается и разрешено постоянно.

Код
void USART1_IRQHandler (void) {  
  VD3R_ON;
  VD3G_ON;

  if (USART_GetITStatus(USART1,USART_IT_TXE)) {
//    USART_ClearITPendingBit(USART1,USART_IT_TXE);

  }
  
  if (USART_GetITStatus(USART1,USART_IT_RXNE)) {
//    USART_ClearITPendingBit(USART1,USART_IT_RXNE);

    unsigned char receive_char=USART_ReceiveData(USART1);

    if (!modemmode) {

  }

  VD3R_OFF;
  VD3G_OFF;
}


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
1kvi1
сообщение Nov 27 2011, 15:33
Сообщение #2


Участник
*

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



К сожалению, описанные выше ситуации, когда флаг запроса на прерывания не успевает сбрасываться до выхода из прерывания не подходит для моего случая.

Так как в моем исходнике вставлены инструкции включения-выключения светодиодов, которые вносят необходиму задержку перед выходом из прерывания.

В документации PM0056 Programming manual с сайта st натолкнулся на следующий текст

пункт 4.3.10

Ensure software uses correctly aligned register accesses. The processor does not support
unaligned accesses to NVIC registers. See the individual register descriptions for the
supported access sizes.
A interrupt can enter pending state even it is disabled.
Before programming VTOR to relocate the vector table, ensure the vector table entries of
the new vector table are setup for fault handlers, NMI and all enabled exception like
interrupts. For more information see Section 4.4.4: Vector table offset register (SCB_VTOR)
on page 134.

Интересует строка
A interrupt can enter pending state even it is disabled.

Правильно ли я понял что прерывания могут произойти даже если они запрещены?

Сообщение отредактировал 1kvi1 - Nov 27 2011, 15:34
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 1kvi1   Прерывания в Cortex-M3   Nov 24 2011, 02:31
- - demiurg_spb   Думаю что это связано с тем что запросы на прерыва...   Nov 24 2011, 04:44
- - 1kvi1   ТО что флаги автоматически сбрасываются - это мне ...   Nov 24 2011, 05:15
- - vptr   Цитата(1kvi1 @ Nov 24 2011, 05:31) Добрый...   Nov 24 2011, 05:31
|- - demiurg_spb   Цитата(vptr @ Nov 24 2011, 09:31) не люби...   Nov 24 2011, 05:36
|- - vptr   да и обработка прерывания завершается TIM_ClearITP...   Nov 24 2011, 05:58
|- - AHTOXA   Возможно, это то, что называется "spurious in...   Nov 24 2011, 06:08
|- - KnightIgor   Цитата(vptr @ Nov 24 2011, 07:58) да и об...   Nov 24 2011, 08:37
|- - demiurg_spb   Цитата(KnightIgor @ Nov 24 2011, 12:37) В...   Nov 24 2011, 08:50
||- - KnightIgor   Цитата(demiurg_spb @ Nov 24 2011, 10:50) ...   Nov 24 2011, 09:34
|- - vptr   Цитата(KnightIgor @ Nov 24 2011, 11:37) В...   Nov 24 2011, 09:52
|- - demiurg_spb   Цитата(vptr @ Nov 24 2011, 13:52) и тольк...   Nov 25 2011, 04:37
|- - dxp   Цитата(demiurg_spb @ Nov 25 2011, 11:37) ...   Nov 25 2011, 06:34
|- - demiurg_spb   Цитата(dxp @ Nov 25 2011, 10:34) А не пом...   Nov 25 2011, 06:58
|- - dxp   Цитата(demiurg_spb @ Nov 25 2011, 13:58) ...   Nov 25 2011, 15:21
- - andrewlekar   А по-моему никто ничего не рушит, а просто прерыва...   Nov 24 2011, 05:42
- - 1kvi1   "spurious interrupt" - да был такой опыт...   Nov 24 2011, 08:53
- - ViKo   А чего-й-то у меня прерывание работает простенько?...   Nov 25 2011, 12:04
|- - demiurg_spb   Цитата(ViKo @ Nov 25 2011, 16:04) А чего-...   Nov 28 2011, 08:01
|- - ViKo   Цитата(demiurg_spb @ Nov 28 2011, 11:01) ...   Nov 28 2011, 08:50
|- - dxp   Цитата(1kvi1 @ Nov 27 2011, 22:33) Интере...   Nov 27 2011, 16:24
- - V_M_Luck   ЦитатаПоэтому, имхо, грамотный подход - это исполь...   Dec 8 2011, 10:13
- - 1kvi1   Внимательное чтение документации помогло определит...   Dec 9 2011, 09:54


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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 23:26
Рейтинг@Mail.ru


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