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

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

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

Сообщение Ingwar »

Попытка реализации "аппаратного" прерывания с большинства пинов 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
Блок
начало_кода_прерывания_(CODE).ubi
Пример. Для проверки соединить пины 13 и 12.
тест_по_условию_прерывания.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
ecoins
Полковник
Сообщения: 3992
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 148 раз

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

Сообщение ecoins »

Подход интересен.
Несколько неясен код в секции loop()
----
}
void my_inter () {
----
Неясна место открывающейся фигурной скобки.
В 'этом коде надо дописывать обработчик прерывания?
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

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

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

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

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость