реклама на сайте
подробности

 
 
> Прием данных на Атмеге, Как правильно это организовать
Vny4ek
сообщение Nov 19 2008, 09:26
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Здрастье, есть у меня такая проблема.
Атмега, и приемник на 433Мгц ну от сигналки. Вот на ножку чипа приходит сигнал с приемника. Подскажите как выглядеть будет программа что бы просто записать принятые данные в виде единиц и нулей. Пакет приходит так:
"
Вся передача опирается на элемнтарный отрезок времени названный Те и равный обычно 400мкс. (документацией нормирован разброс от 280мкс до 620мкс).

Итак передаваемый пакет:
Он состоит из преамбулы (длиться 23Те, и нужна для того, чтоб оторвать приемник сиги от сладостного прослушивания помех), за ней следует заголовок пакета (header) – равен 10Те, и нужен для того чтоб проц в сиге смог определить длительность Те у принимаемого пакета данных… Затем идут собственно данные (66 бит или 198Те), и наконец Guard Time – время для того чтобы сига переварила принятое (39Те).


Теперь о передаче данных.. бит передается за время равное 3Те.. В течении 1-го Те передается обязательно высокий уровень (красная часть), 2-е Те это собственно значение передаваемого бита (только инвертированное, те лог1 = низкий уровень, а лог0 соответственно = высокий уровень) – синяя часть.. И наконец в течении 3-го Те передается обязательный низкий уровень (зеленая часть)..

"

ВОТ! хочется попроще и оптимальный прием пакета
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vvvvv
сообщение Nov 19 2008, 11:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 342
Регистрация: 21-06-04
Пользователь №: 85



Идея такая. Настраиваешь вход с радиоканала на прерывание по перепаду, неважно с нуля в единицу или наоборот.
Настраиваешь таймер, лучше 16 битный, чтобы он постоянно по циклу считал.
При изменении уровня на линии проц попадает в прерывание PCINT.
Первым делом считываешь показание таймера, а сам таймер обнуляешь.
Конечно в первом перепаде показания таймера от балды.
Но вот во втором, ты уже попадешь в PCINT и таймер покажет длину импульса.
Все есть длина импульса, осталось проверить наш это импульс или нет, т.е. ширина импульса скажем больше 0.5Te и меньше 1.5Te.
Ведь преамбула с определенной частотойю, ширина импульса Te, верно?
Далее если скажем есть 10 попаданий в размеры преамбулы, проц принимает решение, что идет преамбула.
Все устанавливаем флаг, я в преамбуле.
Далее, если слишком большая пауза, проц определяет срыв преамбулы, сбрасывается флаг преамбулы, проц опять в ожидании пакета.
Если с преамбулой все ОК, проц ждет заголовок пакета.
Как я понял заголовок пакета это пауза 10 Te.
Т.е. при очередном PCINT в таймере лежит значение 10 Te. Проверяем что это значение в пределах 9Te и 11Te.
Если да, значит пришел заголовок.
Проц сбрасывает флаг преамбулы и устанавливает флаг приема данных.
Теперь попадая в прерывание PCINT проц будет по этому флагу знать, что
может быть длина импульса Te, а может быть 2Te, ведь это режим приема данных.
Ну и все, теперь осталось проверять какая длительность после перепада из 0 в 1. Если =2Te значит пришел бит "0", если = Te пришел бит "1".
Конечно после "0" будет перепад из 1 в 0 = Te, а после "1" перепад из 1 в 0 = 2Te, их проверяем и пропускаем, ждем перепада из 0 в 1.
Если же очередная длительность больше 3Te, или меньше 0.5Te значит это помеха или срыв пакета, проц уходит опять на начало, в ожидание новой преамбулы нового пакета.
Единственное замечание, без цифрового осциллографа это будет очень трудно сделать.
Исходников не жалко, но там совсем другой протокол, скорее запутает.
Начинай писать прямо свое по вышеописанному алгоритму. Сработает точно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vny4ek   Прием данных на Атмеге   Nov 19 2008, 09:26
- - Dog Pawlowa   Цитата(Vny4ek @ Nov 19 2008, 13:26) Здрас...   Nov 19 2008, 09:56
- - Vny4ek   нет проблема не в этом. Хочется просто не догоню к...   Nov 19 2008, 09:58
|- - Dog Pawlowa   Цитата(Vny4ek @ Nov 19 2008, 13:58) а для...   Nov 19 2008, 10:08
- - Vny4ek   ок, если можно по подробней с чего начать, програм...   Nov 19 2008, 11:02
- - Vny4ek   СПАСИБО большое! То что надо, я потихоньку нач...   Nov 19 2008, 11:11
- - Vny4ek   будьте добры ткните носом в апноут, желательно что...   Nov 25 2008, 14:14
- - Vny4ek   Уважаемые, подскажите, обязательно ли в данном при...   Apr 28 2009, 13:55
- - SasaVitebsk   А что тут непонятного? Инициализация таймера напри...   Apr 29 2009, 08:51
- - xemul   Майкрочип описАл процесс приема Keeloq не в одном ...   Apr 29 2009, 09:25
- - Vny4ek   to:SasaVitebsk спасибо большое, я потихоньку начин...   Apr 29 2009, 12:39
|- - xemul   Цитата(Vny4ek @ Apr 29 2009, 16:39) to:xe...   Apr 29 2009, 14:59
- - Vny4ek   Я уже не первый день не могу никак освоить эти тай...   May 2 2009, 10:41
- - Vny4ek   Ребят, ну подскажите пожалуйста.   May 3 2009, 08:08
- - rezident   Таймер не нужно запускать по перепаду. Таймер долж...   May 3 2009, 11:27
- - Vny4ek   А можно пример привести, для кодвижена, принцип я ...   May 3 2009, 11:43
- - rezident   Предлагаю сделать наоборот. Вы предоставляете свой...   May 3 2009, 11:54
- - Vny4ek   ок, я полностью с вами согласен. у меня есть приме...   May 3 2009, 16:42
- - rezident   Не нужно обрывков. Приводите ваш пример программы ...   May 3 2009, 21:38
- - Vny4ek   Вот привожу пример кода, для приема. Насколько мне...   May 4 2009, 04:57
|- - Dog Pawlowa   Цитата(Vny4ek @ May 4 2009, 07:57) Вот пр...   May 4 2009, 09:05
- - Vny4ek   не понятно мне следующее: как отследить изменение ...   May 4 2009, 10:02
|- - Dog Pawlowa   Цитата(Vny4ek @ May 4 2009, 13:02) не пон...   May 4 2009, 10:13
- - Vny4ek   Здраствуйте, я разбираюсь с одним кодом, задача та...   Jun 7 2009, 14:09
- - XVR   1. В main нет зацикливания в конце 2. printf в обр...   Jun 8 2009, 09:03
- - Vny4ek   да я взял уже работающий пример, прием работает ко...   Jun 8 2009, 09:14
- - Vny4ek   Здравствуйте, подскажите плиз. Вообщем я пытаюсь п...   Jun 28 2009, 15:34
- - Vny4ek   Ребят, ну подскажите плиз, я понимаю что не лучшее...   Jun 29 2009, 17:41
- - SasaVitebsk   Блин. Во что лень делает.... Первый пост ноябрь 2...   Jun 29 2009, 18:17
- - Goodefine   Простите что вмешиваюсь, но возникла похожая пробл...   Jun 30 2009, 05:49
- - Vny4ek   Goodefine, узнаю в лицо точно! Я с ним ковырял...   Jul 1 2009, 07:42
- - Vny4ek   Ребят вот я начал потихоньку тут понимать что прои...   Jul 27 2009, 05:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 06:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01898 секунд с 7
ELECTRONIX ©2004-2016