Подсчет количества импульсов

boobo
Offline
Зарегистрирован: 13.03.2019

Здравствуйте,

есть некое устройство, которое формирует импульсы длиной 200 мс абсолютно хаотичным образом.

Для подсчета этих импульсов какие надо использовать входа Ардуино: цифровые или аналоговые?

Каким лучше воспользоваться способом подсчета?

Заранее спасибо!

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А какова аплитуда импульсов? если больше 3-х вольт, то обычный цифровой. Считать проще по прерыванию (по фронту). Но многое зависит от конкретных деталей

inspiritus
Offline
Зарегистрирован: 17.12.2012

Цифровым, прерыванием

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

Это, - смотря какие импульсы.

Если импульсы цифровые, лучше использовать цифровой вход, а если аналоговые - аналоговый.

boobo
Offline
Зарегистрирован: 13.03.2019

У меня в качестве входного сигнала выступает реле устройства (замыкается на 200 мсек). Я посажу на вход 5В от выхода Ардуино. С прерываниями картина прояснилась. Только на Уно есть всего два входных прерывания.

А у меня глобально задача следующая:

1) при поступлении импульса на один вход, делачем счетчик +1

2) при поступлении импульса на другой вход, делачем счетчик -1

4) если счетчик превысил определнное значение, то должно сработать реле

5) если значение счетчика упало, то реле должно вернуться в исходное состояние

6) значение счетчика должно транслироваться на табло по 485 интерфейсу.

Вопросы:

1) такое вообще можно сделаь на Ардуино?

2) сколько глобально будет прерываний? Только для подсчета входных импульсов надо два прерывания. А они не будут друг другу мешать, ведь они будут плюсовать или минусовать один и тот же счетчик?

3) надо ли для использовая 485 интерфейса использовать прерывания?

4) в чем смысл volatile. Что оно значит я знаю, а вот почему Ардуино без нее не сможет работать, я понять не могу?

SLKH
Offline
Зарегистрирован: 17.08.2015

Для начала решите проблему с дребезгом (программно или аппаратно), иначе контакты вам такого на прерываниях насчитают - разгружать заемучаетесь.

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Уважаемый, 200мск - это очень много, не нужны Вам никакие прерывания, прекрасно за 10мск проверите дребезг и поставите флаг. При снятии флага - добавите или убавите переменную. А использования на 485 интерфейсе прерываний я, лично, считаю извращением - ну медленная там скорость.

Чечако
Offline
Зарегистрирован: 15.06.2018

mykaida пишет:

Уважаемый, 200мск - это очень много, не нужны Вам никакие прерывания, прекрасно за 10мск проверите дребезг и поставите флаг. При снятии флага - добавите или убавите переменную. А использования на 485 интерфейсе прерываний я, лично, считаю извращением - ну медленная там скорость.

Тут вопрос, чем еще дуина будте заниматься, кроме отлова этих импульсов. Потому как если будет загружена - без прерываний никак. Но ТС всю задачу не озвучивал. :)

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Чечако пишет:

Тут вопрос, чем еще дуина будте заниматься, кроме отлова этих импульсов. Потому как если будет загружена - без прерываний никак. Но ТС всю задачу не озвучивал. :)

Абсолютно с Вами согласен. Но если надо делать еще какие-то долгие процессы - проще поставить еще один контроллер (ну и дешевле, соответственно), чем грузить несчастную дуинку под завязку.

И повторю автора поста - уважаемый ТС - опубликуйте полное ТЗ!