Вс ноя 28, 2010 01:45:02
Вс ноя 28, 2010 07:38:43
Вс ноя 28, 2010 16:36:09
Вс май 08, 2011 04:49:34
#include <avr/io.h>
#include <avr/delay.h>
void LED_OUT(unsigned char val)
{
DDRD=0xff;
PORTD = val;
}
void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80; // Старший бит в адресе дб равен 1!!!
DDRC |= _BV(1);
DDRC |= _BV(2);
DDRC |= _BV(3);
//nSEL=0;
PORTC &=~ _BV(3);
_delay_us(10);
for (i=0; i<8; i++)
{
//nSDI=(Addr>>(7-i))&0x01;
PORTC = ((Addr>>(7-i))&0x01<<PINC1);
_delay_us(10);
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
//nSCK=0;
PORTC &=~ _BV(2);
_delay_us(20);
}
for (i=0; i<8; i++)
{
//nSDI=(data>>(7-i))&0x01;
PORTC = ((data>>(7-i))&0x01<<PINC1);
_delay_us(10);
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
//nSCK=0;
PORTC &=~ _BV(2);
_delay_us(20);
}
//nSEL=1; // выборка чипа
PORTC |= _BV(3);
_delay_us(20);
}
unsigned char SPI_READ(unsigned char Addr)
{
unsigned char i=0;
unsigned char data=0;
Addr=Addr&0x7F; // Старший бит в адресе дб равен нулю!!!
DDRC |= _BV(1);
DDRC |= _BV(2);
DDRC |= _BV(3);
//nSEL=0;
PORTC &=~ _BV(3);
_delay_us(10);
for (i=0; i<8; i++)
{
//nSDI=(Addr>>(7-i))&0x01;
PORTC = ((Addr>>(7-i))&0x01<<PINC1);
_delay_us(10);
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
//nSCK=0;
PORTC &=~ _BV(2);
//delay_us(200);
_delay_us(20);
//if (i==8) LED_OUT(255);
}
for (i=0; i<8; i++)
{
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
data=data<<1;
//data|=(nSDO);
DDRC &=~ _BV(0);
PORTC &=~ _BV(0);
data|=(PINC & (1 << PINC0));
//nSCK=0;
PORTC &=~ _BV(2);
_delay_us(20);
}
//nSEL=1; // выборка чипа
PORTC |= _BV(3);
_delay_us(20);
return data;
}
void SPI_RFM_INIT (void)
{
SPI_WRITE(0x06, 0x00); // interrupt all disable
SPI_WRITE(0x07, 01); // to ready mode
SPI_WRITE(0x09, 0x7f); // cap = 12.5pf
SPI_WRITE(0x0a, 0x05); //clk output is 2MHz
SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output
SPI_WRITE(0x0e, 0x00); //GPIO port use default value
SPI_WRITE(0x0f, 0x70); // NO ADC used
SPI_WRITE(0x10, 0x00); //no adc used
SPI_WRITE(0x12, 0x00); // no temperature sensor used
SPI_WRITE(0x13, 0x00); // no temperature sensor used
SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps
SPI_WRITE(0x1c, 0x04); // IF filter bandwidth
SPI_WRITE(0x1d, 0x40); // AFC LOOP
SPI_WRITE(0x1e, 0x08); //AFC timing
SPI_WRITE(0x20, 0x41); //clock recovery
SPI_WRITE(0x21, 0x60); //clock recovery
SPI_WRITE(0x22, 0x27); //clock recovery
SPI_WRITE(0x23, 0x52); //clock recovery
SPI_WRITE(0x24, 0x00); //clock recovery timing
SPI_WRITE(0x25, 0x06); //clock recovery timing
SPI_WRITE(0x6e, 0x27); // Tx data rate 1
SPI_WRITE(0x6f, 0x52); // Tx data rate 0
SPI_WRITE(0x30, 0x8c); // data access control
SPI_WRITE(0x32, 0xff); // header control
SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2,
SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble
SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble
SPI_WRITE(0x36, 0x2d); // synchronize word
SPI_WRITE(0x37, 0xd4);
SPI_WRITE(0x38, 0x00);
SPI_WRITE(0x39, 0x00);
SPI_WRITE(0x3a, 's'); // set tx header
SPI_WRITE(0x3b, 'o');
SPI_WRITE(0x3c, 'n');
SPI_WRITE(0x3d, 'g');
SPI_WRITE(0x3e, 1); // total tx 17 byte
SPI_WRITE(0x3f, 's'); // set rx header
SPI_WRITE(0x40, 'o');
SPI_WRITE(0x41, 'n');
SPI_WRITE(0x42, 'g');
SPI_WRITE(0x43, 0xff); // all the bit to be checked
SPI_WRITE(0x44, 0xff); // all the bit to be checked
SPI_WRITE(0x45, 0xff); // all the bit to be checked
SPI_WRITE(0x46, 0xff); // all the bit to be checked
SPI_WRITE(0x6d, 0x03); // tx power to Max
SPI_WRITE(0x79, 0x0); // no frequency hopping
SPI_WRITE(0x7a, 0x0); // no frequency hopping
SPI_WRITE(0x71, 0x22); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio
SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625
SPI_WRITE(0x73, 0x0); // no frequency offset
SPI_WRITE(0x74, 0x0); // no frequency offset
SPI_WRITE(0x75, 0x53); // frequency set to 434MHz
SPI_WRITE(0x76, 0x64); // frequency set to 434MHz
SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
SPI_WRITE(0x0C,0b00010111); // GPIO Configuration 0.
SPI_WRITE(0x0B,0b00011000); // GPIO Configuration 1.
SPI_WRITE(0x08, 0x03); // fifo reset
SPI_WRITE(0x08, 0x00);
}
void SPI_RFM_INTREAD (void)
{
char temp;
temp = SPI_READ(0x03); //read the Interrupt Status1 register
temp = SPI_READ(0x04);
SPI_WRITE(0x05, 0x04); // interrupt is anable
}
void main(void){
unsigned char i,j=0;
unsigned char a=0;
_delay_ms(500);
SPI_RFM_INIT();
SPI_RFM_INTREAD();
while(1) {
LED_OUT(a);
SPI_WRITE(0x7F, a++);
SPI_WRITE(0x07, 9);
_delay_ms(100);
}
}
#include <avr/io.h>
#include <avr/delay.h>
void LED_OUT(unsigned char val)
{
DDRD=0xff;
PORTD = val;
}
void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80; // Старший бит в адресе дб равен 1!!!
DDRC |= _BV(1);
DDRC |= _BV(2);
DDRC |= _BV(3);
//nSEL=0;
PORTC &=~ _BV(3);
_delay_us(10);
for (i=0; i<8; i++)
{
//nSDI=(Addr>>(7-i))&0x01;
PORTC = ((Addr>>(7-i))&0x01<<PINC1);
_delay_us(10);
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
//nSCK=0;
PORTC &=~ _BV(2);
_delay_us(20);
}
for (i=0; i<8; i++)
{
//nSDI=(data>>(7-i))&0x01;
PORTC = ((data>>(7-i))&0x01<<PINC1);
_delay_us(10);
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
//nSCK=0;
PORTC &=~ _BV(2);
_delay_us(20);
}
//nSEL=1; // выборка чипа
PORTC |= _BV(3);
_delay_us(20);
}
unsigned char SPI_READ(unsigned char Addr)
{
unsigned char i=0;
unsigned char data=0;
Addr=Addr&0x7F; // Старший бит в адресе дб равен нулю!!!
DDRC |= _BV(1);
DDRC |= _BV(2);
DDRC |= _BV(3);
DDRC &=~ _BV(0);
PORTC &=~ _BV(0);
//nSEL=0;
PORTC &=~ _BV(3);
_delay_us(10);
for (i=0; i<8; i++)
{
//nSDI=(Addr>>(7-i))&0x01;
PORTC = ((Addr>>(7-i))&0x01<<PINC1);
_delay_us(10);
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
//nSCK=0;
PORTC &=~ _BV(2);
//delay_us(200);
_delay_us(20);
//if (i==8) LED_OUT(255);
}
for (i=0; i<8; i++)
{
//nSCK=1;
PORTC |= _BV(2);
_delay_us(30);
data=data<<1;
//data|=(nSDO);
data|=(PINC & (1 << PINC0));
//nSCK=0;
PORTC &=~ _BV(2);
_delay_us(20);
}
//nSEL=1; // выборка чипа
PORTC |= _BV(3);
_delay_us(20);
return data;
}
void SPI_RFM_INIT (void)
{
SPI_WRITE(0x06, 0x00); // interrupt all disable
SPI_WRITE(0x07, 01); // to ready mode
SPI_WRITE(0x09, 0x7f); // cap = 12.5pf
SPI_WRITE(0x0a, 0x05); //clk output is 2MHz
SPI_WRITE(0x0C,0b00010111); // GPIO Configuration 0.
SPI_WRITE(0x0B,0b00011000); // GPIO Configuration 1.
SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output
SPI_WRITE(0x0e, 0x00); //GPIO port use default value
SPI_WRITE(0x0f, 0x70); // NO ADC used
SPI_WRITE(0x10, 0x00); //no adc used
SPI_WRITE(0x12, 0x00); // no temperature sensor used
SPI_WRITE(0x13, 0x00); // no temperature sensor used
SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps
SPI_WRITE(0x1c, 0x04); // IF filter bandwidth
SPI_WRITE(0x1d, 0x40); // AFC LOOP
SPI_WRITE(0x1e, 0x08); //AFC timing
SPI_WRITE(0x20, 0x41); //clock recovery
SPI_WRITE(0x21, 0x60); //clock recovery
SPI_WRITE(0x22, 0x27); //clock recovery
SPI_WRITE(0x23, 0x52); //clock recovery
SPI_WRITE(0x24, 0x00); //clock recovery timing
SPI_WRITE(0x25, 0x06); //clock recovery timing
SPI_WRITE(0x6e, 0x27); // Tx data rate 1
SPI_WRITE(0x6f, 0x52); // Tx data rate 0
SPI_WRITE(0x30, 0x8c); // data access control
SPI_WRITE(0x32, 0xff); // header control
SPI_WRITE(0x33, 0x42);// // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2,
SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble
SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble
SPI_WRITE(0x36, 0x2d); // synchronize word
SPI_WRITE(0x37, 0xd4);
SPI_WRITE(0x38, 0x00);
SPI_WRITE(0x39, 0x00);
SPI_WRITE(0x3a, 's');
SPI_WRITE(0x3b, 'o');
SPI_WRITE(0x3c, 'n');
SPI_WRITE(0x3d, 'g');
SPI_WRITE(0x3e, 1); // total tx 1 byte
SPI_WRITE(0x3f, 's');
SPI_WRITE(0x40, 'o');
SPI_WRITE(0x41, 'n');
SPI_WRITE(0x42, 'g');
SPI_WRITE(0x43, 0xff); // all the bit to be checked
SPI_WRITE(0x44, 0xff); // all the bit to be checked
SPI_WRITE(0x45, 0xff); // all the bit to be checked
SPI_WRITE(0x46, 0xff); // all the bit to be checked
SPI_WRITE(0x6d, 0x03); // tx power to max
SPI_WRITE(0x79, 0x0); // no frequency hopping
SPI_WRITE(0x7a, 0x0); // no frequency hopping
SPI_WRITE(0x71, 0x22); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio
SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625
SPI_WRITE(0x73, 0x0); // no frequency offset
SPI_WRITE(0x74, 0x0); // no frequency offset
SPI_WRITE(0x75, 0x53); // frequency set to 434MHz
SPI_WRITE(0x76, 0x64); // frequency set to 434MHz
SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
SPI_WRITE(0x08, 0x03); // fifo reset
SPI_WRITE(0x08, 0x00);
SPI_WRITE(0x05, 0x02); // interrupt on recieve packet
}
void SPI_RFM_INTREAD (void)
{
char temp;
SPI_WRITE(0x07, 01); //
temp=SPI_READ(0x03); //read the Interrupt Status1 register
temp=SPI_READ(0x04);
SPI_WRITE(0x07, 05);
}
void main(void){
unsigned char i,j=0;
unsigned char a=0;
_delay_ms(500);
SPI_RFM_INIT();
SPI_RFM_INTREAD();
while(1) {
LED_OUT(SPI_READ(0x7F));
SPI_RFM_INTREAD();
_delay_ms(100);
}
}
Чт июн 30, 2011 23:24:55
SPI_WRITE(0x0C,0b00010111); // GPIO Configuration 0.
SPI_WRITE(0x0B,0b00011000); // GPIO Configuration 1.
SPI_WRITE(0x08,0b00000000); // GPIO Ant1 -"0" GPIO Ant2 -"1"
SPI_WRITE(0x08,0b00100000); // GPIO Ant1 -"1" GPIO Ant2 -"0"
SPI_WRITE(0x6d, 0x03); // tx power to Max
Пт фев 10, 2012 11:54:44
Пт фев 10, 2012 21:41:59
Пт фев 10, 2012 23:16:03
Сб фев 11, 2012 10:36:13
Сб фев 11, 2012 10:39:12
murashh писал(а):Берите четко тот пример, что в оффдокументации и от туда уже пляшите.
Пн фев 13, 2012 14:08:15
Пн фев 13, 2012 16:05:34
Пн фев 20, 2012 13:59:54
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#define nIRQ PINC.3 //PINB.3
#define nSEL PORTC.2 //PORTB.2
#define nSCK PORTC.1 //PORTB.1
#define nSDI PORTC.0 //PORTB.0
#define nSDO PINB.2 //PIND.6
void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80; // Старший бит в адресе дб равен 1!!!
nSEL=0;
delay_us(10);
for (i=0; i<8; i++)
{
nSDI=(Addr>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
for (i=0; i<8; i++)
{
nSDI=(data>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
nSEL=1; // выборка чипа
delay_us(20);
}
unsigned char SPI_READ(unsigned char Addr)
{
unsigned char i=0;
unsigned char data=0;
Addr=Addr&0x7F; // Старший бит в адресе дб равен нулю!!!
nSEL=0;
delay_us(10);
for (i=0; i<8; i++)
{
nSDI=(Addr>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
//delay_us(200);
delay_us(20);
//if (i==8) LED_OUT(255);
}
for (i=0; i<8; i++)
{
nSCK=1;
delay_us(30);
data=data<<1;
data|=(nSDO);
nSCK=0;
delay_us(20);
}
nSEL=1; // выборка чипа
delay_us(20);
return data;
}
void SPI_RFM_INIT (void)
{
SPI_WRITE(0x06, 0x00); // interrupt all disable
SPI_WRITE(0x07, 01); // to ready mode
SPI_WRITE(0x09, 0x7f); // cap = 12.5pf
SPI_WRITE(0x0a, 0x05); //clk output is 2MHz
SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output
SPI_WRITE(0x0e, 0x00); //GPIO port use default value
SPI_WRITE(0x0f, 0x70); // NO ADC used
SPI_WRITE(0x10, 0x00); //no adc used
SPI_WRITE(0x12, 0x00); // no temperature sensor used
SPI_WRITE(0x13, 0x00); // no temperature sensor used
SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps
SPI_WRITE(0x1c, 0x04); // IF filter bandwidth
SPI_WRITE(0x1d, 0x40); // AFC LOOP
SPI_WRITE(0x1e, 0x08); //AFC timing
SPI_WRITE(0x20, 0x41); //clock recovery
SPI_WRITE(0x21, 0x60); //clock recovery
SPI_WRITE(0x22, 0x27); //clock recovery
SPI_WRITE(0x23, 0x52); //clock recovery
SPI_WRITE(0x24, 0x00); //clock recovery timing
SPI_WRITE(0x25, 0x06); //clock recovery timing
SPI_WRITE(0x6e, 0x27); // Tx data rate 1
SPI_WRITE(0x6f, 0x52); // Tx data rate 0
SPI_WRITE(0x30, 0x8c); // data access control
SPI_WRITE(0x32, 0xff); // header control
SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2,
SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble
SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble
SPI_WRITE(0x36, 0x2d); // synchronize word
SPI_WRITE(0x37, 0xd4);
SPI_WRITE(0x38, 0x00);
SPI_WRITE(0x39, 0x00);
SPI_WRITE(0x3a, 's'); // set tx header
SPI_WRITE(0x3b, 'o');
SPI_WRITE(0x3c, 'n');
SPI_WRITE(0x3d, 'g');
SPI_WRITE(0x3e, 1); // total tx 17 byte
SPI_WRITE(0x3f, 's'); // set rx header
SPI_WRITE(0x40, 'o');
SPI_WRITE(0x41, 'n');
SPI_WRITE(0x42, 'g');
SPI_WRITE(0x43, 0xff); // all the bit to be checked
SPI_WRITE(0x44, 0xff); // all the bit to be checked
SPI_WRITE(0x45, 0xff); // all the bit to be checked
SPI_WRITE(0x46, 0xff); // all the bit to be checked
SPI_WRITE(0x6d, 0x03); // tx power to Max
SPI_WRITE(0x79, 0x0); // no frequency hopping
SPI_WRITE(0x7a, 0x0); // no frequency hopping
SPI_WRITE(0x71, 0x23); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio
SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625
SPI_WRITE(0x73, 0x0); // no frequency offset
SPI_WRITE(0x74, 0x0); // no frequency offset
SPI_WRITE(0x75, 0x53); // frequency set to 434MHz
SPI_WRITE(0x76, 0x64); // frequency set to 434MHz
SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
SPI_WRITE(0x0C,0b00010111); // GPIO Configuration 0.
SPI_WRITE(0x0B,0b00011000); // GPIO Configuration 1.
SPI_WRITE(0x08, 0x03); // fifo reset
SPI_WRITE(0x08, 0x00);
}
void SPI_RFM_INTREAD (void)
{
char temp;
temp = SPI_READ(0x03); //read the Interrupt Status1 register
temp = SPI_READ(0x04);
SPI_WRITE(0x05, 0x04); // interrupt is anable
}
void main(void)
{
// Declare your local variables here
unsigned char a=0;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
//USICR=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
PORTC=0b00001000;
DDRC =0b11110111; // 3-ий бит - только чтение (вход)
PORTB=0b00000100;
DDRB =0b11111011; // 2-ой бит - только чтение (вход)
delay_ms(500);
SPI_RFM_INIT();
SPI_RFM_INTREAD();
while (1)
{
SPI_WRITE(0x7F, a++);
SPI_WRITE(0x07, 9); // go to TX-mode
while (PINC.3)
{
PORTB.1=0;
delay_ms(100);
printf("work... a=%d \n",a);
}
while (!PINC.3)
{
PORTB.1=1;
SPI_RFM_INTREAD();
delay_ms(100);
printf("work2...a=%d \n",a);
}
};
}
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#define nIRQ PINC.3 //PINB.3
#define nSEL PORTC.2 //PORTB.2
#define nSCK PORTC.1 //PORTB.1
#define nSDI PORTC.0 //PORTB.0
#define nSDO PINB.2 //PIND.6
void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80; // Старший бит в адресе дб равен 1!!!
nSEL=0;
delay_us(10);
for (i=0; i<8; i++)
{
nSDI=(Addr>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
for (i=0; i<8; i++)
{
nSDI=(data>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
nSEL=1; // выборка чипа
delay_us(20);
}
unsigned char SPI_READ(unsigned char Addr)
{
unsigned char i=0;
unsigned char data=0;
nSEL=0;
delay_us(10);
for (i=0; i<8; i++)
{
nSDI=(Addr>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
//delay_us(200);
delay_us(20);
//if (i==8) LED_OUT(255);
}
for (i=0; i<8; i++)
{
nSCK=1;
delay_us(30);
data=data<<1;
data|=(nSDO);
nSCK=0;
delay_us(20);
}
nSEL=1; // выборка чипа
delay_us(20);
return data;
}
void SPI_RFM_INIT (void)
{
SPI_WRITE(0x06, 0x00); // interrupt all disable
SPI_WRITE(0x07, 01); // to ready mode
SPI_WRITE(0x09, 0x7f); // cap = 12.5pf
SPI_WRITE(0x0a, 0x05); //clk output is 2MHz
SPI_WRITE(0x0C,0b00010111); //GPIO Configuration 0
SPI_WRITE(0x0B,0b00011000); //GPIO Configuration 1
SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output
SPI_WRITE(0x0e, 0x00); //GPIO port use default value
SPI_WRITE(0x0f, 0x70); // NO ADC used
SPI_WRITE(0x10, 0x00); //no adc used
SPI_WRITE(0x12, 0x00); // no temperature sensor used
SPI_WRITE(0x13, 0x00); // no temperature sensor used
SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps
SPI_WRITE(0x1c, 0x04); // IF filter bandwidth
SPI_WRITE(0x1d, 0x40); // AFC LOOP
SPI_WRITE(0x1e, 0x08); //AFC timing
SPI_WRITE(0x20, 0x41); //clock recovery
SPI_WRITE(0x21, 0x60); //clock recovery
SPI_WRITE(0x22, 0x27); //clock recovery
SPI_WRITE(0x23, 0x52); //clock recovery
SPI_WRITE(0x24, 0x00); //clock recovery timing
SPI_WRITE(0x25, 0x06); //clock recovery timing
SPI_WRITE(0x6e, 0x27); // Tx data rate 1
SPI_WRITE(0x6f, 0x52); // Tx data rate 0
SPI_WRITE(0x30, 0x8c); // data access control
SPI_WRITE(0x32, 0xff); // header control
SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2,
SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble
SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble
SPI_WRITE(0x36, 0x2d); // synchronize word
SPI_WRITE(0x37, 0xd4);
SPI_WRITE(0x38, 0x00);
SPI_WRITE(0x39, 0x00);
SPI_WRITE(0x3a, 's'); // set tx header
SPI_WRITE(0x3b, 'o');
SPI_WRITE(0x3c, 'n');
SPI_WRITE(0x3d, 'g');
SPI_WRITE(0x3e, 1); // total tx 17 byte
SPI_WRITE(0x3f, 's'); // set rx header
SPI_WRITE(0x40, 'o');
SPI_WRITE(0x41, 'n');
SPI_WRITE(0x42, 'g');
SPI_WRITE(0x43, 0xff); // all the bit to be checked
SPI_WRITE(0x44, 0xff); // all the bit to be checked
SPI_WRITE(0x45, 0xff); // all the bit to be checked
SPI_WRITE(0x46, 0xff); // all the bit to be checked
SPI_WRITE(0x6d, 0x03); // tx power to Max
SPI_WRITE(0x79, 0x0); // no frequency hopping
SPI_WRITE(0x7a, 0x0); // no frequency hopping
SPI_WRITE(0x71, 0x23); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio
SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625
SPI_WRITE(0x73, 0x0); // no frequency offset
SPI_WRITE(0x74, 0x0); // no frequency offset
SPI_WRITE(0x75, 0x53); // frequency set to 434MHz
SPI_WRITE(0x76, 0x64); // frequency set to 434MHz
SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
SPI_WRITE(0x08, 0x03); // fifo reset
SPI_WRITE(0x08, 0x00);
}
void SPI_RFM_INTREAD (void)
{
char temp;
SPI_WRITE(0x07,01);
temp = SPI_READ(0x03); //read the Interrupt Status1 register
temp = SPI_READ(0x04);
SPI_WRITE(0x07, 0x05); // interrupt is anable
}
void main(void)
{
// Declare your local variables here
unsigned char a=0;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
PORTC.3=1;
DDRC.3=0;
PORTB.2=1;
DDRB.2=0;
delay_ms(500);
printf("begin1\n");
SPI_RFM_INIT();
printf("begin2\n");
SPI_RFM_INTREAD();
printf("begin3\n");
while (1)
{
if(!PINC.3)
{
a=SPI_READ(0x7F);
printf("work... a=%d \n",a);
SPI_RFM_INTREAD();
while (!PINC.3);
}
}
}
Пн фев 20, 2012 14:22:50
Вт фев 21, 2012 11:17:50
Вт фев 21, 2012 11:49:27
yuta_86 писал(а):неужели никто не хочет помочь начинающему (((( печально
Вт фев 21, 2012 11:50:32
Вт фев 21, 2012 12:00:38
yuta_86 писал(а):код частично брал и оттуда.....
Вт фев 21, 2012 12:07:15
Вт фев 21, 2012 21:43:53
yuta_86 писал(а):видел и это (((