jenya7 0 21 марта, 2016 Опубликовано 21 марта, 2016 (изменено) · Жалоба Хочу понять такую вещь. Если я запретил прерывание на пине. А тем временем был сигнал на пине. Потом через некоторое время прерывание разрешил. Прерывание потеряно или оно обработается при разрешении? GPIO_IntConfig(gpioPortC, 12, true, false, false); //some code //тут был сигнал на ноге //some code GPIO_IntConfig(gpioPortC, 12, true, false, true); Кортекс-М3. Изменено 21 марта, 2016 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Вы снимаете разрешение. Сигнал выставляет флаг. Вы выставляете разрешение. Разрешение + флаг = прерывание. Это в случае, если вы снимаете и выставляете разрешение. Что делают ваши функции GPIO_IntConfig() - я не знаю и разбираться не хочу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 21 марта, 2016 Опубликовано 21 марта, 2016 (изменено) · Жалоба Разрешение + флаг = прерывание. - это значит функция обработчик прерывания исполнит свою работу? а что сигнал выставит флаг если разрешение снято = external interrupt disabled? понял. большое спасибо. Изменено 21 марта, 2016 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
501-й 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба См. документацию на свой камень. Для stm32f42xx (RM0090, стр.377): если запретить прерывание на пине (маской), то прерывания не будет, до pending request register событие не дойдёт. Сам попадался. Илья Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба См. документацию на свой камень. Для stm32f42xx (RM0090, стр.377): если запретить прерывание на пине (маской), то прерывания не будет, до pending request register событие не дойдёт. Сам попадался. Илья у меня EFM32TG. в документации написано так. The EFM32TG devices have up to 23 interrupt request lines (IRQ) which are connected to the CortexM3. Each of these lines (shown in Table 4.1 (p. 12)) are connected to one or more interrupt flags in one or more modules. The interrupt flags are set by hardware on an interrupt condition. It is also possible to set/clear the interrupt flags through the IFS/IFC registers. Each interrupt flag is then qualified with its own interrupt enable bit (IEN register), before being OR'ed with the other interrupt flags to generate the IRQ. A high IRQ line will set the corresponding pending bit (can also be set/cleared with the SETPEND/ CLRPEND bits in ISPR0/ICPR0) in the Cortex-M3 NVIC. The pending bit is then qualified with an enable bit (set/cleared with SETENA/CLRENA bits in ISER0/ICER0) before generating an interrupt request to the core. Figure 4.1 (p. 12) illustrates the interrupt system. For more information on how the interrupts are handled inside the Cortex-M3, the reader is referred to the EFM32 Cortex-M3 Reference Manual. вроде как интерапт таки пендинг? или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
501-й 0 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба вроде как интерапт таки пендинг? или нет? Скорее нет. На картинке (которая Fig 4.1.) должно быть явно видно. Но по тексту: сначала выставляется флаг, потом флаг маскируется (qualified), затем флаг запоминается в pending регистре. Так что если маска наложена, то флаг не запомнится. Илья Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 марта, 2016 Опубликовано 23 марта, 2016 (изменено) · Жалоба Скорее нет. На картинке (которая Fig 4.1.) должно быть явно видно. Но по тексту: сначала выставляется флаг, потом флаг маскируется (qualified), затем флаг запоминается в pending регистре. Так что если маска наложена, то флаг не запомнится. Илья да вот не знаю. по картинке не ясно. по логике если флаг пендинг то он дожен обработаться. Изменено 23 марта, 2016 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
501-й 0 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба да вот не знаю. по картинке не ясно. На картинке явно видно, что IF[n] -- это тригер. Значит событие будет запомнено и обработано после разрешения битом IEN[n]. (Ну, тут ещё возникает вопрос соответствия картинки, как и вообще документации, реальному положению дел :-) В STM32F429 это не так. по логике если флаг пендинг то он дожен обработаться. Конечно, если запрос зафиксировали в pending регистре, то он будет обработан. Илья Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 4 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба вроде как интерапт таки пендинг? или нет? Давайте, всё-таки, по-русски. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба На картинке явно видно, что IF[n] -- это тригер. Значит событие будет запомнено и обработано после разрешения битом IEN[n]. (Ну, тут ещё возникает вопрос соответствия картинки, как и вообще документации, реальному положению дел :-) В STM32F429 это не так. Конечно, если запрос зафиксировали в pending регистре, то он будет обработан. Илья спасибо за объяснение. интересен ответ официального представителя Silicom Labs. I'm assuming that the interrupt flag will still be set, so that you'd vector to the interrupt handler once you re-enabled interrupts. This is how it generally works on our 8-bit MCUs, at least (which, you know, is not a great indicator of whether it occurs on our 32-bit MCUs). Can you test it out? он сам не уверен сработает или нет. :) вроде как интерапт таки пендинг? или нет? прерывание в ожидании Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 28 марта, 2016 Опубликовано 28 марта, 2016 · Жалоба ну так вам Сергей Борщ тоже самое ответил во втором посте. Так оно обычно и происходит. За конкретным поведением конкретного камня надо конечно в даташит смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 28 марта, 2016 Опубликовано 28 марта, 2016 · Жалоба Разрешение + флаг = прерывание. Это если в данный момент нет текущего состояния обслуживания прерывания. Если есть - прерывание будет только если приоритет нового прерывания выше уже обслуживаемого. Иначе будет ждать до выхода из текущего. Всё это касается Cortex-M ессно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться