Compare commits
11 Commits
352b49ef29
...
master
Author | SHA1 | Date | |
---|---|---|---|
05fe5d53f4 | |||
56705b840b | |||
56e9a87b25 | |||
4f341661e3 | |||
9fd1c1a163 | |||
479d07c63f | |||
e23c008cc2 | |||
1f41c5d920 | |||
fc7211c4a1 | |||
56c244883b | |||
7e5acdd896 |
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "test/usart"]
|
||||||
|
path = test/usart
|
||||||
|
url = git@git.chch.tech:avr/usart.git
|
9
makefile
9
makefile
@@ -6,7 +6,7 @@ CC=avr-g++
|
|||||||
OBJCOPY=avr-objcopy
|
OBJCOPY=avr-objcopy
|
||||||
CFLAGS=-Wall -g -mmcu=${MCU} -DF_CPU=${F_CPU} -I.
|
CFLAGS=-Wall -g -mmcu=${MCU} -DF_CPU=${F_CPU} -I.
|
||||||
TARGET=main
|
TARGET=main
|
||||||
SRCS= src/*.cpp $(wildcard lib/*/src/*.cpp)
|
SRCS= $(wildcard src/*.cpp) test/usart/src/usart.cpp
|
||||||
|
|
||||||
all: build flash
|
all: build flash
|
||||||
|
|
||||||
@@ -26,3 +26,10 @@ term:
|
|||||||
|
|
||||||
avarice:
|
avarice:
|
||||||
avarice --program --file bin/main.elf --part atmega32 --dragon :4242
|
avarice --program --file bin/main.elf --part atmega32 --dragon :4242
|
||||||
|
|
||||||
|
|
||||||
|
fuse:
|
||||||
|
avrdude -p ${MCU} -c ${PROG} -P ${PORT} -U lfuse:w:0xe4:m -U hfuse:w:0xd2:m
|
||||||
|
|
||||||
|
lock:
|
||||||
|
avrdude -p ${MCU} -c ${PROG} -P ${PORT} -U lock:w:0xC0:m
|
@@ -27,6 +27,9 @@
|
|||||||
#define RESET_DDR DDRB
|
#define RESET_DDR DDRB
|
||||||
#define RESET_PORT PORTB
|
#define RESET_PORT PORTB
|
||||||
#define RESET PB0
|
#define RESET PB0
|
||||||
|
#define WAKE_PORT PORTB
|
||||||
|
#define WAKE_DDR DDRB
|
||||||
|
#define WAKE_PIN PB1
|
||||||
#define INTERRUPT ISR(INT2_vect)
|
#define INTERRUPT ISR(INT2_vect)
|
||||||
#elif defined RASPBERRYPI
|
#elif defined RASPBERRYPI
|
||||||
|
|
||||||
|
@@ -104,12 +104,17 @@ word Mrf24j::address16_read(void) {
|
|||||||
return a16h << 8 | read_short(MRF_SADRL);
|
return a16h << 8 | read_short(MRF_SADRL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Mrf24j::send_str(word dest16, char * data) {
|
||||||
|
byte len = strlen(data); // get the length of the char* array
|
||||||
|
send(dest16, data, len);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple send 16, with acks, not much of anything.. assumes src16 and local pan only.
|
* Simple send 16, with acks, not much of anything.. assumes src16 and local pan only.
|
||||||
* @param data
|
* @param data
|
||||||
*/
|
*/
|
||||||
void Mrf24j::send16(word dest16, char * data) {
|
void Mrf24j::send(word dest16, char * data, int len) {
|
||||||
byte len = strlen(data); // get the length of the char* array
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
write_long(i++, bytes_MHR); // header length
|
write_long(i++, bytes_MHR); // header length
|
||||||
// +ignoreBytes is because some module seems to ignore 2 bytes after the header?!.
|
// +ignoreBytes is because some module seems to ignore 2 bytes after the header?!.
|
||||||
|
@@ -227,7 +227,8 @@ class Mrf24j
|
|||||||
*/
|
*/
|
||||||
void set_palna(boolean enabled);
|
void set_palna(boolean enabled);
|
||||||
|
|
||||||
void send16(word dest16, char * data);
|
void send(word dest16, char * data, int len);
|
||||||
|
void send_str(word dest16, char * data);
|
||||||
|
|
||||||
void interrupt_handler(void);
|
void interrupt_handler(void);
|
||||||
|
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
#define F_CPU 8000000UL
|
#define F_CPU 8000000UL
|
||||||
#include "../../src/mrf24j.h"
|
#include "../../src/mrf24j.h"
|
||||||
#include "../../lib/usart/src/usart.h"
|
#include "../usart/src/usart.h"
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
|
|
||||||
@@ -28,35 +28,42 @@ int main() {
|
|||||||
// This is _our_ address
|
// This is _our_ address
|
||||||
mrf.address16_write(0x4202);
|
mrf.address16_write(0x4202);
|
||||||
mrf.handlers(&handle_rx, &handle_tx);
|
mrf.handlers(&handle_rx, &handle_tx);
|
||||||
mrf.turbo();
|
//mrf.turbo();
|
||||||
|
|
||||||
sei();
|
sei();
|
||||||
|
DDRD |= (1<<PD4) | (1<<PD5);
|
||||||
|
printf("Started");
|
||||||
while(1) {
|
while(1) {
|
||||||
//printf("txxxing...\n\r");
|
//printf("txxxing...\n\r");
|
||||||
//mrf.send16(0x4201, "abcd");
|
//mrf.send16(0x4201, "abcd");
|
||||||
_delay_ms(5000);
|
//_delay_ms(5000);
|
||||||
|
PORTD ^= (1<<PD5);
|
||||||
|
_delay_ms(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void handle_rx() {
|
void handle_rx() {
|
||||||
|
PORTD |= (1<<PD4);
|
||||||
|
printf("------------------------------------------------------\n\r");
|
||||||
printf("received a packet %i bytes long\n\r", mrf.get_rxinfo()->frame_length);
|
printf("received a packet %i bytes long\n\r", mrf.get_rxinfo()->frame_length);
|
||||||
|
|
||||||
if(mrf.get_bufferPHY()){
|
if(mrf.get_bufferPHY()){
|
||||||
printf("Packet data (PHY Payload):\n\r");
|
printf("Packet data (PHY Payload): ");
|
||||||
for (int i = 0; i < mrf.get_rxinfo()->frame_length; i++) {
|
for (int i = 0; i < mrf.get_rxinfo()->frame_length; i++) {
|
||||||
printf("%x", mrf.get_rxbuf()[i]);
|
printf("%x", mrf.get_rxbuf()[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf("\r\nASCII data (relevant data):\n\r");
|
printf("\r\nASCII data (relevant data): ");
|
||||||
// for (int i = 0; i < mrf.rx_datalength(); i++) {
|
for (int i = 0; i < mrf.rx_datalength(); i++) {
|
||||||
// usart::put(mrf.get_rxinfo()->rx_data[i]);
|
usart::put(mrf.get_rxinfo()->rx_data[i]);
|
||||||
// }
|
}
|
||||||
|
|
||||||
printf("\r\nLQI/RSSI=");
|
printf("LQI/RSSI=");
|
||||||
printf("%i/%i\n\r", mrf.get_rxinfo()->lqi, mrf.get_rxinfo()->rssi);
|
printf("%i/%i\n\r", mrf.get_rxinfo()->lqi, mrf.get_rxinfo()->rssi);
|
||||||
|
PORTD &= ~(1<<PD4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_tx() {
|
void handle_tx() {
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#define F_CPU 8000000UL
|
#define F_CPU 8000000UL
|
||||||
#include "../../src/mrf24j.h"
|
#include "../../src/mrf24j.h"
|
||||||
#include "../../lib/usart/src/usart.h"
|
#include "../usart/src/usart.h"
|
||||||
#include "../../src/driver.h"
|
#include "../../src/driver.h"
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Mrf24j mrf;
|
Mrf24j mrf;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
void handle_rx();
|
void handle_rx();
|
||||||
void handle_tx();
|
void handle_tx();
|
||||||
@@ -32,15 +33,21 @@ int main() {
|
|||||||
mrf.address16_write(0x4201);
|
mrf.address16_write(0x4201);
|
||||||
mrf.handlers(&handle_rx, &handle_tx);
|
mrf.handlers(&handle_rx, &handle_tx);
|
||||||
//mrf.enable_wake();
|
//mrf.enable_wake();
|
||||||
mrf.set_bufferPHY(true);
|
//mrf.set_bufferPHY(true);
|
||||||
mrf.turbo();
|
//mrf.turbo();
|
||||||
mrf.set_power(0b1100000);
|
//mrf.set_power(0b1100000);
|
||||||
//mrf.sleep();
|
//mrf.sleep();
|
||||||
|
|
||||||
sei();
|
sei();
|
||||||
|
printf("Started\n\r");
|
||||||
|
|
||||||
|
char tmp[20];
|
||||||
while(1) {
|
while(1) {
|
||||||
printf("txxxing...\n\r");
|
printf("txxxing... %i\n\r", i++);
|
||||||
//mrf.wake();
|
//mrf.wake();
|
||||||
mrf.send16(0x4202, "Tx Hello");
|
|
||||||
|
sprintf(tmp,"Received %i\n\r", i);
|
||||||
|
mrf.send_str(0x4202, tmp);
|
||||||
|
|
||||||
_delay_ms(2000);
|
_delay_ms(2000);
|
||||||
}
|
}
|
||||||
@@ -69,7 +76,7 @@ void handle_rx() {
|
|||||||
|
|
||||||
void handle_tx() {
|
void handle_tx() {
|
||||||
if (mrf.get_txinfo()->tx_ok) {
|
if (mrf.get_txinfo()->tx_ok) {
|
||||||
printf("TX went ok, got ack\n\r");
|
printf("TX went ok, got ack %i\n\r", i);
|
||||||
} else {
|
} else {
|
||||||
printf("TX failed after %i retries\n\n\r", mrf.get_txinfo()->retries);
|
printf("TX failed after %i retries\n\n\r", mrf.get_txinfo()->retries);
|
||||||
}
|
}
|
||||||
|
1
test/usart
Submodule
1
test/usart
Submodule
Submodule test/usart added at 05034f9256
Reference in New Issue
Block a user