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

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


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

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



Здраствуйте, я разбираюсь с одним кодом, задача такая: Получить код от приемника в формате кейлог, и по событию отправить его же (отправка кода происходит при полностью полученном коде), дальше хочу научиться записывать в ячейки полученные коды, для сравнения, но пока передача не проходит, смотрю осцилографом, а передаются только нули (вижу по однотипным импульсам в теле пакета) подскажите в чем дело?
CODE
#include <mega8.h>
//#include <my_lcd.c>
#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 TE 400
#define HIGH_TO -10
#define LOW_TO 10
#define SHORT_HEAD 20
#define LONG_HEAD 45
#define RFOut PORTC.7
#define RfIn PINB.0
#define Btn PINB.2
typedef unsigned char byte;
typedef signed int sbyte;
typedef signed long word;
#pragma warn- //директива для инициаизации еепрома
eeprom byte EprBuf0 [65];
eeprom byte EprBuf1 [65];
eeprom byte EprBuf2 [65];

eeprom byte eep_ring;
#pragma warn+ //директива для инициаизации еепрома




byte i;
bit RFFull;
bit RFBit;
int RFcount;
byte Bptr,BitCount,RFstate,Buf[9];



void Transmit(byte*b,byte u)
{
byte g=0,j=0,counts;
{
for(;u>0;u--)
counts = b[9];
for (i = 0; i < 12; i ++) //преамбула
{
RFOut = 1;
delay_us(TE);
RFOut = 0;
delay_us(TE);
}
delay_ms(4); // хедер
for (i=0;i<8;i++) // цыкл вывода байтов
{
g = b[i]; // считаем буфер
for (j=0;j<8;j++) // цикл вывода битов в байте
{
RFOut = 1; // вывод бита
delay_us(TE);
if (g&1)
RFOut = 0;
delay_us(TE);
RFOut = 0;
delay_us(TE);
g >>= 1;
}
}

delay_ms(10); // гуард тайм
} //end for u
} //end Transmi


/////////////// 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");
Transmit(Buf,1);
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;
PORTB=0x00;
DDRB=0x00;
PORTC=0x7F;
DDRC=0xFF;
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
Причина редактирования: [codebox], хотя нужно использовать приложения
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, 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
- - 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 Текстовая версия Сейчас: 22nd July 2025 - 04:58
Рейтинг@Mail.ru


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