diff --git a/firmware/masterchip/main.h b/firmware/masterchip/main.h index fc9bc6a..0595353 100644 --- a/firmware/masterchip/main.h +++ b/firmware/masterchip/main.h @@ -26,10 +26,12 @@ #include "spi.h" #include "usb.h" +#define SOFTTIMERNUMS 4 +#include "softtimer.h" + extern uint8_t newThermoData; extern uint16_t thermoData[]; -#define SOFTTIMERNUMS 4 #define LED1PORT PORTC #define LED1APIN 0 diff --git a/firmware/masterchip/softtimer.c b/firmware/masterchip/softtimer.c new file mode 120000 index 0000000..28d64fd --- /dev/null +++ b/firmware/masterchip/softtimer.c @@ -0,0 +1 @@ +../shared/softtimer.c \ No newline at end of file diff --git a/firmware/masterchip/softtimer.h b/firmware/masterchip/softtimer.h new file mode 120000 index 0000000..2d6405e --- /dev/null +++ b/firmware/masterchip/softtimer.h @@ -0,0 +1 @@ +../shared/softtimer.h \ No newline at end of file diff --git a/firmware/shared/softtimer.c b/firmware/shared/softtimer.c new file mode 100644 index 0000000..2b25429 --- /dev/null +++ b/firmware/shared/softtimer.c @@ -0,0 +1,20 @@ +#include "softtimer.h" + +volatile uint16_t timer1_acc; +uint16_t softtimer_last[SOFTTIMERNUMS]; + +void softtimer_reset(uint8_t timernum){ + softtimer_last[timernum] = timer1_acc; +} + +uint8_t softtimer(uint8_t timernum, uint16_t interval){ + uint16_t timer1_acc_tmp = timer1_acc; // because of volatile + if((uint16_t)(timer1_acc_tmp - (uint16_t)(softtimer_last[timernum]) >= interval )){ + softtimer_last[timernum] = timer1_acc_tmp; + return(1); + } + return(0); +} + +// SOFTTIMER( , ); +// #define SOFTTIMER(n,a) if(softtimer((n),(a*8))) diff --git a/firmware/shared/softtimer.h b/firmware/shared/softtimer.h new file mode 100644 index 0000000..417e61b --- /dev/null +++ b/firmware/shared/softtimer.h @@ -0,0 +1,18 @@ +// NOTES: +// Please #define SOFTTIMERNUMS aNum before including this! + +#ifndef __SOFTTIMER_H +#define __SOFTTIMER_H + +extern volatile uint16_t timer1_acc; +extern uint16_t softtimer_last[SOFTTIMERNUMS]; + + +void softtimer_reset(uint8_t timernum); +uint8_t softtimer(uint8_t timernum, uint16_t interval); + +// SOFTTIMER( , ); +#define SOFTTIMER(n,a) if(softtimer((n),(a*8))) + + +#endif