Встала задачка передавать несколько байт между двумя асинхронными МК. По радио сигналки обычно передают манчестером. Вроде не плохо, можно по идее прием бита сделать в прерывании INT0, но вот что то туплю с расчетом периода. Передавать вначале каждого байта преамбулу из нулей, на которой посчитать период? Кто нибудь может поделиться реализацией приема/передачи на обычных дешевых радиомодулях с on-off keyed модуляцией?
Помехоустойчивые передача/прием по беспроводной линии
Сообщений 1 страница 7 из 7
Поделиться22014-01-22 13:22:17
делал разное: от инвертированного UART со стартовым байтом (маркером) + данные + стоповый байт (600 - 4800 бод)
до самопальных протоколов навроде как в ИК-пультах бытовой аппаратуры
на коротких расстояниях и "бытовых условиях по помехам" разницы не ощутил
передавал одну команду Y раз, надо принять подряд (или за фиксированный период времени) не менее Х раз.
сбоев не было
http://www.ugolok-mastera.ru/proekt/bil … lliard.htm
Поделиться32014-01-22 14:09:06
делал разное: от инвертированного UART со стартовым байтом (маркером) + данные + стоповый байт (600 - 4800 бод)
до самопальных протоколов навроде как в ИК-пультах бытовой аппаратуры
на коротких расстояниях и "бытовых условиях по помехам" разницы не ощутилпередавал одну команду Y раз, надо принять подряд (или за фиксированный период времени) не менее Х раз.
сбоев не былоhttp://www.ugolok-mastera.ru/proekt/bil … lliard.htm
У меня приемник на Tiny13а с внутренним генератором, стоит в холодной коробке на улице (кварцы в -45 не заводятся), боюсь обычный UART свалится даже не от помех, а от рассинхрона. Контроллер не поменять, он впаян, переделывать все целиком очень не хочется, тем более устройств где то с десяток.
Поделиться42014-01-22 15:59:59
вы неверно нам задачу поставили )
тогда советую делать самопальное, с самосинхронизацией приёма со стороны приёмника
я так делал, морозил до -22С (в холод.камере) - всё работает
например, стартовый импульс 10 ms сигнал + пауза 5ms, бит1 = 20ms+ пауза 10ms, бит0 = 10ms + пауза 20ms(условно!)
Поделиться52014-01-22 17:01:36
вы неверно нам задачу поставили )
тогда советую делать самопальное, с самосинхронизацией приёма со стороны приёмника
я так делал, морозил до -22С (в холод.камере) - всё работаетнапример, стартовый импульс 10 ms сигнал + пауза 5ms, бит1 = 20ms+ пауза 10ms, бит0 = 10ms + пауза 20ms(условно!)
Я когда то давно писал для ПК "Вектор" загрузчик с магнитофона. Там я определял период сигнала в преамбуле перед каждым блоком передавая серию нулей в манчестере. Они там выглядят как меандр. Высчитав константу задержки, по прерыванию ждал 2/3 периода и проверял что в порту, если единица, значит ноль, а если ноль, то единица. Дальше сдвиг и подсчет числа бит
Работало на разных магнитофонах с довольно приличной скоростью. Наверное его и буду делать, хотя Ваш алгоритм тоже интересный, можно по идее на старте длительность вычислять!
Поделиться62014-01-22 17:21:48
Высчитав константу задержки, по прерыванию
В векторе вроде нет контроллера прерываний и они там следуют с частотой 50 Гц, если не ошибаюсь. Как удалось их задействовать?
Поделиться72014-01-22 21:49:37
В векторе вроде нет контроллера прерываний и они там следуют с частотой 50 Гц, если не ошибаюсь. Как удалось их задействовать?
Много лет прошло, мож это я под клон РАДИО86 РК писал, но прерывание там было, точно, нашел куски асмовского кода, там явно на прерывании аппаратном сидит. Печальнее, что там я в тиках системного таймера считал....