Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Уловить пропадание и появление импульсов на входе в условии помех.
Отправлено
Dikoy 03 мая 2009, г. 17:17
Простая, на первый взгляд, задача. На вход прерывания INT0 поступает меандр 50 Гц. Нужно отловить момент, когда он пропадёт и когда начнётся снова. М128, 16 МГц.
Фигня. Завожу таймер 0 на прерывание по переполнению с максимальным делителем, получаю прерывание с частотой 61 Гц. Инкрементирую в нём флаг. В прерывании INT0 этот флаг сбрасываю. В основном коде проверяю его значение. Больше 10? Выключаю прерывание по переполнению и жду, когда флаг сбросится в инте. Обычное дело.
Но есть косяк. После пропадания импульсов на линии иногда появляются помехи (раз в 2 сек в среднем) и вызывают INT0. Флаг сбрасывается, всё запускается, а этого не надо.
То есть стоит задача не только пофиксить пропадание импульсов на INT0, но при этом ещё грамотно зафиксировать момент их начала, отделив помехи от правильного сигнала. При этом максимально разгрузив прерывания (должны выполняться максимально быстро).
Скорость фиксирования пропадания и появления импульсов не очень критична, но желательно за время 5-10 импульсов на INT0 (100-200 мС) сообразить, появились ли они (или пропали).
Подскажите, как это написать покомпактней и покрасивше!
Составить ответ | Вернуться на конференцию.
Ответы