Страница 1 из 1

Вибромодуль.

СообщениеДобавлено: 07 июн 2017, 15:46
Серега
Добрый день.
Задача достаточно простая.
Но к сожалению я в ней запутался.
Прошу помощи.
Разъясните пожалуйста.
Есть плата. Плата не моя. Использован процессор PIC16f676. Кварц 10 мгц.
Получаю через оптопару импульсы из сети 220 вольт. Т.Е. стоит детектор ноля.
Необходимо открывать полевик (особенность конструкции).
Устройство управляет виброкатушкой.
Во вложении два примера.
Пример номер 1.
По прерыванию получаю импульс. Перевожу ножку в ноль (особенность конструкции).
Выставляю задержку от 1 до 10 миллисекунд и после этого выставляю ножку в единицу.
Работает как часы.
Но в момент задержки я ничего делать не могу.
А необходимо смотреть состояние других портов.

Вариант номер два.
По прерыванию получаю импульс. Перевожу ножку в ноль (особенность конструкции).
Выставляю задержку 100 микросекунд и проверяю количество набранных циклов. Например 20 (должно равняться двум миллисекундам). После выполнения условия выставляю ножку в единицу и сбрасываю количество набранных циклов.
В результате величина импульса плавает от 0 до 2 миллисекунд.
Не могу понять почему величина импульса плавает (проверяю осциллографом).
Что я делаю не так???

Re: Вибромодуль.

СообщениеДобавлено: 07 июн 2017, 16:45
Владимир
Если нужно четко выдержать время импульса - используй таймер, который включаешь, когда переходишь через 0. Отсчитал, выключил таймер и подал свою единичку.
Если длина импульса не очень критична - посчитай сколько времени тебе нужно на какие то операции, то ли проверить порт, то ли что то посчитать, если получается это время стабильным, то используй его вместо своей задержки.

Re: Вибромодуль.

СообщениеДобавлено: 07 июн 2017, 17:27
Серега
Дай пожалуйста пример.
Что бы было более понятно.

Re: Вибромодуль.

СообщениеДобавлено: 07 июн 2017, 17:39
Максим
Смотри темы управление симистором.

Re: Вибромодуль.

СообщениеДобавлено: 07 июн 2017, 17:48
Серега
Спасибо.
Похоже понял свой косяк.
Позже отпишусь.

Re: Вибромодуль.

СообщениеДобавлено: 19 июн 2017, 15:25
Серега
Всем привет.
Спасибо огромное за помощь.
В действительности сделал дополнительное прерывание по переполнению таймера.
Его отслеживаю и подсчитываю.
Программа заработала как часы.
Всем спасибо за помощь.