mitchellhansen 5 years ago
parent f4c23b7573
commit 0189d519c6

@ -76,7 +76,8 @@ endif
ifndef F_CPU ifndef F_CPU
F_CPU = 16000000 F_CPU = 16000000
endif endif
CFLAGS += -D F_CPU=$(F_CPU) -D ARDUINO
CFLAGS += -D F_CPU=$(F_CPU) -D ARDUINO -D ROLE=$(ROLE)
# hardware/arduino/avr/libraries/SPI/src/SPI.cpp: # hardware/arduino/avr/libraries/SPI/src/SPI.cpp:

@ -8,15 +8,16 @@
#include <SPI.h> #include <SPI.h>
#include <nRF24L01.h> #include <nRF24L01.h>
#include <RF24.h> #include <RF24.h>
#define CE_PIN 7 //#define CE_PIN 7
#define CSN_PIN 8 #define CE_PIN 3
//#define CS_PIN 8
#define CS_PIN 2
#define LED PORTD2 #define LED PORTD2
#define PULL PORTD3 #define PULL PORTD3
#define ENABLE PORTD5 #define ENABLE PORTD5
#define DIRECTION PORTD6 #define DIRECTION PORTD6
void uart_init() { void uart_init() {
// Upper and lower bytes of the calculated prescaler value for baud. // Upper and lower bytes of the calculated prescaler value for baud.
UBRR0H = UBRRH_VALUE; UBRR0H = UBRRH_VALUE;
@ -45,38 +46,94 @@ void uart_putstr(char *data) {
} }
const char thisSlaveAddress[5] = {'R','x','A','A','A'}; const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
int radio_number = ROLE;
int role = ROLE;
int main(void) { int main(void) {
digitalWrite(10, 10);
uart_init(); uart_init();
DDRC &= ~(1<<0); // Input // pinMode(LED_BUILTIN, OUTPUT);
PORTC |= (1<<0); // Enable Internal Pull Up (Setting it to HIGH) // digitalWrite(LED_BUILTIN, LOW);
RF24 radio(CE_PIN, CS_PIN);
radio.begin();
if(radio_number) {
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
} else {
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
radio.startListening();
// DDRD |= (1 << ENABLE);
DDRD = DDRD | 0xFC;
PORTD |= _BV(ENABLE);
PORTD |= _BV(DIRECTION);
int i = 0;
for(;;) { for(;;) {
RF24 radio(CE_PIN, CSN_PIN);
radio.begin();
radio.setDataRate(RF24_1MBPS);
unsigned long start_time = micros();
// ping
if (role == 1) {
radio.stopListening();
// uart_putstr("Now sending\n");
// digitalWrite(LED_BUILTIN, HIGH);
// _delay_ms(100);
// digitalWrite(LED_BUILTIN, LOW);
if (!radio.write( &start_time, sizeof(unsigned long))) {
// uart_putstr("failed\n");
}
radio.startListening();
unsigned long started_waiting_at = micros();
boolean timeout = false;
// uart_putstr("hello\n"); while (!radio.available()) {
_delay_ms(400); if (micros() - started_waiting_at > 20000) {
PORTD |= _BV(PULL); timeout = true;
_delay_ms(400); break;
PORTD &= ~_BV(PULL); }
}
if (timeout) {
// uart_putstr("Failed, reponse timed out\n");
} else {
unsigned long got_time;
radio.read( & got_time, sizeof(unsigned long));
unsigned long end_time = micros();
// uart_putstr("Got response\n");
}
delay(500);
uint8_t port_value = 2;
// port_value = PINC & (1 << 0);
uart_putchar((char)port_value);
// uart_putchar((char)'\n');
} }
// ping bag
if (role == 0) {
unsigned long got_time;
if (radio.available()) {
while (radio.available()) {
radio.read( &got_time, sizeof(unsigned long));
}
radio.stopListening();
radio.write( & got_time, sizeof(unsigned long));
radio.startListening();
// uart_putstr("Sent\n");
digitalWrite(LED_BUILTIN, HIGH);
_delay_ms(100);
digitalWrite(LED_BUILTIN, LOW);
}
}
}
} }

@ -0,0 +1,5 @@
make -f Makefile.mk ROLE=0; avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:main.hex:i
make -f Makefile.mk ROLE=1; avrdude -v -patmega328p -carduino -P/dev/ttyUSB1 -b57600 -D -Uflash:w:main.hex:i

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Loading…
Cancel
Save