Commit Graph

6 Commits

Author SHA1 Message Date
Mateusz Kowalczyk
0332b728e6 Move I2C work out of interrupt context to fix display freeze
The tube library calls delay(100) after every display write and the
BME280 library calls delay(100) when re-initializing after a failed
transfer. Inside the TC3 timer ISR the SysTick interrupt is blocked,
so micros() stops advancing past ~1ms and delay() can spin forever
when its start sample lands exactly at the bottom of the micros()
sawtooth. All clocks derive from the same 48MHz source, so the ISR
phase is locked and one specific code path (display update on a
falling temperature reading) hits the fatal window reproducibly.

ISRs now only raise flags; sensor reads, display updates and timer
rescheduling run from loop(), where delay() works normally.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 01:37:18 +00:00
cryptogopher
c2af98d588 Display also humidity and pressure
Display update triggered by value change, not interval
2026-02-12 00:10:45 +01:00
cryptogopher
d6f9bb6634 Add some TODOs 2022-10-10 15:40:01 +02:00
cryptogopher
f8878d3c37 Replace tone() with custom timer 2022-10-09 20:34:25 +02:00
cryptogopher
b81b52b204 Replace delay() with ISR_Timer 2022-09-12 00:07:37 +02:00
cryptogopher
4a46ee65b9 Initial commit 2022-09-08 22:54:21 +02:00