Распознование последовательности

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

Здравствуйте!
Помогите распознать последовательность импульсов и выделить из нее данные.
С чего начать и как делать? Как вот вообше это сделать?
МК - атмега128. Язык С.
длительность импульса известна (можно посчитать)
Вложения
последовательность.JPG
(56.72 КБ) 372 скачивания
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Обычный последовательный обмен, аналогичен SPI. Принимаете всю последовательность (1 байт преамбула+1 байт заголовок+4 байта данных), во время защитного интерала проводите анализ принятого путем наглого чихания на первые 2 байта. (утрирую конечно насчет чихания)
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

это из книги Яценкова про мк с радиопередатчиком. Вот надо принять данные в таком формате.
Обычный последовательный обмен, аналогичен SPI. Принимаете всю последовательность (1 байт преамбула+1 байт заголовок+4 байта данных), во время защитного интерала проводите анализ принятого путем наглого чихания на первые 2 байта. (утрирую конечно насчет чихания)
это то я понимаю :)
только вот как технически это сделать нет, то ли как-то таймер задействовать или через прерывание
как вот следить за потоком и веделить из него последовательность?
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

_noise, не согласен на счет U(S)ART'а. Там ведь данные обрамляются как минимум стартовым и стоповым битами, а иногда и дополнением до четности/нечетности. Тут на времянке чистые 8 битники передаются... не однозначно не УАПП...
Автор, Вы писали что интервалы известны. Ну так ловите преамбулу - она признак начала передачи. Я бы выделил по внешнему прерыванию за счет анализа состояния по изменению фронтов.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

Meteor писал(а):Ну так ловите преамбулу - она признак начала передачи. Я бы выделил по внешнему прерыванию за счет анализа состояния по изменению фронтов.
Я совсем недавно начал знакомство с МК и не знаю как такое реализовать. Как я понял у атмеги128 только 8 внешних прерываний и соответственно 8 пинов? Это значит что я должен присоединить источник последовательности к одному из 8 пинов?
И если не сложно, опишите пожалуйста что дальше делать.
Реклама
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

Преамбула и заголовок не обязательно 1 байт
если интересно http://rapidgator.net/113732/Mk_rfPIC.djvu.html
296 и 307 стр
Реклама
Встал на лапы
Сообщения: 90
Зарегистрирован: Пн мар 08, 2010 02:59:04

Сообщение Digikey »

Ни UART ни SPI к этому (прямого) отношения не имеют.
Речь идет о логическом уровне протокола.

Разумеется, нужно знать частоту_передачи/длительность_импульсов.
Определение начала импульса - прерывание по фронту.
Длительность защитного интервала, нужно полагать, больше чем длительность заголовок+данные

Автомат состояний:
S0: ожидание защитного интервала
-если защитный интервал обнаружен переходим к S1
S1: чтение 7 бит преамбулы
-если последовательность 1010101 нарушается переходим к S0
-если последовательность 1010101 правильная переходим к S2
S2: считываем заголовок и данные
-переходим к S0

Как это реализовать:
ожидание защитного интервала
a) Таймер на время = заголовок+данные, таймер запущен
b) прерывание(фронт на входе) должно переустанавливать Таймер,
соответсвенно Таймер досчитает до конца и выдаст свое прерывание только тогда, когда будет защитный интервал. Т.о. прерывание Таймера и есть признак обнаружения защитного интервала.

чтение преамбулы/данных
a)Таймер на время = период следования битовой последовательности, таймер остановлен
b)прерывание(фронт на входе) должно (с задержкой ~0.5 периода следования битов) разрешить работу таймера, по каждому прерыванию таймера считываем очередной информационный бит
длительность импульса известна (можно посчитать)
Кстати, какое реальное значение скорости передачи? Если период следования битов меньше нескольких десятков микросекунд, то там уже другой коленкор...
Это значит что я должен присоединить источник последовательности к одному из 8 пинов?
Источник последовательности должен быть подключен к одному из выводов с названием INT.., которые описаны в разделе External Interrupts, Sense Control для прерывания должен быть Risig Edge.
С чего начать ?
Найдите в сети, если у Вас нет, вот такую книгу: Шпак Ю.А. Программирование на языке С для AVR и PIC микроконтроллеров (djvu ~9 MB)
Посмотрите Атмеловские Application Notes
Последний раз редактировалось Digikey Вс апр 11, 2010 02:51:34, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Топикстартер приколист - там же в книге и реализация есть.
noise, Meteor там Манчестерский код...
Встал на лапы
Сообщения: 90
Зарегистрирован: Пн мар 08, 2010 02:59:04

Сообщение Digikey »

dosikus писал(а):...там Манчестерский код...
При Манчестерском кодировании линия не может находится в фиксированном состоянии (0 или 1) дольше, чем длительность 1 бита кодируемой последовательности. Достаточно взглянуть на "Заголовок" или "Защит. интервал", чтобы понять, что здесь это не так.
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

dosikus писал(а):там Манчестерский код...
там не манчейстер, он по моему требует синхронизации
_noise писал(а):Что-то подсказывает, что водящему хотелось бы увидеть не абстрактные рассуждения, а полностью работающий код (и схему).
Да программировать я умею, это не проблема, проблема втом через что это все реализовать...
Достаточно написать как Digikey написал, на псевдо языке.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Ну да немного лоханулся там не Манчестер . (winex какая на... синхронизация ты хоть почитал бы сначала.)
Ну вы то долго гадать будете ? :))
Я же написал - топикстартер или издевается или читать не умеет: в книге , что он привел , все это расписано от и до на низком уровне !!!
Микроконтроллеры rfPIC со встроенным маломощным радиопередатчиком (В.С. Яценков, 2006).djvu

KeeLoq там...
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

dosikus писал(а):(winex какая на... синхронизация ты хоть почитал бы сначала.)
Ну вы то долго гадать будете ? :))
при манчейстере нужно передавать синхросигнал и информацию по одному каналу. здесь только информация!(Б.В. Шевкопляс. Микропроцессорные структуры, стр 98)
я знаю что там есть реализция, только она мне ни о чем не говорит! Мне надо это на С и под авр.
И тут я пытаюсь выяснить как вообще работать с такой последовательностью!!! Через что ее ловить.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

winex писал(а): при манчейстере нужно передавать синхросигнал и информацию по одному каналу. здесь только информация!(Б.В. Шевкопляс. Микропроцессорные структуры, стр 98)
Сэр , вы хоть понимаете о чем пишете ?
О синхронизации чего речь идет ?

И еще раз . В книге все есть .
А реализацию KeeLoq ищи в googl .
А вообще noise правильно сказал - Не туда лезешь , не с тоо начал...
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

Meteor и Digikey только поняли о чем идет речь в ветке. остальным лишь бы что-то написать, ребята, если по сути нечего сказать лучше не пишите!
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

winex писал(а):Meteor и Digikey только поняли о чем идет речь в ветке. остальным лишь бы что-то написать, ребята, если по сути нечего сказать лучше не пишите!
Все у меня нет слов , случай тяжелый практически неизлечим .
Тебе не помощь нужна, а что бы за тебя сделали и на тарелочке с олубой каемочкой выложили.
Я пас .
" -Пилите Шура , пилите..."
Открыл глаза
Сообщения: 40
Зарегистрирован: Ср дек 09, 2009 23:05:49

Сообщение winex »

Читал что они написали? Всего 2 поста и ограмная польза! А остальное вода!
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

winex писал(а):Читал что они написали? Всего 2 поста и ограмная польза! А остальное вода!
Не удержался..
Что вода ?! Полное описание частного случая KeeLoq - базовый код без плавающей составляющей - то откуда ты кусок выдрал ?!? Или домыслы выложенные выше ?
Код с полными коментариями , не разобраться в нем не возможно .
Читай ту книжку со страницы 300 .
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»