Официальный сайт компании Arduino по адресу arduino.cc
Счетчик через прерывания
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 30/10/2016 - 14:15
Привет всем. Нужен мудрый совет как правильно организовать счетчик через прерывания.
Есть круг с 9ью магнитами, 8 по окружности и еще один для нулевого положения. На это все реагируют два датчика Холла. Один считает, второй ловит ноль.
Скажите, насколько будет правилен такой код для данной конструкции:
volatile bool zero = 0; volatile byte counter=0; void setup() { pinMode(2, INPUT_PULLUP); pinMode(2, INPUT_PULLUP); attachInterrupt(0,increase, FALLING); attachInterrupt(1, zer, FALLING); } void increase(){ counter++; zero = 0; } void zer(){ zero = 1; counter = 0; }
А зачем два раза
pinMode(2, INPUT_PULLUP); ???
Для надёжности?
ЕвгенийП, видимо он хотел на 3 пин. да недоглядел :))
ЕвгенийП, видимо он хотел на 3 пин. да недоглядел :))
Именно так
Никто не знает?
Нет, никто. Вы ведь не объяснили задачу. "Один считает, другой ловит ноль". Как считает? Что считает? После 0 сбрасывает или дальше считает? Ловит 0 куда? Для чего? Что с ним (пойманным нулём) делает? У Вас в голове, возможно и есть ответы, но у нас нет. А без этого, кто ж знает подойдёт Ваше код или нет.
Один считает, второй ловит ноль.
третий складирует нули в ящики, которые подвозит на тележках четвёртый, который отвозит тележки с нулями на склад готовой продукции, где пятый принимает привезённое на хранение и записывает в амбарную книгу.
Ноль это верхнее положение, начало.На нем 2 датчика сразу . Остальные магниты по кругу. При проходе датчик Холла выдаёт 0 и срабатывает прерывание.
Проблема в том, что при проходе магнита через датчик, переменная увеличивается не на один пункт, а иногда сразу на несколько.
Вопрос как этого избежать........
Проблема в том, что при проходе магнита через датчик, переменная увеличивается не на один пункт, а иногда сразу на несколько.
Вопрос как этого избежать........
Megawollt, ответь мне на один вопрос: ты нахрена в теме титанового велосипеда для тактовой кнопки тусовался, что бы сейчас задавать подобные вопросы?
Вопрос как этого избежать........
Вероятно пологие фронты - ставить шмигер.
Вопрос как этого избежать........
Вероятно пологие фронты - ставить шмигер.
встроенный же в датчик Холла.
Там не фронты, там дребезг, когда магнит на грани чувствительности датчика.
ТС - бортесь с дребезгом.
ТС - бортесь с дребезгом.
я запретил.
Проблема в том, что при проходе магнита через датчик, переменная увеличивается не на один пункт, а иногда сразу на несколько.
Вопрос как этого избежать........
Megawollt, ответь мне на один вопрос: ты нахрена в теме титанового велосипеда для тактовой кнопки тусовался, что бы сейчас задавать подобные вопросы?
Ваши классы конечно всегда выручают, но хотелось бы понять основы, а в доступной форме я пока не нашел
Проблема в том, что при проходе магнита через датчик, переменная увеличивается не на один пункт, а иногда сразу на несколько.
Вопрос как этого избежать........
Для начала нужно понять, почему так происходит.
Если "дребезг", то ФНЧ + триггер Шмитта.
Если люфты, немонотонное вращение и пр. - регулировать механику.
Для начала нужно понять, почему так происходит.
сначала нужно убедиться, что у него не аналоговый датчик Холла.
триггер встроен в правильный датчик Холла и от дребезга не спасёт, ФНЧ - чай не 18-й век.
1. Триггер не может быть встроен в датчик Холла по определению. Максимум - в модуль, включающий датчик Холла.
2. Ни датчик Холла, ни ФНЧ сами по себе от дребезга не спасают. Могут спасти (в некоторых случаях) только при совместном использовании.
3. Если у кого-то ФНЧ ассоциируются с XVIII веком - это его проблемы. (На всякий случай: как лично Вы расшифровываете аббревиатуру ФНЧ?)
1. Триггер не может быть встроен в датчик Холла по определению. Максимум - в модуль, включающий датчик Холла.
2. Ни датчик Холла, ни ФНЧ сами по себе от дребезга не спасают. Могут спасти (в некоторых случаях) только при совместном использовании.
3. Если у кого-то ФНЧ ассоциируются с XVIII веком - это его проблемы. (На всякий случай: как лично Вы расшифровываете аббревиатуру ФНЧ?)
1. та, да - всё так и есть...
датчики Холла с логическим выходом имеют встроенный триггер Шмитта для преобразования линейного сигнала и имеют только два состояния на выходе: высокий или низкий уровень.
2. алё, гараж - тебя зовут Рептилоид, а не Капитан Очевидность.
3. если кто-то бредит ФНЧ для борьбы с дребезгом на цифровой линии - это его личные проблемы.
Датчик Холла SS543AT цифровой. Если честно, то я и не знал, что они бывают цифровые и аналоговые.
Сегодня мастера выточат колесо с магнитами, буду пробовать. До этого пробовал на макете
быть такого не может по определению!(с)Рептилоид
Да, тролль Вы знатный :)
А есть ли смысл использовать какой нибудь код защиты, типа как для кнопки? Или для Холла и прерывания не имеет смысла?
А есть ли смысл использовать какой нибудь код защиты, типа как для кнопки? Или для Холла и прерывания не имеет смысла?
а, ты просто попробуй подключить свой датчик Холла к пину кнопки класс титановый велосипед для тактовой кнопки, static const byte bounce_ = 50; // длительность отслеживания дребезга подбери, что бы не пропускало твои магниты, но не двоило.
и, всё.
Спасибо, попробую