Приемопередатчик Mrf49Xa

28-05-2013, 11:36 От: admin Посмотрели: 1157
Помогите с кодом для приемопередатчика MRF49XA.

Например для передачи простого байта.



Кода для передатчика:


#include <mega8535.h>
#include <delay.h>


/******************************************************
***** MRF49XA COMAMAND BYTE TO REGISTERS *****
*****************************************************/
#define COMMAND_BYTE_STSREG 0x00
#define COMMAND_BYTE_GENCREG 0x80
#define COMMAND_BYTE_AFCCREG 0xC4
#define COMMAND_BYTE_TXCREG 0x98
#define COMMAND_BYTE_TXBREG 0xB8
#define COMMAND_BYTE_CFSREG 0xA0
#define COMMAND_BYTE_RXCREG 0x94
#define COMMAND_BYTE_BBFCREG 0xC2
#define COMMAND_BYTE_RXFIFOREG 0xB2
#define COMMAND_BYTE_FIFORSTREG 0xCA
#define COMMAND_BYTE_SYNBREG 0xCE
#define COMMAND_BYTE_DRSREG 0xC6
#define COMMAND_BYTE_PMCREG 0x82
#define COMMAND_BYTE_WTSREG 0xE0
#define COMMAND_BYTE_DCSREG 0xC8
#define COMMAND_BYTE_BCSREG 0xC0
#define COMMAND_BYTE_PLLCREG 0xCC

/*****************************************************
***** MRF49XA DATA SETTING TO REGISTERS *****
****************************************************/

#define GENCREG_OPS1 0x18 //433MHz 12.5pF
#define AFCCREG_OPS1 0xD7
#define TXCREG_OPS1 0x30
#define TXBREG_OPS1 0x00
#define CFSREG_OPS1 0xC8 // 430.5MHz Fval = 200
#define RXCREG_OPS1 0xA1
#define BBFCREG_OPS1 0x2C
#define RXFIFOREG_OPS1
#define FIFORSTREG_OPS1 0x81
#define SYNBREG_OPS1
#define DRSREG_OPS1 0x23
#define PMCREG_OPS1 0x00
#define WTSREG_OPS1
#define DCSREG_OPS1
#define BCSREG_OPS1
#define PLLCREG_OPS1

/******************************************
***** SPI DIRECTION REGISTER *****
******************************************/
#define SPI_PORT_SS 0
#define SPI_PORT_MOSI 5
#define SPI_PORT_MISO 6
#define SPI_PORT_SCK 7


/******************************************
***** SPI CHIP SELECT CONTROL *****
******************************************/
#define SPI_ACTIVE_SS(PORT,BIT) PORT &= ~(1<<BIT)
#define SPI_UNACTIVE_SS(PORT,BIT) PORT |= (1<<BIT)


/**********************************************
***** SPI 16-BIT DATA RECEIVE ACCESS *****
**********************************************/

void SPI_write ( unsigned char command_byte, unsigned char data )
{
SPI_ACTIVE_SS(PORTB,SPI_PORT_SS);

SPDR = command_byte;

while (!(SPSR & (1<<SPIF)));

SPDR = data;

while (!(SPSR & (1<<SPIF)));

SPI_UNACTIVE_SS(PORTB,SPI_PORT_SS);
}


unsigned char SPI_read(unsigned char command_byte)
{
SPI_ACTIVE_SS(PORTB,SPI_PORT_SS);

SPDR = 0x00;

while(!(SPSR & (1<<SPIF)));

SPI_UNACTIVE_SS(PORTB,SPI_PORT_SS);

return SPDR;
}

void mrf49xa_initialization (void)
{
delay_ms(10);
SPI_write(COMMAND_BYTE_FIFORSTREG,FIFORSTREG_OPS1);
SPI_write(COMMAND_BYTE_FIFORSTREG,FIFORSTREG_OPS1|0x02);
SPI_write(COMMAND_BYTE_GENCREG, GENCREG_OPS1);
SPI_write(COMMAND_BYTE_AFCCREG, AFCCREG_OPS1);
SPI_write(COMMAND_BYTE_CFSREG,CFSREG_OPS1);
SPI_write(COMMAND_BYTE_DRSREG,DRSREG_OPS1);
SPI_write(COMMAND_BYTE_PMCREG,PMCREG_OPS1);
SPI_write(COMMAND_BYTE_RXCREG,RXCREG_OPS1);
SPI_write(COMMAND_BYTE_TXCREG, TXCREG_OPS1);
SPI_write(COMMAND_BYTE_PMCREG,PMCREG_OPS1 | 0x20);
delay_ms(5);
SPI_write(COMMAND_BYTE_PMCREG,PMCREG_OPS1 | 0x80);
SPI_write(COMMAND_BYTE_GENCREG, GENCREG_OPS1 | 0x40);
SPI_write(COMMAND_BYTE_FIFORSTREG,FIFORSTREG_OPS1);
SPI_write(COMMAND_BYTE_FIFORSTREG,FIFORSTREG_OPS1|0x02);




}

void mrf49_send_byte(unsigned char data)
{
SPI_write(COMMAND_BYTE_PMCREG,PMCREG_OPS1);
SPI_write(COMMAND_BYTE_GENCREG, GENCREG_OPS1|0x80);
SPI_write(COMMAND_BYTE_PMCREG,PMCREG_OPS1|0x20);
SPI_write(COMMAND_BYTE_TXBREG,0xAA);
SPI_write(COMMAND_BYTE_TXBREG,data);
SPI_write(COMMAND_BYTE_PMCREG,PMCREG_OPS1|0x80);
SPI_write(COMMAND_BYTE_GENCREG, GENCREG_OPS1|0x40);
SPI_write(COMMAND_BYTE_FIFORSTREG,FIFORSTREG_OPS1|0x02);
}
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
DDRB = (1<<SPI_PORT_SCK)|(1<<SPI_PORT_MOSI)|(1<<SPI_PORT_SS);
SPI_UNACTIVE_SS(PORTB, SPI_PORT_SS);
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x01;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 4000,000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;
mrf49xa_initialization();

while (1)
{
//if (PINA&0x01)
delay_ms(1000);
mrf49_send_byte(254);
// Place your code here

};
}



А вот код для приемника не могу понять как написать и даже сомневаюсь в правильности кода передатчика. Даташит прикрепил. помогите кто сталкивался и кто хорошо умеет читать на английском.
Раздел: Периферия и внешние устройства

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Приемопередатчик Mrf49Xa все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930