|
Прием данных на Атмеге, Как правильно это организовать |
|
|
|
Nov 19 2008, 09:26
|
Частый гость
 
Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001

|
Здрастье, есть у меня такая проблема. Атмега, и приемник на 433Мгц ну от сигналки. Вот на ножку чипа приходит сигнал с приемника. Подскажите как выглядеть будет программа что бы просто записать принятые данные в виде единиц и нулей. Пакет приходит так: " Вся передача опирается на элемнтарный отрезок времени названный Те и равный обычно 400мкс. (документацией нормирован разброс от 280мкс до 620мкс). Итак передаваемый пакет: Он состоит из преамбулы (длиться 23Те, и нужна для того, чтоб оторвать приемник сиги от сладостного прослушивания помех), за ней следует заголовок пакета (header) – равен 10Те, и нужен для того чтоб проц в сиге смог определить длительность Те у принимаемого пакета данных… Затем идут собственно данные (66 бит или 198Те), и наконец Guard Time – время для того чтобы сига переварила принятое (39Те). Теперь о передаче данных.. бит передается за время равное 3Те.. В течении 1-го Те передается обязательно высокий уровень (красная часть), 2-е Те это собственно значение передаваемого бита (только инвертированное, те лог1 = низкий уровень, а лог0 соответственно = высокий уровень) – синяя часть.. И наконец в течении 3-го Те передается обязательный низкий уровень (зеленая часть).. " ВОТ! хочется попроще и оптимальный прием пакета
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
May 4 2009, 04:57
|
Частый гость
 
Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001

|
Вот привожу пример кода, для приема. Насколько мне известно тут длительность задана а не измеряется. CODE #include <mega8.h> #include <stdio.h> #include <delay.h> #include <String.h>
#define TRFreset 0 #define TRFSYNC 1 #define TRFUNO 2 #define TRFZERO 3
#define NBIT 65
#define HIGH_TO -10 #define LOW_TO 10 #define SHORT_HEAD 20 #define LONG_HEAD 45
#define RfIn PIND.4
typedef unsigned char byte;
bit RFFull; bit RFBit; int RFcount; byte Bptr,BitCount,RFstate,Buf[9]; /////////////// receive ///////////////////////////////// interrupt [TIM0_OVF] void timer0_ovf_isr(void) { TCNT0=135; RFBit=RfIn;
if (RFFull) return; ///////////////////////////////////////////////////////// switch(RFstate) { case TRFUNO: if ( RFBit == 0) { RFstate= TRFZERO; } else { RFcount--; if (RFcount < HIGH_TO) RFstate = TRFreset; } break; ////////////////////////////////////////////////////////// case TRFZERO: if (RFBit) { RFstate= TRFUNO; Buf[Bptr] >>= 1; if ( RFcount >= 0) { Buf[Bptr]+=0x80; } RFcount = 0; if ((++BitCount & 7) == 0) Bptr++; if (BitCount == NBIT) { printf("Reseive signal:"); printf("%02X%02X%02X%02X%02X%02X%02X%02X", Buf[0],Buf[1],Buf[2],Buf[3],Buf[4],Buf[5],Buf[6],Buf[7]); printf("\n\r"); RFstate = TRFreset; RFFull = 1; } } else { RFcount++; if ( RFcount >= LOW_TO) { RFstate = TRFSYNC; Bptr = 0; BitCount = 0; } } break; /////////////////////////////////////////////////////////// case TRFSYNC: if ( RFBit) { if ((RFcount < SHORT_HEAD)||(RFcount >= LONG_HEAD)) { RFstate = TRFreset;break; } else { RFcount =0;RFstate= TRFUNO; } } else { RFcount++; } break; ///////////////////////////////////////////////////////////// case TRFreset: default: RFstate = TRFSYNC; RFcount = 0; Bptr = 0; BitCount = 0; break; } // switch ////////////////////////////////////////////////////////////// if(RFFull) { RFstate = TRFreset; RFFull=0; } ///////////////////////////////////////////////////////////// } // receive ////////////////// main //////////////////////////////////// void main(void) { PORTD=0x10; DDRD=0x00;
TCCR0=0x02; TCNT0=0x00;
TIMSK=0x01;
UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33;
//////////////////////////////////////////////////////////// printf(" WAIT SIGNAL!\n\r"); printf("\n\r"); //////////////////////////////////////////////////////////// #asm("sei") }// main
Причина редактирования: Уменьшение видимого размера цитаты исходника.
|
|
|
|
|
May 4 2009, 09:05
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Vny4ek @ May 4 2009, 07:57)  Вот привожу пример кода, для приема. Насколько мне известно тут длительность задана а не измеряется. Осталось вот это: Цитата(rezident) Вы предоставляете свой исходник с комментариями "непоняток". А вообще-то Вам описали алгоритм, и Вы ответили: "я потихоньку начинаю понимать, давайте я начну делать а если Вам не сложно вы поправите и скажете где ошибся" Что же Вы действительно САМИ начали делать, кроме выкладывания чужих исходников?
--------------------
Уходя, оставьте свет...
|
|
|
|
Сообщений в этой теме
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 vvvvv Идея такая. Настраиваешь вход с радиоканала на пре... Nov 19 2008, 11:03 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, 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|