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

 
 
> level triggered interrupt для бедных?, идея как симулировать level triggered interrupt
alexf
сообщение Sep 28 2016, 02:36
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 420
Регистрация: 22-12-04
Пользователь №: 1 608



Переношу код с древнего 8051 на STM32F070. Все бы ничего, но есть потенциальная ловушка. Внешнее прерывание от другого чипа. Допустим оно пришло, а пока процессор занят обработкой, пришло второе.
STM32 не заметит, поскольку реагирует на edge а не level, kak 8051 в данном приложении. Вероятнось не велика, но все равно стремно.

Так вот идея такая. Запускать таймер (их как грязи!), так чтобы он работал только при низком уровне на ножке. Сбрасываем про обработке edge. Если вдруг нога осталась на 0, а фронт не отслежен, таймер бысто досчитает до сколько-то и даст свое прерывание, которое можно обработать тем же кодом что и обычно. Что скажут знатоки?

Или просто проверять уровень на ножке перед выходом из обработчика? Можно читать уровень ножки назначенной EINT?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Sep 28 2016, 04:53
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(alexf @ Sep 28 2016, 08:36) *
Переношу код с древнего 8051 на STM32F070. Все бы ничего, но есть потенциальная ловушка. Внешнее прерывание от другого чипа. Допустим оно пришло, а пока процессор занят обработкой, пришло второе.
STM32 не заметит, поскольку реагирует на edge а не level, kak 8051 в данном приложении. Вероятнось не велика, но все равно стремно.

А в каком случае "оно" пришло? Это внешнее прерывание. Что Вы при этом должны сделать?
У Вас второй импульс по ноге прерывания внешнее устройство может выдать даже когда не обслужено ещё первое прерывание? Или оно держит уровень до тех пор, пока не будет обслужено (устранена причина вызвавшая прерывание)? Если первое - то что в этом случае тогда делает 8051? Ведь он также пропустит второй импульс. Если второе - никаких проблем.
Или вам важно само количество импульсов на ноге запроса прерывания? Тогда надо их подавать не на вход внешнего прерывания, а на счётный вход таймера.

Цитата(ViKo @ Sep 28 2016, 10:28) *
Почитайте про Pending bit в прерываниях.

Товарищу скорее надо читать про конфигурирование внешних прерываний в его МК.
Go to the top of the page
 
+Quote Post



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

 


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


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