From 9a643171a633db45205f50b64490cfc012976e55 Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Sun, 11 Nov 2018 11:21:12 +0000 Subject: [PATCH] esp8266 timer_create --- timed.cpp | 18 +++++++++++++++--- timed.h | 4 +++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/timed.cpp b/timed.cpp index cae7409..0fe2131 100644 --- a/timed.cpp +++ b/timed.cpp @@ -5,19 +5,24 @@ #include #include #include + +#elif defined(ESP8266) +#include +#include +#include #endif #include "timed.h" #if defined(__LM4F120H5QR__) -static void (*client_handler)(void); +static handler_t client_handler; static void timer0isr(void) { ROM_TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); client_handler(); } -void timer_create(unsigned freq, void (*handler)(void)) { +void timer_create(unsigned freq, handler_t handler) { client_handler = handler; ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); ROM_TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); @@ -29,10 +34,17 @@ void timer_create(unsigned freq, void (*handler)(void)) { } #elif defined(ESP_PLATFORM) -void timer_create(unsigned freq, void (*handler)(void)) { +void timer_create(unsigned freq, handler_t handler) { hw_timer_t *timer = timerBegin(3, 80, true); // prescaler of 80 timerAttachInterrupt(timer, handler, true); timerAlarmWrite(timer, 1000000 / freq, true); timerAlarmEnable(timer); } +#elif defined(ESP8266) + +void timer_create(unsigned freq, handler_t handler) { + static os_timer_t t; + os_timer_setfn(&t, (os_timer_func_t *)handler, 0); + os_timer_arm(&t, 1000 / freq, true); +} #endif diff --git a/timed.h b/timed.h index 7059e4d..1d73720 100644 --- a/timed.h +++ b/timed.h @@ -1,6 +1,8 @@ #ifndef __TIMED_H__ #define __TIMED_H__ -void timer_create(unsigned freq, void (*handler)(void)); +typedef void (*handler_t)(void); + +void timer_create(unsigned freq, handler_t handler); #endif