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