Trace profilowania PWM DC
Notatka laboratoryjna: profil czasu ISR i ścieżek DMA dla sterownika PWM prądu DC. Dokument techniczny, brak elementów komercyjnych.
Zakres pomiarów
Profilowano wykonanie ISR kontrolera prądu (pętla wewnętrzna) w układzie zasilanym z DC-link 48 V, sterującym obciążeniem 0,5–12 A. Badano wpływ trybu timera (edge-aligned vs. center-aligned), długości dead-time (100–240 ns), konfiguracji ADC (sync/async do PWM), włączenia DMA dla akwizycji prądu, oraz kolizji przerwań (TIM1_UP, DMA, UART). Celem było określenie budżetu czasowego ISR, jitteru i ich korelacji z ripple prądu oraz błędami regulatora.
Konfiguracja stanowiska
Metryki czasu (EA vs CA)
MEAS [PWM-PROF-DC-25-031]
Mode DT[ns] tISR_avg[µs] tISR_pk[µs] Jitter[ns] CPU_Load[%]
EA 120 7.46 8.23 210 34
EA 180 7.58 8.30 188 35
CA 120 6.92 7.41 126 31
CA 180 7.01 7.55 118 31
CA 240 7.11 7.61 114 32
Tryb center-aligned (CA) obniża jitter okna próbkowania i skraca średni czas ISR o ~7,2% względem edge-aligned (EA), kosztem minimalnie większego czasu maksymalnego dla DT=240 ns.
Kolizje przerwań (profil)
TRACE COLLISIONS
t[ms] SRC Δt_preempt[µs] Skutek
1.82 DMA_ADC 0.18 brak wpływu (coalesced)
4.07 TIM1_UP 0.51 przesunięcie próby ADC (+1 sample delay)
5.00 UART_TX 0.09 ignorowalne
7.35 TIM1_UP 0.62 pik ripple prądu +0,21 A
Preempcja TIM1_UP >0,5 µs w kluczowym oknie integracji ADC podbija ripple prądu o 0,18–0,24 A RMS.
Surowy trace ISR (skrót)
[GPIO:ISR_ENTER] t=3.125ms
ADC_ReadPair() 1.04µs
I_FilterIIR() 0.62µs
PI_Update_Q15() 1.88µs
Duty_SlewLimiter() 0.33µs
FaultCheck(OCP/UV) 0.21µs
PWM_WriteCCR() 0.27µs
[GPIO:ISR_EXIT] tISR=4.35µs
[GPIO:ISR_ENTER] t=3.167ms
TIM1_UP preempt 0.58µs
Resume_ISR ...
[GPIO:ISR_EXIT] tISR=5.02µs (pk)
Wariant z DMA dla ADC eliminuje koszty kopiowania (−0,31 µs), ale wymaga synchronizacji IDLE/half-transfer, aby nie tworzyć dodatkowego jitteru próby.
Wpływ na ripple prądu
RIPPLE CORR
Konfiguracja Ripple_I [A RMS]
EA, DT=120, ADC async 0.92
EA, DT=180, ADC sync 0.68
CA, DT=180, ADC sync 0.53
CA, DT=180, ADC sync
+ TIM1_UP reprio 0.41
Największą poprawę uzyskano dzięki: (1) przejściu na CA, (2) synchronizacji ADC w środkowym oknie przewodzenia, (3) obniżeniu priorytetu TIM1_UP względem ISR pętli prądowej.
Nieprawidłowości i kody
W:JIT-06— jitter >150 ns pk-pk przy EA + ADC async; korekta: CA + sync.W:DT-04— DT=100–120 ns, ślad przewodzenia wtórnego; rekomendacja: ≥180 ns lub zwiększyć Rg.E:OCP-12— overshoot prądu przy step 5→11 A z wąskim slew; rozluźnić limiter lub dodać feed-forward Vbus.
Korekty konfiguracyjne (delta)
- Timer: CA, DT=180–200 ns; preskalery 1:1; synchronizacja ADC w centrum impulsu.
- ADC/DMA: DMA kołowe 2 próbki/okres; commit po EOC+TRGO; filtr IIR 2. rzędu Fc=200–250 Hz.
- Priorytety: ISR prądowy PRI=1, DMA PRI=2, TIM1_UP PRI=3 (lub DMA TX dla PWM).
- Regulator: ograniczyć tslew do 0,4–0,6 A/ms; feed-forward Vbus komp. zmian napięcia.
- Pomiary: stały znacznik GPIO na wej./wyj. ISR; rejestr ETM na okna awarii.
Po zmianach: tISR_avg=6,98 µs, jitter=112 ns, Ripple_I=0,41 A RMS, brak E:OCP-12 w 50 cyklach step-load.
Do potwierdzenia prawidłowości sygnałów kontrolnych profilowania wykorzystano układy i porównano logi urządzeń różnych serii.