Как определить есть ли на ножке МК меандр?

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
Vlad399
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб фев 28, 2009 19:25:24
Откуда: MSK

Как определить есть ли на ножке МК меандр?

Сообщение Vlad399 »

Всем привет!
Подскажите, плз, как проще всего ПРОГРАММНО определить наличие внешнего меандра с частотой в сотни Герц на ножке Мега8, например, PD2/INT0?
Спасибо!
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: Как определить есть ли на ножке МК меандр?

Сообщение Alkul »

Vlad399 писал(а):как проще всего ПРОГРАММНО определить наличие внешнего меандра с частотой в сотни Герц на ножке Мега8, например, PD2/INT0?

Меандр в ТТЛ-уровнях?
Определить нужно однократно или постоянно контролировать наличие меандра?
Аватара пользователя
Vlad399
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб фев 28, 2009 19:25:24
Откуда: MSK

Re: Как определить есть ли на ножке МК меандр?

Сообщение Vlad399 »

Да, TTL.
Контролировать надо периодически, что бы засечь момент пропадания меандра.
Спасибо за внимание к моей проблеме.
Аватара пользователя
Deer
Прорезались зубы
Сообщения: 211
Зарегистрирован: Пт июл 31, 2009 19:45:11
Откуда: Санкт-Петербург
Контактная информация:

Re: Как определить есть ли на ножке МК меандр?

Сообщение Deer »

На ножке периодически проверять уровень и запоминать длительность наличия там нуля и длительность наличия единицы. Запоминать в раздельных переменных. Если обе переменные находятся в заданных пределах (пределы определяются временными параметрами сигнала и частотой опроса пина), значит меандр есть, и он нужной частоты. Если хоть одна переменная из двух имеет значение вне заданных для неё пределов, значит меандр не подаётся
Аватара пользователя
Vlad399
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб фев 28, 2009 19:25:24
Откуда: MSK

Re: Как определить есть ли на ножке МК меандр?

Сообщение Vlad399 »

Похоже, я сам нашел одно из возможных решений проблемы - если меандр подаётся на ножку INT0, то можно опрашивать флаг INTF0 в регистре GIFR. Если INTF0==1, то сбрасываем его, занося туда единицу т.к. "the flag can be cleared by writing a logical one to it" и, если при следующем опросе он опять ==1, то меандр есть, в противном случае меандр пропал.
Осталось проверить идею.
Аватара пользователя
c2n
Сверлит текстолит когтями
Сообщения: 1193
Зарегистрирован: Ср июл 25, 2012 21:40:09
Откуда: Самара
Контактная информация:

Re: Как определить есть ли на ножке МК меандр?

Сообщение c2n »

Относительно АВРок 8бит, так
Vlad399 писал(а):Похоже, я сам нашел одно из возможных решений проблемы

можно делать и не по INT0 а по любому INT и PCINT.
При этом на INT0 можно детектировать в разных вариантах:
нарастающий, спадающий, смена состояния сигнала...
у PCINT только смена состояния....
Соответственно инициировать прерывание, ну а далее - тело дехники
При этом надо иметь ввиду, что данная операция прерывания с опросами запоминаниями и прочим займет +/- 10 тактов машинного времени, и может случиться так, что частота меандра попадет в "резонанс" по нижнему или верхнему уровню например, и детектирование начнет врать с частотой...
Если знать точнее, что от схемы требуется, то было бы проще поDOOMать :kill:

ЕСЛИ НУЖЕН ПРОСТО ФАКТ НАЛИЧИЯ СИГНАЛА.
На практике же разумней было бы через транзистор повторять меандр, Эмиттерным повторителем например, далее сглаживать конденсатором, получая эквивалентное напряжение, и анализировать его через АЦП некоторых МК, например тини13, 26... у которых есть ADC.
т.к. меандр - частный случай Широтно-импульсной модуляции = 50%. тоесть в эквиваленте ТТЛ уровня = 2,5В.
Так будет надежней.

У товарища D-Halt'а - практически детское питание :) :hunger: //разжевано
http://easyelectronics.ru/avr-uchebnyj-kurs-ispolzovanie-shim.html

Если совсем никак нельзя воспользоваться МК с АЦП, там же можно поискать про R2R АЦП/ЦАП, и собрать детектор на ОУ в режиме компаратора.

Ну а описание меандра в википедии: (до кучи)
http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B0%D0%BD%D0%B4%D1%80_%28%D1%80%D0%B0%D0%B4%D0%B8%D0%BE%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0%29
Ответить

Вернуться в «AVR»