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

телеметрия по рации.

Добрый день.

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

Наиболее подходящий для меня вариант - использование рации. К тому же метод проверенный, реализован в baycom модеме.

Отличие от него только в том, что модемом будет управлять контроллер, он же будет через FT232 связан с компьютером.

 

Из всего что есть, нарыл 3 микросхемы:

FX604

TCM3105

74HC942

 

Есть отзывы людей, которым доводилось пользоваться этими микросхемами?

Что понадежнее будет? Скорость устроит и 300 бод, главное, чтобы демодулятор справлялся со своей задачей.

 

Следующий вопрос - как они работают - они тупо выдают разные частоты в зависимости от нуля или единички? Ну и при демодуляции - тупо выдают ноль или единичку при соответствующих частотах?

В даташите какой-то намек на скорости передачи данных. Эти микросхемы как-то рулят синхронизацией битов? Даташиты уж больно скудные...

 

Следующий вопрос - состоится ли связь, если просто подключить TxD и RxD от USART микроконтроллера?

Или же надо ручками писать протокол?

Спасибо.

74HC942_1_.pdf

TCM3105.pdf

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


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

C 300 бодами справятся очень многие микроконтроллеры без дополнительной внешней ИС. Код - Манчестер 2

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


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

Из всего что есть, нарыл 3 микросхемы:

FX604

TCM3105

74HC942

 

Следующий вопрос - как они работают - они тупо выдают разные частоты в зависимости от нуля или единички? Ну и при демодуляции - тупо выдают ноль или единичку при соответствующих частотах?

В даташите какой-то намек на скорости передачи данных. Эти микросхемы как-то рулят синхронизацией битов? Даташиты уж больно скудные...

 

Следующий вопрос - состоится ли связь, если просто подключить TxD и RxD от USART микроконтроллера?

Или же надо ручками писать протокол?

А вы сумеете их купить ? Микросхемы очень старые, и, как я понял, столь же редкие. У моего поставщика не оказалось ни первой, ни второй, ни третьей. Не лучше ли будет купить просто пару телефонных модемов, тех же Zyxel или IDC, настроить их на выделенку и работать через них ?

Это FSK - модемы. У TI есть апп.ноуты, почитайте: slaa037 и slaa204.

Ну и последнее. Возможно, вас устроит обычный DTMF ?

 

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


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

на ебае есть все 3 микры,. всего будет сделано максимум 10 устройств.

Может есть что поновее?

DTMF не устроит, медленновато.

 

Софтовый - у нас один коллега делал софтовый, так и не получилось качественно синхронизировать биты. ТОчнее не биты, а переход от преамбулы к стартовому биту.

Впрочем, если кто подскажет алгоритм анализа преамбулы, буду рад. Гугление привело только к информации общего плана.

 

Это FSK - модемы. У TI есть апп.ноуты, почитайте: slaa037 и slaa204.

 

У ti - примитивщина, которая будет работать только "в ваккууме".

По этим аппноутам упомянутый коллега и делал, все было хорошо - по десятку импульсов на бит, программа считает чего больше нулей или единиц, либо артефактов, и выставляет соответствующий бит.

Но вот стартовый бит - программа определяет его отсчитыванием десятка импульсов соответствующих единице. И не дай бог какой-то импульс окажется аретфактным - пакет бьется.

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

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


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

посмотрел silabs - поизучаю.

Там еще и аппаратная корекция ошибок.

 

kovigor, а вы не работали с Silabs ?

Посмотрел я на структурные схемы - они для телефонной сети, предполагают использование "Line Side" микросхемы.

Нужно ли это будет для рации? или хватит конденсаторов и делителей, как в baycom модеме http://www.g-cb.narod.ru/sr/baycom1.gif ?

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


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

Софтовый - у нас один коллега делал софтовый, так и не получилось качественно синхронизировать биты. ТОчнее не биты, а переход от преамбулы к стартовому биту.

Потому что после преамбулы (битовой синхронизации) должно следовать синхрослово (байтовая синхронизация). Это эфир, а не провода...

 

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


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

Потому что после преамбулы (битовой синхронизации) должно следовать синхрослово (байтовая синхронизация). Это эфир, а не провода...

Я этот коллега.

Было и синхрослово.

В процессе поиска ошибок сделали так, что каждый схваченный байт, независимо от того совпадает ли CRC, поймано ли синхрослово, все равно слала байты на комп. ПРи этом в протоколе ни одного битого байта в посылке так и не поймалось, кроме периодически проскакивающих битых ПЕРВЫХ байт синхрослова. Битыми оказывались только первые байты. Вывод - где-то косяк в точке перехода преамбулы с синхрослово. Преамбула - это чердование единиц и нулей, вот программа поймала это чередование, дальше что? Кок объяснить программе какой из импульсов (а их в одном бите 6-7) является первым?

 

ЖАлею, что не наткнулся сразу на железный вариант

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

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


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

Я этот коллега.

Было и синхрослово.

В процессе поиска ошибок сделали так, что каждый схваченный байт, независимо от того совпадает ли CRC, поймано ли синхрослово, все равно слала байты на комп. ПРи этом в протоколе ни одного битого байта в посылке так и не поймалось, кроме периодически проскакивающих битых ПЕРВЫХ байт синхрослова. Битыми оказывались только первые байты. Вывод - где-то косяк в точке перехода преамбулы с синхрослово. Преамбула - это чердование единиц и нулей, вот программа поймала это чередование, дальше что? Кок объяснить программе какой из импульсов (а их в одном бите 6-7) является первым?

 

ЖАлею, что не наткнулся сразу на железный вариант

Посмотрите как сделано в других системах с радиоканалами, например, Nanonet, ZigBee. Насколько, я помню, после синхронизации с приамбулой ищется синхронизация с синхрословом. По сути корреляционный прием для синхрослова. Синхрослово последовательность бит на базе кода с хорошими корреляционными свойствами (например, для Nanotron 64 бита).

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


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

Преамбула - это чердование единиц и нулей, вот программа поймала это чередование, дальше что? Кок объяснить программе какой из импульсов (а их в одном бите 6-7) является первым?

Легко. Длина преамбулы должна быть побольше, чем тот отрезок, на котором вы ее ловите (у меня длина программируется в EEPROM). После ловли преамбулы заталкиваете все приходящее в регистр сдвига и на каждом сдвиге сравниваете содержимое регистра с эталоном. При совпадении байтовая синхронизация достигнута.

Посылка при этом должна быть непрерывной по несущей и неразрывной по битовому потоку, без всяких доп. старт-битов. Сразу за синхрословом - весь битовый информационный блок фиксированной (желательно) длины.

Код у меня был Манчестер-2.

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


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

После ловли преамбулы

Объясните это не как человеку, а как машине.

Что значит, после ловли преамбулы? Что нужно поймать - один из импульсов? все 10 импульсов преамбулы?

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

Именно так и делаю. Чесслово, сам дошел.

Как уже было написано - в байтах ошибки возникают крайне редко. ПОТому как в одном бите по 6-7 импульсов, кроме того анализ идет и по фронту и по спаду. А чтобы была ошибка нужно чтобы половина импульсов были корявыми.

 

Но для того, чтобы начать прием, место перехода преамбулы в синхрослово нужно поймать с точностью до импульса.

Как это сделать?

Если посылать преамбулу фиксированной длины, скажем 64 импульса, а на приемнике считать их - ведь пропадет один импульс, или лишний выскочит - будет ошибка. И чем длинее преамбула, тем вероятнее ошибка.

Делал все как вы писали, но этот момент так и остался камнем преткновения.

 

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


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

Объясните это не как человеку, а как машине.

Я не знаю вашего кодирования и ваших алгоритмов побитного приема.

У меня, повторяю, Манчестер 2, и программный модуль приема периодически (по прерыванию) выдает один из результатов: "принят 0" или "принята 1".

Далее то, что принято, вдвигается в 16-разрядный сдвиговый регистр. На время битовой синхронизации его содержимое сравнивается с 0x5555 при приходе каждого бита. После того, как результат достигнут (есть начало посылки), образец для сравнения заменяется на синхрослово, а также заводится таймаут на прием синхрослова (все в эфире может оборваться). Любой таймаут сбрасывает режим приема в ожидание битовой синхронизации.

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

Ну, а после приема блока данных (КС входит в эти 64 бита) снова переходим в ожидание битовой синхронизации, а пока ждем, исправляем ошибки и разбираем посылку.

 

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


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

V_G, то есть у вас подпрограмма, которая анализирует синхрослово, все время находится в режиме ожидания синхрослова, никаких преамбул, стартовых битов она не признает, правильно?

Тогда следующий вопрос - сколько импульсов у вас приходит на один бит? Или у вас один импульс - один бит?

Если импульсов несколько, то как определяется начало и конец бита?

 

Для примера - передаем по 5 импульсов на бит, формируем байт 0xAA:

 

11111 00000 11111 00000 11111 00000 11111 00000

 

Программа, ожидает первый бит синхрослова - единичку . Но тут в один из импульсов закралась ошибка - нолик, и получили следуующее:

 

01111 00000 11111 00000 11111 00000 11111 00000

 

Тогда программа будет разбивать на байты следующим образом:

 

0 ...11110 00001 11110 00001 11110 00001 11110 0000

 

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

Или я слишком идеализированно подхожу и на самом деле битовая синхронизация так и работает?

 

 

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


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

Когда-то делал "на коленке" устройство, задача которого была передать координаты с GPS и еще несколько байт данных. Посылки в районе 10 байт раз в минуту. Использовал DTMF, готовые микросхемы-декодеры.

1 тон- начало сообщения

2 тон- начало байта

3 тон- единица

4 тон- ноль

Дешево и сердито. Скорость конечно... Но для той задачи решение было вполне нормальным.

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


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

Тогда следующий вопрос - сколько импульсов у вас приходит на один бит? Или у вас один импульс - один бит?

Я уж думал, надоел с одним и тем же, а это одно и то же не читают, оказывается!

У меня нет никаких импульсов на бит, у меня код Манчестер-2! Почитайте в википедии где-нибудь, что это за кодировка. Если вы имеете в виду многократное повторение одного бита, то для Манчестера в этом нет смысла, это код, привязывающийся к перепадам.

Таким образом, у меня передается один бит на один тактовый интервал (состоящий из двух полуинтервалов), дальше гуглите!

 

ЗЫ. Насколько я понял Ваш принцип кодирования, он абсолютно непригоден для работы в эфире, межбитовые границы предельно размыты, система не защищена от пропадания импульсов, спектр модулирующего сигнала (скорее всего) имеет большую постоянную составляющую, что неприемлемо для ЧМ эфирной посылки, принципиально отрубающей постоянную составляющую.

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


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

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

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

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

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

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

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

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

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

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