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

 
 
> Прием данных на Атмеге, Как правильно это организовать
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
Ответов
Vny4ek
сообщение May 4 2009, 04:57
Сообщение #2


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

Группа: Участник
Сообщений: 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
Причина редактирования: Уменьшение видимого размера цитаты исходника.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 4 2009, 09:05
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Vny4ek @ May 4 2009, 07:57) *
Вот привожу пример кода, для приема. Насколько мне известно тут длительность задана а не измеряется.

Осталось вот это:
Цитата(rezident)
Вы предоставляете свой исходник с комментариями "непоняток".


А вообще-то Вам описали алгоритм, и Вы ответили:
"я потихоньку начинаю понимать, давайте я начну делать а если Вам не сложно вы поправите и скажете где ошибся"
Что же Вы действительно САМИ начали делать, кроме выкладывания чужих исходников?


--------------------
Уходя, оставьте свет...
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
- - 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


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

 


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


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