Попытка реализации "аппаратного" прерывания с большинства пинов 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 вариантов прерывания. Такой аналог "выполнения платы по условию". Только без ожидания, когда до нее дойдет очередь. Блок располагать первым, выше всех.
Библиотека
Блок
Пример. Для проверки соединить пины 13 и 12.
Условие выполнения платы (прерывание)
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Условие выполнения платы (прерывание)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Условие выполнения платы (прерывание)
Подход интересен.
Несколько неясен код в секции loop()
----
}
void my_inter () {
----
Неясна место открывающейся фигурной скобки.
В 'этом коде надо дописывать обработчик прерывания?
Несколько неясен код в секции loop()
----
}
void my_inter () {
----
Неясна место открывающейся фигурной скобки.
В 'этом коде надо дописывать обработчик прерывания?
- AlexCrane
- Капитан
- Сообщения: 903
- Зарегистрирован: 20 окт 2017, 13:22
- Откуда: Ульяновск
- Имя: Александр
- Поблагодарили: 12 раз
Условие выполнения платы (прерывание)
[ref]ecoins[/ref], Интересная фишка
----
} //Здесь закрываем принудительно цикл loop
void my_inter () { //Здесь открываем тело процедуры
сюда добавляется программа FLProg после блока
Ну и компилятор FlProg добавит сам окончание цикла loop и тем самым закроет процедуру my_inter
Этим и объясняется что этот блок должен находится на последней плате
----
} //Здесь закрываем принудительно цикл loop
void my_inter () { //Здесь открываем тело процедуры
сюда добавляется программа FLProg после блока
Ну и компилятор FlProg добавит сам окончание цикла loop и тем самым закроет процедуру my_inter
Этим и объясняется что этот блок должен находится на последней плате
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя