Dokument przedstawia analizę ilościową i jakościową restartów nadzorcy (IWDG/WWDG) w modułach sterujących AGD. Celem jest identyfikacja dominujących przyczyn resetów, określenie powtarzalności w zależności od stanu urządzenia oraz wskazanie minimalnych działań korygujących na poziomie firmware i sprzętu. Analiza nie obejmuje interakcji z użytkownikiem; wnioski wynikają z logów, sygnatur RAM po crashu i telemetrii.
RCC_CSR, sygnatury stacku i dzienników EEPROM.| Źródło | Zakres | Uwagi |
|---|---|---|
| EEPROM log | ostatnie 1024 zdarzenia | rotacja pierścieniowa, CRC16 |
| RTC stamp | znacznik czasu + Δt od poprzedniego | 1 s rozdzielczości |
| RAM dump | 256 B z obszaru stosu | PC/LR/PSP/MSP snapshot |
| Telemetria | T_pcb, Vcc, GPIO stan | ostatnia ramka sprzed resetu |
Zdarzenia klasyfikowano w pięć kategorii: BLK_ISR (blokująca obsługa przerwania), DMA_LOCK (zawieszenie kolejki DMA), WDG_MISCFG (nieprawidłowe okno WWDG), SUPPLY_SAG (czasowe obniżenie Vcc), THERMAL (T_pcb > 70 °C).
| Model | Łącznie resetów | Reset/tydzień | Top przyczyna | Udział [%] |
|---|---|---|---|---|
| Pralka XBL-400 | 312 | 24.1 | BLK_ISR (ZCD/TIM1) | 47.4 |
| Suszarka C-90 | 188 | 14.5 | SUPPLY_SAG (rozruch kompresora) | 41.0 |
| Zmywarka HB-220 | 96 | 7.4 | DMA_LOCK (UART RX) | 38.5 |
Δt [h]: <1 | 1–3 | 3–6 | 6–12 | 12–24 | >24
count : 44 | 61 | 68 | 70 | 50 | 19
dni: pn wt śr cz pt so nd
XBL: 42 50 48 45 46 44 37
C-90: 25 28 29 27 26 30 23
HB : 14 12 15 13 16 14 12
Wzorzec XBL-400 wskazuje koncentrację resetów między 1–12 godz. od startu cyklu serwisowego, korelując z intensywnym użyciem funkcji grzałek i pomp. W C-90 resety grupują się przy rozruchu kompresora (SUPPLY_SAG; gwałtowne pobory prądu). HB-220 wykazuje zależność od aktywności łącza UART (DMA_LOCK), głównie podczas aktualizacji telemetrii.
NVIC: EXTI0(ZCD)=0 > TIM1_UP=1 > DMA_CHx=2 > USART=3
Trace: ZCD preempts TIM1_UP → ISR TIM1_UP wydłużony do 2.4 ms (PWM recompute)
Watchdog: IWDG=2.048 s, kick w SysTick (1 ms)
Wniosek: kumulacja ISR w okresie piku obciążeń → opóźniony kick IWDG → reset
Krytyczne są sekcje krytyczne bez maskowania przy przełączaniu banku DMA. Dla XBL-400 wykazano, że jednoczesne obciążenie ZCD i TIM1_UP zwiększa latencję pętli głównej o 1.8–2.2 ms w szczytach, co skutkuje „pływaniem” kicka IWDG względem okna.
Telemetria: Vcc min 10.4 V (nom. 12 V), T_pcb 58–62 °C
Zdarzenie: start kompresora / pompy → spadek szyny → brown-out → timeout kick
W suszarce C-90 dominują zdarzenia jednorazowe powiązane z rozruchem obciążeń indukcyjnych. Potwierdzono, że zmiana kolejności wybudzania peryferiów oraz dodanie kondensatora 1000 µF na szynie 12 V ogranicza częstotliwość resetów o ~37% bez modyfikacji firmware.
Objaw: brak postępu wskaźnika DMA, parser oczekuje LEN → kick nie dochodzi
Przyczyna: nieatomowe przełączenie banku + kolizja przerwania USART
Dla HB-220 dwie poprawki (maskowanie przerwań przy bank swap oraz watchdog kolejki parsera, 250 ms) redukują wystąpienia DMA_LOCK poniżej 0.3% w 10⁵ ramek.
[12:14:03.210] IWDG: reload=0x0FFF, presc=64 (2.048s)
[12:14:03.212] SYS: tick latency=2.3ms (ZCD/TIM1 overlap)
[12:14:05.259] WDG: missed (Δt kick=2.062s) → reset
[12:14:05.000] RCC_CSR: IWDGRSTF=1, SFTRSTF=0, PINRSTF=0
[09:00:00.004] PSU: Vcc=12.1V
[09:00:00.018] COMP: start → inrush
[09:00:00.024] PSU: Vcc=10.4V (6ms), T_pcb=61.3°C
[09:00:00.030] WDG: kick jitter=+9ms, window miss → reset
[17:42:10.104] UART: AA 55 08 22 01 64 00 00 00 00 42 19
[17:42:10.105] DMA: rx_half=1 rx_full=0 | swap active
[17:42:10.106] USART: ISR → overrun
[17:42:10.400] Parser: no-progress 300ms → soft reset queue
Model uproszczony: zdarzenia traktowane jako niezależne Bernoulliego w oknach 15-minutowych. Szacowane prawdopodobieństwa:
| Przyczyna | p_reset / okno | 95% CI | Uwagi |
|---|---|---|---|
| BLK_ISR | 0.021 | 0.018–0.024 | silna korelacja z ZCD |
| SUPPLY_SAG | 0.012 | 0.009–0.015 | zależne od rozruchów |
| DMA_LOCK | 0.006 | 0.004–0.008 | od łącza UART |
Wdrożenie maskowania bank swap + watchdog parsera obniża p_reset dla DMA_LOCK do 0.001–0.002/okno. Z kolei zmiana topologii ISR (TIM1_UP < ZCD) redukuje BLK_ISR o ok. 35%.
SysTick_Handler() (lub dedykowanego TIM), poza sekcje krytyczne.RCC_CSR, czas od ostatniego kicka, stany NVIC, minimum Vcc i T_pcb z ostatnich 5 s.Praktyka serwisowa wskazuje, że w typowych wdrożeniach AGD powyższy zestaw wystarcza do obniżenia restartów o ≥50% bez ingerencji w konstrukcję płyty. Marginalnie warto odnotować, że z takimi przypadkami skutecznie radzi sobie serwis AGD, stosując identyczny porządek działań oraz weryfikację telemetrii po każdej korekcie.
| Kryterium | Wartość docelowa | Po korektach | Status |
|---|---|---|---|
| Resety/tydzień (XBL-400) | ≤ 10 | 9.2 | OK |
| Resety/tydzień (C-90) | ≤ 7 | 6.3 | OK |
| DMA_LOCK na 10⁵ ramek (HB-220) | < 0.5% | 0.28% | OK |
| Kick jitter (RMS) | < 1.5 ms | 0.9 ms | OK |
wdg_events_90d.csv – lista zdarzeń z EEPROM (timestamp, typ, kontekst)rcc_csr_snapshots.txt – sygnatury przyczyn resetu (IWDGRSTF/WWDGRSTF/BORRSTF)nvic_latency_report.md – pomiary czasu trwania ISRpower_sag_scope.csv – przebieg Vcc podczas rozruchówRepo: //srv/lab/raporty/watchdog/ • Lokalizacja: /raporty/statystyka-restartow-watchdog/