Условие выполнения платы (прерывание)

Пользовательские блоки не подходящее под другие разделы
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Условие выполнения платы (прерывание)

#1

Сообщение Ingwar » 30.09.2020{, 16:03}

Попытка реализации "аппаратного" прерывания с большинства пинов AVR, для выполнения участка программы вне очереди.
Поддержка:

328
Interrupt Type Pins
External 2 3
Pin Change 2-13 and A0-A5

2560
Interrupt Type Pins
External 2 3 and 18-21
Pin Change 10-15 and A8-A15 and SS, SCK, MOSI, MISO

Leonardo
Interrupt Type Pins
External 0-3 and 7
Pin Change 8-11 and SCK, MOSI, MISO

1284, 644
Interrupt Type Pins
External 2 10 11
Pin Change 0-31 (aka: 0-23 and A0-A7)

Подробнее тут.
Для желающих реализовать дополнительные быстрые счетчики или регистраторы, информация по времени реакции тут
Делается просто, но в рамках старого редактора - или править ручками в IDE или неудобство по расположению в проекте, а к новому редактору еще "не подходил". Поэтому выкладывать не буду.
Что касается предложенного ПБ - позволяет выполнять часть программы, размещенной на последней плате, по одному из 4 вариантов прерывания. Такой аналог "выполнения платы по условию". Только без ожидания, когда до нее дойдет очередь. Блок располагать первым, выше всех.

Библиотека
EnableInterrupt-master.zip
(2.69 МБ) 71 скачивание
Блок
начало_кода_прерывания_(CODE).ubi
(9.68 КБ) 71 скачивание
Пример. Для проверки соединить пины 13 и 12.
тест_по_условию_прерывания.flp
(62.11 КБ) 82 скачивания
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Условие выполнения платы (прерывание)

#2

Сообщение ecoins » 30.09.2020{, 20:37}

Подход интересен.
Несколько неясен код в секции loop()
----
}
void my_inter () {
----
Неясна место открывающейся фигурной скобки.
В 'этом коде надо дописывать обработчик прерывания?

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Условие выполнения платы (прерывание)

#3

Сообщение AlexCrane » 30.09.2020{, 21:45}

ecoins, Интересная фишка
----
} //Здесь закрываем принудительно цикл loop
void my_inter () { //Здесь открываем тело процедуры

сюда добавляется программа FLProg после блока

Ну и компилятор FlProg добавит сам окончание цикла loop и тем самым закроет процедуру my_inter

Этим и объясняется что этот блок должен находится на последней плате
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ответить

Вернуться в «Другое»