From fa0c389e56f76a631a4616bf36b85ff7ee875c04 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 12 Sep 2021 23:38:19 +0200 Subject: add fan tacho --- table-fan/Makefile | 1 + table-fan/table-fan.c | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/table-fan/Makefile b/table-fan/Makefile index c41073f..85f972c 100644 --- a/table-fan/Makefile +++ b/table-fan/Makefile @@ -26,6 +26,7 @@ OBJ := $(NAME).o LIBS := util led lufa-descriptor-usbserial usbio EXTERNAL_LIBS := lufa SPREADAVR_PATH := ../contrib/avr-utils +PRINTF_HAS_FLOAT := 1 RESET_FUNC := $(SPREADAVR_PATH)/tools/reset_lufa_cdc RESET_PARAM := 'r' diff --git a/table-fan/table-fan.c b/table-fan/table-fan.c index 2cf9a32..0a49c91 100644 --- a/table-fan/table-fan.c +++ b/table-fan/table-fan.c @@ -65,6 +65,37 @@ inline void pwm_dec(void) PWM_VAL--; } + +void tacho_init(void) +{ + DDRD &= ~(1< tacho_last_ts) { + diff = current - tacho_last_ts; + } else { + diff = (UINT16_MAX - tacho_last_ts) + current; + } + tacho_last_ts = current; + + float rpm = 1875000.0 / (float)diff ; + printf("\rtacho: %8.2f rpm", rpm); +} + + void handle_cmd(uint8_t cmd) { switch(cmd) { @@ -89,12 +120,9 @@ int main(void) led_init(); usbio_init(); pwm_init(); + tacho_init(); sei(); - // FAN tacho input (enable Pull-Up) - DDRD &= ~(1<