Перейти к содержанию
    

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотри апнот AVR410 на их сайте - это манчестер применённый к стандарту RC5 (на асме)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишу сам. Тема закрыта.

 

 

Если не жалко, сообщи о результатах, тоже интересует данная тема, вот только с самосинхронизацией загвоздка, как ее реализовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишу сам. Тема закрыта.

Если не жалко, сообщи о результатах, тоже интересует данная тема, вот только с самосинхронизацией загвоздка, как ее реализовать.

Манчестер - самосинхронизированный код.

 

Вгрубе алгоритм такой

 

1) Ждёте перепада 0-1 или 1-0 в середине бита (вот вам и синхронизация),

 

2) Определяете какой бит пришел и запоминаете его (вдвигаете в регистр),

 

3) Пропускаете 3/4 периода и переходите к пункту 1.

 

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

Вот и всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а не слишком ли навороченно получается?

да кстати нашел вот такую весчь, только все ника побороть немогу.

AN_008_Oversampling_1_0.rar

Изменено пользователем dvm11111111

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а не слишком ли навороченно получается?

да кстати нашел вот такую весчь, только все ника побороть немогу.

 

Если искать простые пути, то можно посмотреть сдесь

www.atmel.com/dyn/resources/prod_documents/doc3a78163c4000a.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а не слишком ли навороченно получается?

Наворочено - это когда ФАПЧа для строба и адаптивный порог для импульса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а не слишком ли навороченно получается?

да кстати нашел вот такую весчь, только все ника побороть немогу.

 

Если искать простые пути, то можно посмотреть сдесь

www.atmel.com/dyn/resources/prod_documents/doc3a78163c4000a.pdf

 

Про использование INT0 и таймера эт я знаю, только это подходит для приема RC5 с его 12 битами, а вот если принимать таким способом 112 бит, то выяснилось, что расчетные значения задержек несовсем подходят.

Сбой считываемых значений начинается гдето на 8-10 байте, что несовсем подходит.

Сейчас и передатчи и приемник работают от кварцев, а планируется использовать передатчик от внутреннего RC (да еще и несколько передатчиков, соответственно уход длительности импульсов будет и в плюс, и в минус), а так ввообще получится плюс-минус пол километра. Вот меня и интересует алгоритм с синхронизацией.

 

 

а не слишком ли навороченно получается?

Наворочено - это когда ФАПЧа для строба и адаптивный порог для импульса.

 

а по подробней, с исходником на С?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про использование INT0 и таймера эт я знаю, только это подходит для приема RC5 с его 12 битами, а вот если принимать таким способом 112 бит, то выяснилось, что расчетные значения задержек несовсем подходят.

Сбой считываемых значений начинается гдето на 8-10 байте, что несовсем подходит.

Сейчас и передатчи и приемник работают от кварцев, а планируется использовать передатчик от внутреннего RC (да еще и несколько передатчиков, соответственно уход длительности импульсов будет и в плюс, и в минус), а так ввообще получится плюс-минус пол километра. Вот меня и интересует алгоритм с синхронизацией.

 

насколько я помню там нет упоминания об INT и TMR, просто описан алгоритм приема манчестера, с синхронизацией по длинному импульсу (это когда импульсы идут потоком и нужно выловить пакет определенной длительности)

что же касается сбоев то во первых для таких вещей обычно пользуют Capture (ICR1), а во вторых точка привязки (или точка отсчета) должна быть не в начале приема, а перемещаться после каждого фронта (или периода синхросигнала), тогда точность будет определять погрешность в пределах 1-го периода синхронизации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что если сделать вот так...

имеем внешнее прерывание по любому изменению

в прерывании смотрим чего насчитал таймер...

и обнуляем счетчик таймера для след изменеия по входу ExtINT

(получается типа ICP только захват счетчика таймера по любому изменению уровня)

Определяем минимальную длит импульса =Tmin.

;----

далее, с каждым прерыванием по Ext INT, смотрим что натикало (пусть будет T)и сверяемся с таблицой истинности:

1) T=2Tmin & __--- => bit=1

2) T=2Tmin & --__ => bit=0

3) T=Tmin & --__ & lastbit=1 => skip

4) T=Tmin & --__ & lastbit=0 => bit=0

5) T=Tmin & __-- & lastbit=0 => skip

6) T=Tmin & __-- & lastbit=1 => bit=1

;----

переменную T min ОЦЕНИВАТЬ с каждым прерыванием EXTINT.

и пусть она будет +- 10%

сори если гдето накасячил - но смысл такой...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если через UART, но с манчестером? Т.е. из одного байта получаем два.

Скорее, из двух - один. А вообще, смысла использовать уарт с манчестером не было и нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В журнале "Радио" за 1983 год было описание первого самодельного компютера "МИКРО-80". В одном из номеров был описан блок чтения/записи на магнитную ленту и очень подробно расписан процесс приёма и передачи байтов манчестерским кодом. Процессор 8080 прекрасно справлялся, ну а уж AVR-ка запросто должна его одной левой...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...