Compare commits

...

11 Commits

Author SHA1 Message Date
CVR
05fe5d53f4 Add send_str 2021-10-13 10:55:53 +13:00
CVR
56705b840b Add wake pin to mega32 2021-09-17 17:25:32 +12:00
CVR
56e9a87b25 Add debug info 2021-09-13 14:01:12 +12:00
CVR
4f341661e3 Update submodule 2021-09-13 14:00:49 +12:00
CVR
9fd1c1a163 Add fuse and lock commands 2021-09-13 14:00:28 +12:00
CVR
479d07c63f Remove usart files 2021-09-13 11:04:53 +12:00
CVR
e23c008cc2 Add usart lib 2021-09-13 11:04:30 +12:00
CVR
1f41c5d920 Update usart dir 2021-09-13 11:02:29 +12:00
CVR
fc7211c4a1 Update usart dir 2021-09-13 11:01:14 +12:00
CVR
56c244883b Add usart lib 2021-09-09 12:27:24 +12:00
CVR
7e5acdd896 Add usart lib 2021-09-09 12:27:09 +12:00
8 changed files with 54 additions and 20 deletions

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "test/usart"]
path = test/usart
url = git@git.chch.tech:avr/usart.git

View File

@@ -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

View File

@@ -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

View File

@@ -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?!.

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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

Submodule test/usart added at 05034f9256