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

 
 
> повторные прерывания LPC17xx
evgen2
сообщение Jan 14 2014, 23:32
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Вот похожая тема В прерываниях CM0/CM3 в конце нужен ClearPending?

Имеем такой простой до невозможности код
Код
/* таймер T2  25 МГц */
   LPC_TIM2->MR0 = 782/2;           // 782 = 32 кHz
   LPC_TIM2->MCR = 3;                
   LPC_TIM2->TCR=  0x01;
   NVIC_EnableIRQ(TIMER2_IRQn);

void TIMER2_IRQHandler(void)
{    static int raz=0;
     if(raz == 0)
     {  LPC_GPIO2->FIOSET = 0x1000;raz = 1;
     } else {
       LPC_GPIO2->FIOCLR = 0x1000; raz = 0;
   }
    LPC_TIM2->IR = 1; // Clear interrupt flag
}


смотрим осциилографом, что получается:

___|___|___|___

Или наоборот

— — |— — |— — |— —

Вместо ожидаемого — — |___|— — |___|— — |___

При этом, если поставить брякпойнт на FIOSET или FIOCLR, а потом убрать и продолжить, то картина меняется
если мерять время этого второго паразита, то это будет 12-14 клоков
Однако, если перенести IR = 1; в начало
Код
void TIMER2_IRQHandler(void)
{    static int raz=0;
      LPC_TIM2->IR = 1; // Clear interrupt flag
     if(raz == 0)
     {  LPC_GPIO2->FIOSET = 0x1000;raz = 1;
     } else {
       LPC_GPIO2->FIOCLR = 0x1000; raz = 0;
   }
}


То все налаживается....

Теперь смотрю на все остальные прервывания, в том числе GPI прерывания GPIO прерывания Rising/Falling edge приходят одновременно? (2 ноги * прерывания по фронту и спаду) - там тоже получается какое-то левое повторное прерывание.. однако манипуляции с выносом очистки прерывания как можно раньше не прокатывают и, кажется, наоборот, от выноса очистки в конец количество левых прерываний уменьшается

ЗЫ: а в эмуляторе это не вылазит

Сообщение отредактировал evgen2 - Jan 15 2014, 00:07
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aleksandr Barano...
сообщение Jan 15 2014, 22:32
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118






Due to the processor pipeline, the Cortex-M processors can be entering the interrupt sequence
at the same time as writing to the NVIC to disable the interrupt. Therefore, it is possible that an
interrupt handler might be executed immediately after it is disabled at the NVIC.

http://infocenter.arm.com/help//topic/com....r_m_profile.pdf


--------------------
ASB
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- evgen2   повторные прерывания LPC17xx   Jan 14 2014, 23:32
- - _Артём_   Цитата(evgen2 @ Jan 15 2014, 01:32) Вот п...   Jan 14 2014, 23:50
- - Сергей Борщ   Цитата(evgen2 @ Jan 15 2014, 01:32) То вс...   Jan 15 2014, 07:54
|- - evgen2   Цитата(Сергей Борщ @ Jan 15 2014, 11:54) ...   Jan 15 2014, 09:41
|- - Сергей Борщ   Цитата(evgen2 @ Jan 15 2014, 11:41) ...   Jan 15 2014, 09:50
|- - evgen2   Цитата(Сергей Борщ @ Jan 15 2014, 13:50) ...   Jan 15 2014, 18:33
|- - jcxz   Цитата(Aleksandr Baranov @ Jan 16 2014, 04...   Jan 16 2014, 06:48
- - swisst   Доброго дня ! на контроллере 1768 с MC0 и тайм...   Jan 16 2014, 09:55
|- - jcxz   1. Вот потому, что "дальше код", потому ...   Jan 16 2014, 10:48
|- - swisst   Цитата(jcxz @ Jan 16 2014, 12:48) 1. Вот ...   Jan 16 2014, 12:30
- - sidy   Допустим, у меня есть следующий обработчик прерыва...   Jan 16 2014, 16:13
|- - jcxz   Цитата(sidy @ Jan 16 2014, 22:13) нужно л...   Jan 16 2014, 16:54
|- - sidy   Цитата(jcxz @ Jan 16 2014, 20:54) Скажем ...   Jan 16 2014, 17:18
|- - jcxz   Как же можно ответить ответить на Ваш вопрос, если...   Jan 16 2014, 18:24
|- - sidy   Цитата(jcxz @ Jan 16 2014, 22:24) Как же ...   Jan 16 2014, 18:57
|- - jcxz   Только в LPC флаги прерываний квтируются не запись...   Jan 16 2014, 19:39
|- - sidy   Цитата(jcxz @ Jan 16 2014, 23:39) И опять...   Jan 16 2014, 19:44
- - Golikov A.   это стандартная ошибка при сбросах флагов REG |= ...   Jan 17 2014, 07:06
- - sidy   Понял, т.е. мы прочитали, изменили, записали в рег...   Jan 17 2014, 07:33
|- - Сергей Борщ   Цитата(sidy @ Jan 17 2014, 09:33) Т.е. оп...   Jan 17 2014, 10:50
|- - Golikov A.   Цитата(Сергей Борщ @ Jan 17 2014, 14:50) ...   Jan 17 2014, 20:17
- - Golikov A.   скорее так REG&=~FLAG => REG=REG&(~FLA...   Jan 17 2014, 10:18


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

 


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


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