Passa al contenuto

Registro delle modifiche

Tutte le modifiche notevoli alla libreria rbdimmerESP32 saranno documentate in questo file.

Il formato è basato su Keep a Changeloge questo progetto aderisce al Versionamento Semantico.

[2.0.0] - 2026-03-23

Panoramica

Riscrittura architettonica completa. L'implementazione monolitica a file singolo è stata sostituita con un'architettura interna completamente modulare. Tutti i percorsi critici per il timing ora utilizzano il posizionamento IRAM_ATTR e l'invio ESP_TIMER_ISR. La convalida hardware su una scheda a 4 canali ha rivelato e risolto tre problemi indipendenti di sfarfallio che non erano riproducibili nella simulazione.

Modifiche di Rottura

  • Il layout della sorgente interna è stato modificato da un singolo rbdimmerESP32.cpp a moduli src/internal/. L'inclusione diretta di intestazioni interne non è più supportata.
  • Gli esempi sono stati ristrutturati da file .ino/.c flat a directory per-sketch (necessario per il gestore librerie di Arduino IDE 2.x).
  • Kconfig.txt rimosso — la configurazione dei componenti ESP-IDF ora utilizza il nome file standard Kconfig. I progetti che hanno fatto riferimento a Kconfig.txt devono essere aggiornati.
  • L'API dell'intestazione pubblica (rbdimmerESP32.h) è invariata — il codice dell'utente non deve essere modificato.

Aggiunto

  • Architettura Modulare — implementazione divisa in sette moduli interni:
  • rbdimmer_zerocross — ZC GPIO ISR, misurazione della frequenza, filtro del rumore
  • rbdimmer_channel — Stato del canale, invio fase ZC, ISR a due passaggi
  • rbdimmer_timer — wrapper di creazione/avvio/arresto esp_timer
  • rbdimmer_curves — Conversione Livello → ritardo (LINEAR, RMS, LOG)
  • rbdimmer_transition — Dissolvenza uniforme basata su attività FreeRTOS
  • rbdimmer_types — Struct ed enum condivisi
  • rbdimmer_hal — Shim HAL GPIO/timer per la portabilità Arduino/ESP-IDF
  • Parametri Kconfig per l'ottimizzazione di ESP-IDF:
  • CONFIG_RBDIMMER_ZC_DEBOUNCE_US (default 3000 µs) — finestra del filtro del rumore
  • CONFIG_RBDIMMER_MIN_DELAY_US (default 100 µs) — ritardo minimo ZC→TRIAC
  • CONFIG_RBDIMMER_LEVEL_MIN (default 3%) — livelli inferiori → SPENTO
  • CONFIG_RBDIMMER_LEVEL_MAX (default 99%) — livelli superiori → limitati
  • Matrice di Build CI (.github/workflows/build.yml):
  • Arduino: arduino/compile-sketches@v1, Core 3.x, 4 esempi × 5 chip (ESP32, S2, S3, C3, C6)
  • ESP-IDF: espressif/esp-idf-ci-action@v1, IDF v5.3 / v5.4 / v5.5 × 5 chip = 15 job
  • test_app/ — progetto ESP-IDF minimalista per la verifica della superficie API in fase di compilazione

Corretto

  • Sfarfallio generale a tutti i livelli di luminosità — il picco di commutazione TRIAC ha re-innescato lo ZC ISR a metà ciclo. Aggiunto filtro del rumore: qualsiasi bordo ZC entro ZC_DEBOUNCE_US (3000 µs) dal bordo valido precedente viene scartato.
  • Sfarfallio al 100% di luminosità — con un ritardo di 50 µs la tensione CA (~5V) era al di sotto della soglia di latching TRIAC; inoltre l'invio esp_timer ISR dal GPIO ISR di livello 3 ha reso i ritardi sub-100 µs imprevedibili. MIN_DELAY_US aumentato da 50 → 100 µs; i livelli ≥ 100% mappati a LEVEL_MAX (99%).
  • Sincronizzazione multi-canale — offset di fase per-canale causati da reset GPIO sequenziale + braccio del timer in un singolo ciclo. ISR a due passaggi: il passaggio 1 imposta tutti i GPIO BASSO, il passaggio 2 arma tutti i timer di ritardo.
  • Sfarfallio a livelli inferiori al 3% — tensione CA troppo bassa per un latching TRIAC affidabile verso la fine del ciclo. I livelli inferiori a LEVEL_MIN (3%) restituiscono ritardo = 0 (canale SPENTO).

Modificato

  • Tutti i gestori ISR ora utilizzano il posizionamento IRAM_ATTR
  • L'invio del timer è stato modificato a ESP_TIMER_ISR per jitter minimo
  • Versione minima supportata di ESP-IDF: 5.3 (era 4.4)
  • Minimo Arduino ESP32 Core: 3.x (era 2.0.0)

[1.0.0] - 2024-01-01

Aggiunto

  • Rilascio iniziale
  • Implementazione a file singolo
  • Supporto per ESP32, ESP32-S2, ESP32-S3, ESP32-C3
  • Tre curve di luminosità: LINEAR, RMS, LOGARITHMIC
  • Supporto multi-canale e multi-fase
  • Transizioni uniformi tramite attività FreeRTOS
  • Supporto Arduino IDE e ESP-IDF