Поймать синхроимпульс

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Поймать синхроимпульс

Сообщение AVT-28 »

Всем привет.
Я тут замучался с одной задачей. В жизни таким не занимался а тут приспичило.
Задача такая, ловить разные импульсы и выполнять по ним разные задачи.
Поясню.
Есть линия в ней всегда идет единица.
Затем посылается синхроимпульс который определяет начало действия контроллера.
Синхроимпульс отрицательный, то есть коротыш на землю +5в, этот коротыш длиться ровно 270мс. Затем появляется 1 и длится 200мс,
вот это мне надо отследить и дать контроллеру понять что пора начать счет следующих импульсов.
Дальше идет чередование импульсов отрицательных 30мкс и положительных 140мкс и их может быть до 255 их надо записывать в счетчик.
Затем идет пауза это положительный импульс 94,5 мс и все, это говорит о том что надо заканчивать процесс.
Вот голову сломал как это осуществить. Можно сказать что это протокол передачи данных, только оч примитивный
Реклама
Аватара пользователя
Enigm
Говорящий с текстолитом
Сообщения: 1663
Зарегистрирован: Вт апр 03, 2012 20:36:41
Откуда: Сочи

Re: Поймать синхроимпульс

Сообщение Enigm »

Используйте аппаратный захват .
ICP1 – Input Capture Pin: The PB0 pin can act as an Input Capture Pin for Timer/Counter1. это с даты на мегу8

С его помошью легко измерять длительность импулса, а с количеством уже проще.
Реклама
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Re: Поймать синхроимпульс

Сообщение AVT-28 »

Ой, да я забыл указать чего программирую, в голове автоматом кажется что все знают. :)
У меня pic18f458, hi-tech picc pro компилятор. Я на прерывание RB0 посадил, обрабатываю в прерывании сигнал.
Счетчик построить нет проблем, 2 сек и готово. А вот как выделить именно то что надо и именно в те миллисекунды попасть и не словить помеху или другой какой импульс.
У меня не было вообще такого опыта. Работал с usart но там все просто, уже все в самом чипе есть для работы.
В принципе опыта мало т.к балуюсь для себя для дома, больших проектов не было никогда. У меня все на уровне автоматики простой.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Поймать синхроимпульс

Сообщение Аlex »

В PIC'ах тоже есть захват, читайте про модуль CCP.
чередование импульсов отрицательных 30мкс и положительных 140мкс .......
их надо записывать в счетчик
Ччто это означает ? У Вас же только отрицательные импульсы, т.к. линия подтянута к +5V. И что означает записать их, и в какой счётчик ?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Поймать синхроимпульс

Сообщение ploop »

А что там за протокол на линии? Может стандартный какой?
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Поймать синхроимпульс

Сообщение pyzhman »

Так прост же до безобразия, судя по описанию. Синхроимпульс посылки и количество импульсов. Между посылками пауза. Всё.
Docendo discimus
Реклама
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Re: Поймать синхроимпульс

Сообщение AVT-28 »

Так и есть! Я только не догоняю принцип.
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Поймать синхроимпульс

Сообщение akl »

По мне, довольно просто.
Частота тактирования таймера известна. Допустим, для примера, она равна 10'000'000 Гц, т.е. если таймер успел отсчитать 945'000±Δ тактов до спада, затем 2'700'000±Δ тактов до фронта, затем 2'000'000±Δ тактов до следующего спада, то можно сделать вывод о приходе синхропосылки. Здесь как нельзя лучше (выше советовали) подходит модуль захвата таймера и модуль сравнения.
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Re: Поймать синхроимпульс

Сообщение AVT-28 »

Ага, хорошо надо попробовать. Щас кое какой проектик закончу продолжу. :)
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Поймать синхроимпульс

Сообщение Alexeyslav »

Помоему, с такими интервалами можно и не использовать модуль захвата. Эту задачу можно решать вполне неторопливо программным способом.

Собственно непонятно только одно - после синхронизации идут импульсы... но не сказано какие характеристики их надо фиксировать - момент возникновения? Судя по всему, это не просто импульсы а передаются какие-то данные - а значит просто НЕОБХОДИМО знать способ модуляции.

Вобщем, очень сильно похоже на работу DMX, только оный работает на гораздо больших скоростях.

Нет ведь необходимости точно привязываться к этим временным интервалам - в начале ждем импульс длительностью минимум 200мс чтобы отсеять ложняки, затем ждем момент перехода с 0 на 1, и дальше ждем обратного перехода который произойдет с первым информационным импульсом(если переход произошел раньше минимального времени - проверяем на его стабильность, будет ли сигнал таким же через 100мкс?). Ну и т.д. постоянно проверяя таймауты, если например нет импульса дольше 20мс - очевидно это конец посылки и нет необходимости ждать полные 95мс - можно переходить в режим ожидания следующего синхронизирующего импульса.

Я так полагаю, что код там простой - длительность посылок фиксированная, просто лог."1" передается импульсом 30мкс паузой и 140мкс импульсом, а лог.0 - наоборот 140мкс пауза и 30мкс импульс. Тогда достаточно грубо измерять длительность каждого последующего импульса(распознать больше ли он 80мкс и 10мкс чтобы отсеять мусор) и дело в шляпе.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Поймать синхроимпульс

Сообщение BOB51 »

Табличный селектор по длительности импульса с шагом через четверть или половинку...
Самый длинный делится на 4 (или более)
затем смотрим сколько полных четвертинок в текущем и соответственно его сортируем.
возможно туда-сюда пол четвертинки... или чего еще... :roll:
по подобному сценарию давным-давно работал "счетчик заказа" для копира - вылавливал скоко выпало A4/A4R/A3 листочков.
Ответить

Вернуться в «Разные вопросы по МК»