mirror of
https://github.com/Kugelschieber/arduino-c.git
synced 2026-01-18 11:00:26 +00:00
Still not working.
This commit is contained in:
43
main.c
43
main.c
@@ -6,7 +6,7 @@
|
|||||||
#include "rf24/rf24.h"
|
#include "rf24/rf24.h"
|
||||||
#include "rf24/nRF24L01.h"
|
#include "rf24/nRF24L01.h"
|
||||||
|
|
||||||
#define TX
|
//#define TX 1
|
||||||
|
|
||||||
unsigned char rx_addr[5] = {0xE7, 0xE7, 0xE7, 0xE7, 0xE7};
|
unsigned char rx_addr[5] = {0xE7, 0xE7, 0xE7, 0xE7, 0xE7};
|
||||||
unsigned char tx_addr[5] = {0xD7, 0xD7, 0xD7, 0xD7, 0xD7};
|
unsigned char tx_addr[5] = {0xD7, 0xD7, 0xD7, 0xD7, 0xD7};
|
||||||
@@ -26,8 +26,8 @@ void prepare(){
|
|||||||
pins_init();
|
pins_init();
|
||||||
serial_init(9600);
|
serial_init(9600);
|
||||||
|
|
||||||
pin_mode(A1, OUTPUT);
|
pin_mode(A1, OUTPUT); // ok
|
||||||
pin_mode(A2, OUTPUT);
|
pin_mode(A2, OUTPUT); // error
|
||||||
|
|
||||||
rf24_init(7, 6, 5, 4, 3, 2);
|
rf24_init(7, 6, 5, 4, 3, 2);
|
||||||
rf24_config(2, 4);
|
rf24_config(2, 4);
|
||||||
@@ -44,33 +44,36 @@ void prepare(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop(){
|
void loop(){
|
||||||
digital_write(A1, HIGH);
|
_delay_ms(1000);
|
||||||
|
digital_write(A1, LOW);
|
||||||
digital_write(A2, LOW);
|
digital_write(A2, LOW);
|
||||||
|
_delay_ms(1000);
|
||||||
|
|
||||||
#ifdef TX
|
#ifdef TX
|
||||||
unsigned char data[4] = {'t', 'e', 's', 't'};
|
unsigned char data[4] = {1, 2, 3, 4};
|
||||||
|
|
||||||
rf24_send(data);
|
rf24_send(data);
|
||||||
|
|
||||||
while(rf24_is_sending());
|
while(rf24_is_sending());
|
||||||
|
/*unsigned char status = rf24_status();
|
||||||
unsigned char status = rf24_status();
|
|
||||||
|
|
||||||
if(status&(1<<TX_DS)){
|
if(status&(1<<TX_DS)){
|
||||||
digital_write(A2, HIGH);
|
digital_write(A1, HIGH);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
digital_write(A2, HIGH);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
digital_write(A1, HIGH);
|
||||||
#else
|
#else
|
||||||
while(!rf24_data_ready());
|
if(rf24_data_ready()){
|
||||||
|
unsigned char data[4] = {0, 0, 0, 0};
|
||||||
|
|
||||||
unsigned char data[4];
|
rf24_get_data(data);
|
||||||
rf24_get_data(data);
|
digital_write(A1, HIGH);
|
||||||
|
|
||||||
char out[10];
|
char out[20];
|
||||||
sprintf(out, "%d", data[0]);
|
sprintf(out, "%d %d %d %d", data[0], data[1], data[2], data[3]);
|
||||||
serial_write(out, 10);
|
serial_write(out, 20);
|
||||||
|
}
|
||||||
digital_write(A2, HIGH);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
digital_write(A1, LOW);
|
|
||||||
_delay_ms(1000);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
#define RF_DR_LOW 5
|
#define RF_DR_LOW 5
|
||||||
#define PLL_LOCK 4
|
#define PLL_LOCK 4
|
||||||
#define RF_DR_HIGH 3
|
#define RF_DR_HIGH 3
|
||||||
#define RF_PWR 0 // 2 bits
|
#define RF_PWR 1 // 2 bits
|
||||||
|
|
||||||
#define STATUS 0x07
|
#define STATUS 0x07
|
||||||
#define RX_DR 6
|
#define RX_DR 6
|
||||||
|
|||||||
66
rf24/rf24.c
66
rf24/rf24.c
@@ -47,19 +47,22 @@ void rf24_config(unsigned char channel, unsigned char payload_len){
|
|||||||
rf24_config_register(RX_PW_P5, 0x00);
|
rf24_config_register(RX_PW_P5, 0x00);
|
||||||
|
|
||||||
// low transmission rate, 0dBm
|
// low transmission rate, 0dBm
|
||||||
rf24_config_register(RF_SETUP, (1<<RF_DR_LOW)|(0x03<<RF_PWR));
|
rf24_config_register(RF_SETUP, (0<<RF_DR_LOW)|(0x03<<RF_PWR));
|
||||||
|
|
||||||
// CRC
|
// CRC
|
||||||
rf24_config_register(CONFIG, CONFIG_CRC);
|
rf24_config_register(CONFIG, CONFIG_CRC);
|
||||||
|
|
||||||
// auto ACK for pipe 0 and 1
|
// auto ACK for pipe 0 and 1 (disable the rest of them)
|
||||||
//rf24_config_register(EN_AA, 0x03);
|
rf24_config_register(EN_AA, (1<<ENAA_P0)|(1<<ENAA_P1)|(0<<ENAA_P2)|(0<<ENAA_P3)|(0<<ENAA_P4)|(0<<ENAA_P5));
|
||||||
|
|
||||||
// rx address
|
// rx address
|
||||||
//rf24_config_register(EN_RXADDR, (1<<ERX_P0)|(1<<ERX_P1));
|
rf24_config_register(EN_RXADDR, (1<<ERX_P0)|(1<<ERX_P1)|(0<<ERX_P2)|(0<<ERX_P3)|(0<<ERX_P4)|(0<<ERX_P5));
|
||||||
|
|
||||||
// auto retransmit, 1000us, 15 retransmits
|
// auto retransmit, 1000us, 15 retransmits
|
||||||
rf24_config_register(SETUP_RETR, (0x03<<ARD)|(0x0F<<ARC));
|
rf24_config_register(SETUP_RETR, (0x04<<ARD)|(0x0F<<ARC));
|
||||||
|
|
||||||
|
// fixed package length
|
||||||
|
rf24_config_register(DYNPD, 0x00);
|
||||||
|
|
||||||
rf24_rx();
|
rf24_rx();
|
||||||
}
|
}
|
||||||
@@ -76,6 +79,25 @@ void rf24_tx_addr(unsigned char* addr){
|
|||||||
rf24_serial_transmit(addr, 5);
|
rf24_serial_transmit(addr, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rf24_rx(){
|
||||||
|
rf24_serial_write(FLUSH_RX);
|
||||||
|
rf24_config_register(STATUS, (1<<RX_DR)|(1<<TX_DS)|(1<<MAX_RT));
|
||||||
|
rf24_config_register(CONFIG, CONFIG_CRC|(1<<PWR_UP)|(1<<PRIM_RX));
|
||||||
|
digital_write(_ce, HIGH);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rf24_tx(){
|
||||||
|
rf24_serial_write(FLUSH_TX);
|
||||||
|
rf24_config_register(STATUS, (1<<RX_DR)|(1<<TX_DS)|(1<<MAX_RT));
|
||||||
|
rf24_config_register(CONFIG, CONFIG_CRC|(1<<PWR_UP)|(0<<PRIM_RX));
|
||||||
|
digital_write(_ce, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rf24_power_down(){
|
||||||
|
digital_write(_ce, LOW);
|
||||||
|
rf24_config_register(CONFIG, CONFIG_CRC);
|
||||||
|
}
|
||||||
|
|
||||||
void rf24_send(unsigned char* data){
|
void rf24_send(unsigned char* data){
|
||||||
rf24_tx();
|
rf24_tx();
|
||||||
rf24_serial_write(W_TX_PAYLOAD);
|
rf24_serial_write(W_TX_PAYLOAD);
|
||||||
@@ -85,12 +107,7 @@ void rf24_send(unsigned char* data){
|
|||||||
|
|
||||||
unsigned char rf24_is_sending(){
|
unsigned char rf24_is_sending(){
|
||||||
unsigned char status = rf24_status();
|
unsigned char status = rf24_status();
|
||||||
|
return !(status&((1<<TX_DS)|(1<<MAX_RT)));
|
||||||
if(status&((1<<TX_DS)|(1<<MAX_RT))){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char rf24_data_ready(){
|
unsigned char rf24_data_ready(){
|
||||||
@@ -108,10 +125,11 @@ void rf24_get_data(unsigned char* data){
|
|||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
for(i = 0; i < 4; i++){
|
for(i = 0; i < 4; i++){
|
||||||
data[3-i] = rf24_serial_write(NOP);
|
data[i] = rf24_serial_write(NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
rf24_config_register(STATUS, 1<<RX_DR);
|
rf24_config_register(STATUS, 1<<RX_DR);
|
||||||
|
rf24_serial_write(FLUSH_RX);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char rf24_status(){
|
unsigned char rf24_status(){
|
||||||
@@ -124,20 +142,8 @@ void rf24_config_register(unsigned char reg, unsigned char value){
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned char rf24_read_register(unsigned char reg){
|
unsigned char rf24_read_register(unsigned char reg){
|
||||||
return rf24_serial_write(R_REGISTER|(reg®_MASK));
|
rf24_serial_write(R_REGISTER|(reg®_MASK));
|
||||||
}
|
return rf24_serial_write(NOP);
|
||||||
|
|
||||||
void rf24_rx(){
|
|
||||||
digital_write(_ce, HIGH);
|
|
||||||
rf24_config_register(CONFIG, CONFIG_CRC|(1<<PWR_UP)|(1<<PRIM_RX));
|
|
||||||
rf24_config_register(STATUS, (1<<RX_DR)|(1<<TX_DS)|(1<<MAX_RT));
|
|
||||||
}
|
|
||||||
|
|
||||||
void rf24_tx(){
|
|
||||||
digital_write(_ce, LOW);
|
|
||||||
rf24_config_register(CONFIG, CONFIG_CRC|(1<<PWR_UP)|(0<<PRIM_RX));
|
|
||||||
rf24_config_register(STATUS, (1<<RX_DR)|(1<<TX_DS)|(1<<MAX_RT));
|
|
||||||
rf24_serial_write(FLUSH_TX);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char rf24_fifo_empty(){
|
unsigned char rf24_fifo_empty(){
|
||||||
@@ -149,16 +155,17 @@ void rf24_serial_transmit(unsigned char* data, unsigned char len){
|
|||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
for(i = 0; i < len; i++){
|
for(i = 0; i < len; i++){
|
||||||
rf24_serial_write(data[(len-1-i)]);
|
rf24_serial_write(data[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char rf24_serial_write(unsigned char data){
|
unsigned char rf24_serial_write(unsigned char data){
|
||||||
digital_write(_sck, LOW);
|
|
||||||
digital_write(_csn, LOW); // chip enable
|
digital_write(_csn, LOW); // chip enable
|
||||||
unsigned char i = 0, rx = 0;
|
unsigned char i = 0, rx = 0;
|
||||||
|
|
||||||
for(i = 0; i < 8; i++){
|
for(i = 0; i < 8; i++){
|
||||||
|
digital_write(_sck, LOW); // clock
|
||||||
|
|
||||||
// write bit
|
// write bit
|
||||||
if(data&(1<<(7-i))){
|
if(data&(1<<(7-i))){
|
||||||
digital_write(_mo, HIGH);
|
digital_write(_mo, HIGH);
|
||||||
@@ -174,10 +181,9 @@ unsigned char rf24_serial_write(unsigned char data){
|
|||||||
if(digital_read(_mi)){
|
if(digital_read(_mi)){
|
||||||
rx |= 0x01;
|
rx |= 0x01;
|
||||||
}
|
}
|
||||||
|
|
||||||
digital_write(_sck, LOW); // clock
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
digital_write(_sck, LOW);
|
||||||
digital_write(_csn, HIGH); // chip disable
|
digital_write(_csn, HIGH); // chip disable
|
||||||
digital_write(_mo, LOW);
|
digital_write(_mo, LOW);
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ void rf24_config(unsigned char, unsigned char);
|
|||||||
void rf24_rx_addr(unsigned char*);
|
void rf24_rx_addr(unsigned char*);
|
||||||
void rf24_tx_addr(unsigned char*);
|
void rf24_tx_addr(unsigned char*);
|
||||||
|
|
||||||
|
void rf24_rx();
|
||||||
|
void rf24_tx();
|
||||||
|
void rf24_power_down();
|
||||||
|
|
||||||
void rf24_send(unsigned char*);
|
void rf24_send(unsigned char*);
|
||||||
unsigned char rf24_is_sending();
|
unsigned char rf24_is_sending();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user