diff --git a/firmware/masterchip/Makefile b/firmware/masterchip/Makefile index c5d5e81..41d1edd 100644 --- a/firmware/masterchip/Makefile +++ b/firmware/masterchip/Makefile @@ -3,7 +3,7 @@ include ../Makefile.inc COMPILE = avr-gcc $(CFLAGS) $(DEFINES) -OBJECTS = usbdrv/usbdrvasm.o usbdrv/usbdrv.o main.o display.o lcd/lcd.o usb.o softtimer.o spi.o spi_proto.o +OBJECTS = usbdrv/usbdrvasm.o usbdrv/usbdrv.o main.o display.o lcd/lcd.o usb.o softtimer.o spi.o spi_proto.o spi_pointers.o # symbolic targets: all: firmware.hex diff --git a/firmware/masterchip/display.h b/firmware/masterchip/display.h index c085f61..8f433f8 100644 --- a/firmware/masterchip/display.h +++ b/firmware/masterchip/display.h @@ -2,8 +2,8 @@ #define __DISPLAY_H #include +#include #include "lcd/lcd.h" -#include "main.h" #define LCD_CHAR_HALFBAR 0x01 @@ -11,7 +11,7 @@ #define LCD_CHAR_DEGREE 0x03 #define LCD_CHAR_BLANK 0x20 -extern uint8_t newThermoData1; +extern uint8_t newThermoData; extern uint16_t thermoData[]; diff --git a/firmware/masterchip/main.c b/firmware/masterchip/main.c index 0368648..bef4723 100644 --- a/firmware/masterchip/main.c +++ b/firmware/masterchip/main.c @@ -1,3 +1,19 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "usbdrv/usbdrv.h" + +#include "display.h" +#include "spi.h" +#include "usb.h" +#include "softtimer.h" + #include "main.h" uint8_t newThermoData = 1; diff --git a/firmware/masterchip/main.h b/firmware/masterchip/main.h index 0595353..0f442ea 100644 --- a/firmware/masterchip/main.h +++ b/firmware/masterchip/main.h @@ -11,23 +11,8 @@ #ifndef __MAIN_H #define __MAIN_H -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "display.h" -#include "spi.h" -#include "usb.h" #define SOFTTIMERNUMS 4 -#include "softtimer.h" extern uint8_t newThermoData; extern uint16_t thermoData[]; diff --git a/firmware/masterchip/spi_pointers.c b/firmware/masterchip/spi_pointers.c new file mode 100644 index 0000000..0ee5993 --- /dev/null +++ b/firmware/masterchip/spi_pointers.c @@ -0,0 +1,12 @@ + +// dummy so spi_proto can be shared + +#include "spi_pointers.h" + +uint16_t *spi_proto_globals8[] = { }; +uint8_t *spi_proto_globals16[] = { }; +funptr_t spi_proto_funcs[] = { }; + + + + diff --git a/firmware/masterchip/spi_pointers.h b/firmware/masterchip/spi_pointers.h new file mode 100644 index 0000000..6a52b05 --- /dev/null +++ b/firmware/masterchip/spi_pointers.h @@ -0,0 +1,16 @@ +#ifndef __SPI_POINTERS_H +#define __SPI_POINTERS_H +// dummy-include so spi_proto can be shared + +#include + +typedef void(*funptr_t)(); + +extern uint16_t *spi_proto_globals8[]; +extern uint8_t *spi_proto_globals16[]; +extern funptr_t spi_proto_funcs[]; + + +#endif //__SPI_POINTERS_H + + diff --git a/firmware/masterchip/usb.c b/firmware/masterchip/usb.c index fc68300..f5ac651 100644 --- a/firmware/masterchip/usb.c +++ b/firmware/masterchip/usb.c @@ -1,5 +1,9 @@ +#include +#include "usbdrv/usbdrv.h" + #include "main.h" -#include "spi.h" + + #include "spi_proto.h" #include "usb.h" diff --git a/firmware/shared/spi.c b/firmware/shared/spi.c index 1474d84..eea1448 100644 --- a/firmware/shared/spi.c +++ b/firmware/shared/spi.c @@ -74,15 +74,17 @@ void spi_init(){ -#ifdef SPI_MASTER void spi_mst_start_packet(){ +#ifdef SPI_MASTER SPI_SSOUT &= ~(_BV(SPI_SS_PIN)); +#endif } void spi_mst_end_packet(){ +#ifdef SPI_MASTER SPI_SSOUT |= _BV(SPI_SS_PIN); +#endif } -#endif //SPI_MASTER #define SPI_WAIT while(SPSR & _BV(SPIF)){;} diff --git a/firmware/shared/spi_proto.h b/firmware/shared/spi_proto.h index 7ff1be8..a9736b1 100644 --- a/firmware/shared/spi_proto.h +++ b/firmware/shared/spi_proto.h @@ -23,11 +23,12 @@ void call_func(uint8_t number); /***** MASTER END *****/ /***** SLAVE *****/ -typedef void(*funptr_t)(); - +/* extern uint16_t *spi_proto_globals8[]; extern uint8_t *spi_proto_globals16[]; extern funptr_t spi_proto_funcs[]; +*/ +#include "spi_pointers.h" uint8_t spi_proto_needswrite(uint8_t opcode); uint16_t spi_proto_handlewrite(uint8_t opcode, uint8_t addr); diff --git a/firmware/slavechip/Makefile b/firmware/slavechip/Makefile index c59e510..aff2bd3 100644 --- a/firmware/slavechip/Makefile +++ b/firmware/slavechip/Makefile @@ -2,7 +2,7 @@ include ../Makefile.inc COMPILE = avr-gcc $(CFLAGS) $(DEFINES) -OBJECTS = main.o mcp_adc.o i2c_simple.o softtimer.o spi_proto.o spi.o +OBJECTS = main.o mcp_adc.o i2c_simple.o softtimer.o spi_proto.o spi.o spi_pointers.o # symbolic targets: all: firmware.hex diff --git a/firmware/slavechip/spi_pointers.c b/firmware/slavechip/spi_pointers.c new file mode 100644 index 0000000..f2835a2 --- /dev/null +++ b/firmware/slavechip/spi_pointers.c @@ -0,0 +1,17 @@ + +#include "spi_pointers.h" +#include "main.h" + +uint16_t *spi_proto_globals8[] = { + &foo + }; +uint8_t *spi_proto_globals16[] = { + &bar + }; +funptr_t spi_proto_funcs[] = { + &baz + }; + + + + diff --git a/firmware/slavechip/spi_pointers.h b/firmware/slavechip/spi_pointers.h new file mode 100644 index 0000000..dd33677 --- /dev/null +++ b/firmware/slavechip/spi_pointers.h @@ -0,0 +1,15 @@ +#ifndef __SPI_POINTERS_H +#define __SPI_POINTERS_H + +#include + +typedef void(*funptr_t)(); + +extern uint16_t *spi_proto_globals8[]; +extern uint8_t *spi_proto_globals16[]; +extern funptr_t spi_proto_funcs[]; + + +#endif //__SPI_POINTERS_H + +