На плате Ардуино Мега 2560 имеется 6 входов аппаратных прерываний.
А нужно хотя бы 12.
Можно ли это организовать?
Ставить второй процессор с ещё 6-входами - это не вариант.
Буду рад любым идеям
Я на 99.9% уверен, что тебе вообще не надо прерываний с такими вопросами.
+100
@Avan сумеете обосновать потребность?
По секрету - на обычной Уно есть 12 прерываний и даже больше
PCINT
Почему 12 ?
Их там судя по даташиту 22
По контексту читай “имеется в достаточном количестве”.
у Вас есть “даташит” на человеческом языке?
вы не отличаете прерывания от входящего извне на ножку платы импульса от внешнего устройства
и внутреннее программное прерывания от переполнения виртуального счётчика?
Тупой?
Вот даташит на “человеческом” языке.
Каждая нога контроллера. Почти каждая, подключена к Пин-Чейндж интеррапт. Каждая может вызывать прерывания при изменении ВНЕШНЕГО сигнала на пине. Отличие от входов INT только в том, что нельзя сделать прерывание по уровню. Только по изменению.
Ты читать-то научился в детском садике, родное сердце?
EXINT - External Interrupts
The External Interrupts are triggered by the INT pins or any of the PCINT pins. Observe that, if enabled,
the interrupts will trigger even if the INT or PCINT pins are configured as outputs. This feature provides a
way of generating a software interrupt.
The Pin Change Interrupt Request 2 (PCI2) will trigger if any enabled PCINT[23:16] pin toggles. The Pin
Change Interrupt Request 1 (PCI1) will trigger if any enabled PCINT[14:8] pin toggles. The Pin Change
Interrupt Request 0 (PCI0) will trigger if any enabled PCINT[7:0] pin toggles. The PCMSK2, PCMSK1 and
PCMSK0 Registers control which pins contribute to the pin change interrupts. Pin change interrupts on
PCINT are detected asynchronously. This implies that these interrupts can be used for waking the part
also from sleep modes other than Idle mode.
а “человеки” это кто? у меня есть на английском, меня вполне устраивает.
По сути см ответ @WladDrakula
Кстати для альтернативно-одаренных была библиотека, для использования PCINT аналогично штатному аттачИнтеррапт(). Я точно видел, такую. Но там и без нее нужно прочесть ровно 10 строк в даташите.
Упс! На английском! ;)) До меня только дошло! В этом, штоле, трабл? Неужели еще остались любители? Но ведь есть же автоперевод? В Хроме он вообще сам переводит, даже копипастить не нужно в траслейт?
Чую теме нефиг делать в Программировании и пора ей в песочницу, кто за?)))
+100500!
Тема перемещена в Песочницу.
Я так понял, что попал в какой-то английский клуб.
Пардон, сэры.
Вот, пожалуйста:
EXTINT - Внешние прерывания
Внешние прерывания запускаются выводами INT или любым из выводов PCINT. Обратите внимание, что, если включено,
прерывания будут срабатывать, даже если контакты INT или PCINT настроены как выходы. Эта функция обеспечивает
способ генерации программного прерывания.
Запрос прерывания смены Pin-кода 2 (PCI2) сработает, если какой-либо включенный pin-код PCINT[23:16] переключится. Булавка
Запрос на изменение прерывания 1 (PCI1) сработает, если переключится любой из включенных контактов PCINT[14:8]. Смена Пин-кода
Запрос на прерывание 0 (PCI0) сработает, если переключится любой из включенных контактов PCINT[7:0]. PCMSK2, PCMSK1 и
Регистры PCMSK0 управляют тем, какие контакты вносят вклад в прерывания смены контактов. Прерывания смены PIN-кода на
PCINT обнаруживаются асинхронно. Это означает, что эти прерывания могут использоваться для вывода детали
также из спящих режимов, отличных от режима ожидания.
Совершенно неочевидно , что нужно выхватить именно эти пять строк из почти 500 страниц текста, и потом пытаться понять, что за ахинея написана.
“Обратите внимание, что, если включено, прерывания будут срабатывать, даже если контакты INT или PCINT настроены как выходы”.
Если контакт настроен как ВЫХОД - каким таким образом он будет реагировать на входящие в него сигналы???
Он может только сгореть, если на нём, как на выходе, стоит 1, а извне пришёл ноль.
Просто нужно их ПРАВИЛЬНО настроить. Всё.
Совершенно очевидно, что если вы взялись программировать, то без знания английского делать в этой области нечего.
Особенно если вы пытаетесь двигаться глубже, чем просто помигать диодиком.
Так что никто из нас не виноват в ваших проблемах
Совершенно бесспорно, что всё нужно настраивать правильно.
Вот только вопрос - этот форум для того, чтобы незнающие чего-либо получили эти знания,
или
только для того, чтобы якобы “знающие” проявили свои низменные порывы поиздеваться над незнающим?
повысить свою самооценку за счёт других…
это тоже бесспорно.
Но проблем-то у меня никаких и нет - у меня был нормальный технический вопрос, вместо грамотного ответа на который клуб английских сэров стал соревноваться в хамстве
Это означает, что прерывание генерится не только при изменении состояния пина “снаружи”, но так же если вы изменяете состояние пина из программы, например оператором digitalWrite()