diff --git a/Makefile b/Makefile
index c4cae79..3f636a9 100644
--- a/Makefile
+++ b/Makefile
@@ -8,6 +8,9 @@
PROGRAMMER_TYPE = avrispmkII
PROGRAMMER_ARGS =
+# Supported radio module variants: 69 and 95
+RFM = 95
+
# Display dimensions
DISPLAY_WIDTH = 320
DISPLAY_HEIGHT = 240
@@ -19,6 +22,10 @@
HFLIP = 1
VFLIP = 0
+ifndef RFM
+override RFM = 0
+endif
+
MAIN = avrrfm.c
SRC = bitmaps.c colorspace.c dejavu.c display.c font.c i2c.c mcp9808.c \
spi.c tft.c unifont.c usart.c rfm.c sdc.c
@@ -30,6 +37,7 @@
AVRDUDE = avrdude
CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU)UL -DBAUD=$(BAUD)
+CFLAGS += -DRFM=$(RFM)
CFLAGS += -DDISPLAY_WIDTH=$(DISPLAY_WIDTH) -DDISPLAY_HEIGHT=$(DISPLAY_HEIGHT)
CFLAGS += -DINVERT=$(INVERT) -DBGR=$(BGR) -DHFLIP=$(HFLIP) -DVFLIP=$(VFLIP)
CFLAGS += -O2 -I.
diff --git a/avrrfm.c b/avrrfm.c
index 210599e..9932a48 100644
--- a/avrrfm.c
+++ b/avrrfm.c
@@ -5,7 +5,7 @@
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, version 2.
*
- * Experimental project to drive an RFM69HCW radio.
+ * Experimental project around RFM radio modules using an AVR MCU.
*
* Created on: 27.01.2025
* Author: torsten.roemer@luniks.net
@@ -56,6 +56,10 @@
/* Limit to FSK max size for now */
#define MSG_SIZE RFM_FSK_MSG_SIZE
+#if RFM != 69 && RFM != 95
+ #error "Please set RFM to either 69 or 95"
+#endif
+
#ifndef LORA
#define LORA 1
#endif
@@ -90,8 +94,11 @@
*/
ISR(WDT_vect) {
watchdogInts++;
+
+#if RFM == 95 && !LORA
// only used for RFM95 in FSK mode
- // rfmTimeout();
+ rfmTimeout();
+#endif
}
/**
@@ -232,6 +239,8 @@
const __flash Font *dejaVu = &dejaVuFont;
if (width > 0) fillArea(xo, yo, width, dejaVu->height, WHITE);
if (yl == 0) yl = unifont->height;
+ // FIXME required space should be calculated before writing the text
+ // i.e. 9.9° -> 10.0° can go wrong
width = writeString(xl, yl, dejaVu, buf, WHITE, crc ? BLACK : RED);
xo = xl;
yo = yl;
diff --git a/nbproject/Makefile-Custom.mk b/nbproject/Makefile-Custom.mk
index 6a91e43..f6f45f1 100644
--- a/nbproject/Makefile-Custom.mk
+++ b/nbproject/Makefile-Custom.mk
@@ -42,14 +42,14 @@
${OBJECTDIR}/_ext/48b9ad18/display.o \
${OBJECTDIR}/_ext/48b9ad18/font.o \
${OBJECTDIR}/_ext/48b9ad18/i2c.o \
+ ${OBJECTDIR}/_ext/48b9ad18/librfm69.o \
${OBJECTDIR}/_ext/48b9ad18/mcp9808.o \
${OBJECTDIR}/_ext/48b9ad18/rfm.o \
${OBJECTDIR}/_ext/48b9ad18/sdc.o \
${OBJECTDIR}/_ext/48b9ad18/spi.o \
${OBJECTDIR}/_ext/48b9ad18/tft.o \
${OBJECTDIR}/_ext/48b9ad18/unifont.o \
- ${OBJECTDIR}/_ext/48b9ad18/usart.o \
- ${OBJECTDIR}/librfm69.o
+ ${OBJECTDIR}/_ext/48b9ad18/usart.o
# C Compiler Flags
@@ -78,63 +78,63 @@
${OBJECTDIR}/_ext/48b9ad18/avrrfm.o: /home/dode/dev/avrrfm/avrrfm.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -std=c99 -o ${OBJECTDIR}/_ext/48b9ad18/avrrfm.o /home/dode/dev/avrrfm/avrrfm.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -std=c99 -o ${OBJECTDIR}/_ext/48b9ad18/avrrfm.o /home/dode/dev/avrrfm/avrrfm.c
${OBJECTDIR}/_ext/48b9ad18/bitmaps.o: /home/dode/dev/avrrfm/bitmaps.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/bitmaps.o /home/dode/dev/avrrfm/bitmaps.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/bitmaps.o /home/dode/dev/avrrfm/bitmaps.c
${OBJECTDIR}/_ext/48b9ad18/colorspace.o: /home/dode/dev/avrrfm/colorspace.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/colorspace.o /home/dode/dev/avrrfm/colorspace.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/colorspace.o /home/dode/dev/avrrfm/colorspace.c
${OBJECTDIR}/_ext/48b9ad18/dejavu.o: /home/dode/dev/avrrfm/dejavu.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/dejavu.o /home/dode/dev/avrrfm/dejavu.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/dejavu.o /home/dode/dev/avrrfm/dejavu.c
${OBJECTDIR}/_ext/48b9ad18/display.o: /home/dode/dev/avrrfm/display.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/display.o /home/dode/dev/avrrfm/display.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/display.o /home/dode/dev/avrrfm/display.c
${OBJECTDIR}/_ext/48b9ad18/font.o: /home/dode/dev/avrrfm/font.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/font.o /home/dode/dev/avrrfm/font.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/font.o /home/dode/dev/avrrfm/font.c
${OBJECTDIR}/_ext/48b9ad18/i2c.o: /home/dode/dev/avrrfm/i2c.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/i2c.o /home/dode/dev/avrrfm/i2c.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/i2c.o /home/dode/dev/avrrfm/i2c.c
+
+${OBJECTDIR}/_ext/48b9ad18/librfm69.o: /home/dode/dev/avrrfm/librfm69.c
+ ${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/librfm69.o /home/dode/dev/avrrfm/librfm69.c
${OBJECTDIR}/_ext/48b9ad18/mcp9808.o: /home/dode/dev/avrrfm/mcp9808.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/mcp9808.o /home/dode/dev/avrrfm/mcp9808.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/mcp9808.o /home/dode/dev/avrrfm/mcp9808.c
${OBJECTDIR}/_ext/48b9ad18/rfm.o: /home/dode/dev/avrrfm/rfm.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/rfm.o /home/dode/dev/avrrfm/rfm.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/rfm.o /home/dode/dev/avrrfm/rfm.c
${OBJECTDIR}/_ext/48b9ad18/sdc.o: /home/dode/dev/avrrfm/sdc.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/sdc.o /home/dode/dev/avrrfm/sdc.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/sdc.o /home/dode/dev/avrrfm/sdc.c
${OBJECTDIR}/_ext/48b9ad18/spi.o: /home/dode/dev/avrrfm/spi.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -std=c99 -o ${OBJECTDIR}/_ext/48b9ad18/spi.o /home/dode/dev/avrrfm/spi.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -std=c99 -o ${OBJECTDIR}/_ext/48b9ad18/spi.o /home/dode/dev/avrrfm/spi.c
${OBJECTDIR}/_ext/48b9ad18/tft.o: /home/dode/dev/avrrfm/tft.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/tft.o /home/dode/dev/avrrfm/tft.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/tft.o /home/dode/dev/avrrfm/tft.c
${OBJECTDIR}/_ext/48b9ad18/unifont.o: /home/dode/dev/avrrfm/unifont.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/unifont.o /home/dode/dev/avrrfm/unifont.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/unifont.o /home/dode/dev/avrrfm/unifont.c
${OBJECTDIR}/_ext/48b9ad18/usart.o: /home/dode/dev/avrrfm/usart.c
${MKDIR} -p ${OBJECTDIR}/_ext/48b9ad18
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/usart.o /home/dode/dev/avrrfm/usart.c
-
-${OBJECTDIR}/librfm69.o: librfm69.c
- ${MKDIR} -p ${OBJECTDIR}
- $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=16000000UL -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/librfm69.o librfm69.c
+ $(COMPILE.c) -g -DBAUD=38400 -DDRIVER=1 -DF_CPU=8000000UL -DRFM=95 -D__AVR_ATmega328P__ -D__flash=volatile -I. -o ${OBJECTDIR}/_ext/48b9ad18/usart.o /home/dode/dev/avrrfm/usart.c
# Subprojects
.build-subprojects:
diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml
index dade138..858d46d 100644
--- a/nbproject/configurations.xml
+++ b/nbproject/configurations.xml
@@ -47,7 +47,8 @@
BAUD=38400
DRIVER=1
- F_CPU=16000000UL
+ F_CPU=8000000UL
+ RFM=95
__AVR_ATmega328P__
__flash=volatile
@@ -67,6 +68,8 @@
-
+ -
+
-
-
@@ -83,8 +86,6 @@
-
- -
-
diff --git a/rfm.c b/rfm.c
index 8bcb003..e5da00d 100644
--- a/rfm.c
+++ b/rfm.c
@@ -16,10 +16,12 @@
}
void _rfmOn() {
- // RFM69
- // PORT_RFM &= ~(1 << PIN_RRST);
- // RFM95
+#if RFM == 69
+ PORT_RFM &= ~(1 << PIN_RRST);
+#endif
+#if RFM == 95
PORT_RFM |= (1 << PIN_RRST);
+#endif
}
void _rfmSel() {