mirror of
https://github.com/Kugelschieber/arduino-c.git
synced 2026-01-18 11:00:26 +00:00
Working! But only 4 bytes are propperly transferred.
This commit is contained in:
51
main.c
51
main.c
@@ -6,13 +6,15 @@
|
|||||||
#include "rf24/rf24.h"
|
#include "rf24/rf24.h"
|
||||||
#include "rf24/nRF24L01.h"
|
#include "rf24/nRF24L01.h"
|
||||||
|
|
||||||
#define TX
|
//#define TX
|
||||||
|
|
||||||
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};
|
||||||
|
|
||||||
void prepare();
|
void prepare();
|
||||||
void loop();
|
void loop();
|
||||||
|
void tx();
|
||||||
|
void rx();
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
prepare();
|
prepare();
|
||||||
@@ -30,7 +32,7 @@ void prepare(){
|
|||||||
pin_mode(A2, OUTPUT); // red
|
pin_mode(A2, OUTPUT); // red
|
||||||
|
|
||||||
rf24_init(7, 6, 5, 4, 3, 2);
|
rf24_init(7, 6, 5, 4, 3, 2);
|
||||||
rf24_config(2, 4);
|
rf24_config(2, 13);
|
||||||
|
|
||||||
#ifdef TX
|
#ifdef TX
|
||||||
rf24_rx_addr(rx_addr);
|
rf24_rx_addr(rx_addr);
|
||||||
@@ -39,42 +41,49 @@ void prepare(){
|
|||||||
rf24_rx_addr(tx_addr);
|
rf24_rx_addr(tx_addr);
|
||||||
rf24_tx_addr(rx_addr);
|
rf24_tx_addr(rx_addr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
digital_write(A1, HIGH);
|
||||||
|
_delay_ms(300);
|
||||||
|
digital_write(A1, LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop(){
|
void loop(){
|
||||||
digital_write(A2, LOW);
|
|
||||||
_delay_ms(1000);
|
|
||||||
digital_write(A1, LOW);
|
|
||||||
digital_write(A2, HIGH);
|
|
||||||
_delay_ms(1000);
|
|
||||||
|
|
||||||
#ifdef TX
|
#ifdef TX
|
||||||
unsigned char data[4] = {1, 2, 3, 4};
|
tx();
|
||||||
|
#else
|
||||||
|
rx();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void tx(){
|
||||||
|
_delay_ms(10);
|
||||||
|
digital_write(A1, LOW);
|
||||||
|
digital_write(A2, LOW);
|
||||||
|
unsigned char data[13] = "World!";
|
||||||
|
|
||||||
rf24_send(data);
|
rf24_send(data);
|
||||||
while(rf24_is_sending()){
|
while(rf24_is_sending());
|
||||||
_delay_ms(20);
|
unsigned char status = rf24_status();
|
||||||
}
|
|
||||||
/*unsigned char status = rf24_status();
|
|
||||||
|
|
||||||
if(status&(1<<TX_DS)){
|
if(status&(1<<TX_DS)){
|
||||||
digital_write(A1, HIGH);
|
digital_write(A1, HIGH);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
digital_write(A2, HIGH);
|
digital_write(A2, HIGH);
|
||||||
}*/
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rx(){
|
||||||
|
digital_write(A1, LOW);
|
||||||
|
digital_write(A2, LOW);
|
||||||
|
|
||||||
digital_write(A1, HIGH);
|
|
||||||
#else
|
|
||||||
if(rf24_data_ready()){
|
if(rf24_data_ready()){
|
||||||
unsigned char data[4] = {0, 0, 0, 0};
|
unsigned char data[13];
|
||||||
|
|
||||||
rf24_get_data(data);
|
rf24_get_data(data);
|
||||||
digital_write(A1, HIGH);
|
digital_write(A1, HIGH);
|
||||||
|
serial_write((char*)data, 13);
|
||||||
|
|
||||||
char out[20];
|
_delay_ms(1000);
|
||||||
sprintf(out, "%d %d %d %d", data[0], data[1], data[2], data[3]);
|
|
||||||
serial_write(out, 20);
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|||||||
14
rf24/rf24.c
14
rf24/rf24.c
@@ -5,7 +5,7 @@
|
|||||||
// FIXME for testing, remove later
|
// FIXME for testing, remove later
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
|
|
||||||
#define CONFIG_CRC (1<<EN_CRC)|(1<<CRCO)
|
#define CONFIG_CRC (1<<EN_CRC)|(0<<CRCO)
|
||||||
|
|
||||||
unsigned char _ce, _csn, _sck, _mo, _mi, _irq, _payload_len;
|
unsigned char _ce, _csn, _sck, _mo, _mi, _irq, _payload_len;
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ 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, (0<<RF_DR_LOW)|(0x03<<RF_PWR));
|
rf24_config_register(RF_SETUP, (0<<RF_DR_HIGH)|(0x03<<RF_PWR));
|
||||||
|
|
||||||
// CRC
|
// CRC
|
||||||
rf24_config_register(CONFIG, CONFIG_CRC);
|
rf24_config_register(CONFIG, CONFIG_CRC);
|
||||||
@@ -78,6 +78,8 @@ void rf24_tx_addr(unsigned char* addr){
|
|||||||
digital_write(_csn, LOW);
|
digital_write(_csn, LOW);
|
||||||
rf24_serial_write(W_REGISTER|RX_ADDR_P0); // auto ACK pipe address must match...
|
rf24_serial_write(W_REGISTER|RX_ADDR_P0); // auto ACK pipe address must match...
|
||||||
rf24_serial_transmit(addr, 5);
|
rf24_serial_transmit(addr, 5);
|
||||||
|
digital_write(_csn, HIGH);
|
||||||
|
digital_write(_csn, LOW);
|
||||||
rf24_serial_write(W_REGISTER|TX_ADDR); // tx address
|
rf24_serial_write(W_REGISTER|TX_ADDR); // tx address
|
||||||
rf24_serial_transmit(addr, 5);
|
rf24_serial_transmit(addr, 5);
|
||||||
digital_write(_csn, HIGH);
|
digital_write(_csn, HIGH);
|
||||||
@@ -88,14 +90,14 @@ void rf24_rx(){
|
|||||||
rf24_serial_write(FLUSH_RX);
|
rf24_serial_write(FLUSH_RX);
|
||||||
digital_write(_csn, HIGH);
|
digital_write(_csn, HIGH);
|
||||||
|
|
||||||
digital_write(_ce, LOW);
|
|
||||||
rf24_config_register(STATUS, (1<<RX_DR)|(1<<TX_DS)|(1<<MAX_RT));
|
rf24_config_register(STATUS, (1<<RX_DR)|(1<<TX_DS)|(1<<MAX_RT));
|
||||||
|
|
||||||
|
digital_write(_ce, LOW);
|
||||||
rf24_config_register(CONFIG, CONFIG_CRC|(1<<PWR_UP)|(1<<PRIM_RX));
|
rf24_config_register(CONFIG, CONFIG_CRC|(1<<PWR_UP)|(1<<PRIM_RX));
|
||||||
digital_write(_ce, HIGH);
|
digital_write(_ce, HIGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rf24_tx(){
|
void rf24_tx(){
|
||||||
digital_write(_ce, LOW);
|
|
||||||
rf24_config_register(STATUS, (1<<RX_DR)|(1<<TX_DS)|(1<<MAX_RT));
|
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));
|
rf24_config_register(CONFIG, CONFIG_CRC|(1<<PWR_UP)|(0<<PRIM_RX));
|
||||||
}
|
}
|
||||||
@@ -106,9 +108,12 @@ void rf24_power_down(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void rf24_send(unsigned char* data){
|
void rf24_send(unsigned char* data){
|
||||||
|
digital_write(_ce, LOW);
|
||||||
rf24_tx();
|
rf24_tx();
|
||||||
digital_write(_csn, LOW);
|
digital_write(_csn, LOW);
|
||||||
rf24_serial_write(FLUSH_TX);
|
rf24_serial_write(FLUSH_TX);
|
||||||
|
digital_write(_csn, HIGH);
|
||||||
|
digital_write(_csn, LOW);
|
||||||
rf24_serial_write(W_TX_PAYLOAD);
|
rf24_serial_write(W_TX_PAYLOAD);
|
||||||
rf24_serial_transmit(data, _payload_len);
|
rf24_serial_transmit(data, _payload_len);
|
||||||
digital_write(_csn, HIGH);
|
digital_write(_csn, HIGH);
|
||||||
@@ -139,7 +144,6 @@ void rf24_get_data(unsigned char* data){
|
|||||||
data[i] = rf24_serial_write(NOP);
|
data[i] = rf24_serial_write(NOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
rf24_serial_write(FLUSH_RX);
|
|
||||||
digital_write(_csn, HIGH);
|
digital_write(_csn, HIGH);
|
||||||
rf24_config_register(STATUS, 1<<RX_DR);
|
rf24_config_register(STATUS, 1<<RX_DR);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user