Куча датчиков..а перерывания...одно(несколько) ...

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

 

перерывания...с нехваткои входов/выходов (при общеи несложности скетча и ненадобхости многих плат) боремся с помощю мултиплексеров/деплексеров но...скажем 80 выходов по очереди с помощю пяти мултиплексеров худо-бедно запитаем (а на каждом ещё по H-bridge висит - значит в двоине)..40 датчиков по очереди опросим (хочу дать знать ардуинке где мои поезда на трассе чтобы сбавить скорость или остановится где надо дабы недопустить аварий )...но непропустим ли что-то? Срабатывание магнетического датчика например ...,ведь надо также остальнои код отработать. А если соеденить все вместе к интеррапту все датчики и  по срабатыванию одного в куче бистро проверить который? Что-то сгорит ? Или просто есть ещо проще решение ?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Как-то очень сумбурно написано.

Чего Вы хотите то?

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

если соеденить вместе к интеррапту все датчики и  по срабатыванию одного в куче бистро проверить который? Что-то сгорит ? Или просто есть ещо проще решение ?

b707
Offline
Зарегистрирован: 26.05.2017

m_veidemanis пишет:

если соеденить вместе к интеррапту все датчики и  по срабатыванию одного в куче бистро проверить который? Что-то сгорит ? Или просто есть ещо проще решение ?

если есть время "быстро проверить все датчики" - так и проверяйте их в цикле, тут и интеррапт не нужен.

А вообще есть базовое решение - на прерывание сажаются только датчики, необходимое время реакции на которые составляет микросекунды. Все прочие датчики, типа кнопок, термометров, весов, датчиков давления - опращиваются обычным поллингом. Я не очень разбираюсь в моделях, но мне представляется. что  в вашей системе датчиков со временем реакции 10-20 микросекунд нет вовсе.

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

Наверное вы правы.Датчиков со временем реакции 10-20 микросекунд нет вовсе...а подключить можно? Не сгорит?

bwn
Offline
Зарегистрирован: 25.08.2014

А мне PCF8575 c монтажным ИЛИ на прерывании видится (самому такое не требовалось, не делал). Дернуло, считали данные, проверили биты, приняли решение. Но, это для горы датчиков а-ля кнопка. ИМХО.

MaksVV
Offline
Зарегистрирован: 06.08.2015

ds2406 на каждый датчик, шина 1-wire, три провода и кусочек кода избавят вас от горы проводов, и будет понятно какой именно сработал

MaksVV
Offline
Зарегистрирован: 06.08.2015

а ещё есть такое понятие диодная развязка

sadman41
Offline
Зарегистрирован: 19.10.2016

1-wire разве на прерывании работает? 

PCF-ка - самое простое, на мой взгляд, решение. Там и антидребезг на борту есть, как я помню.

Хотя, конечно, надо на макет смотреть - не идут ли там провода по 10 метров к каждой точке.

MaksVV
Offline
Зарегистрирован: 06.08.2015

1-wire не на прерывании. Но когда много датчиков наверное не лучший вариант. быстродейтвия не будет. Самое простое соединить  сигнальные провода всех датчиков через диоды на один пин интеррапт и ничего точно не сгорит .

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

Новое

Смотрю народ заинтересовался..:).Макет 3.5 на 7 метров.Общая длина полотна около 50 метров.Курсируют четыре поезда в разные стороны.Чтобы это работало полотно разрезано на 60 кусков,чтобы осуществить независимую подачу биполяпного тока.Где локомотив - мерки берёт 60 датчиков Хола, а где хвост освободил, или нет путь другому составу и где надо начинать тормозить , сигнализируют магнетические датчики...а их около 180....Конечно макет поезда не самолёт, за полсекунды ничего непроизайдёт, но зачем опрашибать всё каждые полсекунды если есть через возможность attachInterrupt() им дать самим докричатся до ардуинки? Но правда только пяти(для Меги).И мултиплексеры здес непомогут.За информацией к ним надо обращатся, в отличие от Interrupt ,который сам оповестит о срабатывании.Вот и созрел вопрос. А что будет если все датчики скопом соеденить к этому Interrupt-у.И только по срабатыванию (кого то одхого) идти и проверять кто это был.

 

 

 

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

Новое

Извините за опечатки, пишу транслитом..

sadman41
Offline
Зарегистрирован: 19.10.2016

Еще раз: PCF определяет, какой вход у нее сработал и дает с выхода INT сигнал на МК. Вот этот сигнал ловите и потом уже опрашиваете PCF-ку, с которой он прилетел, на предмет замкнутых входов. Правда, на таких длинных проводах я не знаю, насколько будет устойчиво работать PCF.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

m_veidemanis пишет:
...но зачем опрашибать всё каждые полсекунды если есть через возможность attachInterrupt() им дать самим докричатся до ардуинки?

1. Насколько я понял, как раз реализовать "возможность attachInterrupt() им дать самим докричатся до ардуинки" Вы и не можете. 

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

Цитата:
Но правда только пяти(для Меги).И мултиплексеры здес непомогут.За информацией к ним надо обращатся, в отличие от Interrupt ,который сам оповестит о срабатывании.Вот и созрел вопрос. А что будет если все датчики скопом соеденить к этому Interrupt-у.И только по срабатыванию (кого то одхого) идти и проверять кто это был.

Мне кажется Вы слишком идеалистически воспринимаете, что мол все само собой как-то образуется. 

Для опроса существует масса различных возможностей, в частности, через внешние расширители портов и пр. Т.е. фактически количество подключаемых сигналов не ограничено. А количество прерываний, напротив, ограничено. И, более того: когда Вы опрашиваете какое-либо устройство, Вы уже знаете, кто Вам отвечает (тот, кого Вы опрашиваете), а в случае с прерыванием от более чем одного устройства Вам еще предстоит идентифицировать отправителя, что, как правило, оказывается значительно сложнее.

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

Опрашивать надо неспорю, но только после того, как сработает(может только раз за 5-7 сек.).

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

sadman41 пишет:

Еще раз: PCF определяет, какой вход у нее сработал и дает с выхода INT сигнал на МК. Вот этот сигнал ловите и потом уже опрашиваете PCF-ку, с которой он прилетел, на предмет замкнутых входов. Правда, на таких длинных проводах я не знаю, насколько будет устойчиво работать PCF.

А разве он даёт сигнал без опроса по конкретному адресу?Если я правильно понимаю то PCF надо опрашивать.

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

andriano пишет:

 

 И, более того: когда Вы опрашиваете какое-либо устройство, Вы уже знаете, кто Вам отвечает (тот, кого Вы опрашиваете), а в случае с прерыванием от более чем одного устройства Вам еще предстоит идентифицировать отправителя, что, как правило, оказывается значительно сложнее.

Написать код опроса  непроблема...просто если есть возможность упростить, почемуже нет.

bwn
Offline
Зарегистрирован: 25.08.2014

m_veidemanis пишет:

sadman41 пишет:

Еще раз: PCF определяет, какой вход у нее сработал и дает с выхода INT сигнал на МК. Вот этот сигнал ловите и потом уже опрашиваете PCF-ку, с которой он прилетел, на предмет замкнутых входов. Правда, на таких длинных проводах я не знаю, насколько будет устойчиво работать PCF.

А разве он даёт сигнал без опроса по конкретному адресу?Если я правильно понимаю то PCF надо опрашивать.

Она делает дрыг при изменении на входе. Потом уже опрашиваем и смотрим какой канал сработал.

sadman41
Offline
Зарегистрирован: 19.10.2016

The PCF8575 provides an open-drain interrupt (INT) output, which can be connected to the interrupt input of a microcontroller. An interrupt is generated by any rising or falling edge of the port inputs in the input mode. After time, tiv, the signal INT is valid. Resetting and reactivating the interrupt circuit is achieved when data on the port is changed to the original setting, or data is read from or written to the port that generated the interrupt.

Так же: MCP23017 - INTA and INTB Can Be Configured to Operate Independently or Together

m_veidemanis
Offline
Зарегистрирован: 22.10.2018

О вот это дело...Будем пробовать.Спасибо!