Visual walkthrough — Timers — PWM generation, input capture, output compare
5.5.3 · D2· Coding › Embedded Systems & Real-Time Software › Timers — PWM generation, input capture, output compare
Step 1 — Counter bas ek dot hai jo ek staircase chadhta hai
KYA HAI: Sochiye ek dot jo har tick par ek step upar jump karta hai staircase pe.
KYUN: Jo bhi kaam ek timer karta hai — LEDs blink karna, motors ghoomana, pulses measure karna — yeh sab isi ek boring chadhne par bana hai. Agar hum chadhna samajh lein, baaki sab bookkeeping hai.
PICTURE: Figure mein horizontal axis time hai jo ticks mein measure hoti hai (ek tick = ek clock pulse). Red dot CNT ki current value hai. Dekhein iske ek step per tick chadhne ko.

Har tick ki ek fixed real-time duration hoti hai, . Abhi bas itna jaanein ki yeh constant hai — Step 6 mein dikhayenge yeh kahan se aati hai.
Step 2 — Staircase ki ek ceiling hai: ARR
KYA HAI: Hum ARR ki height par ek ceiling line add karte hain. Dot chadhta hai, ceiling se takraata hai, aur neeche aa jaata hai.
KYUN: Yeh wrap hi pattern ko repeat karaata hai. PWM wave ek repeating cheez hai, isliye humein ek repeating counter chahiye. Ceiling hi ek ek-taraf ki chadhaayi ko ek endless loop mein badal deti hai.
PICTURE: Red saw-tooth: chadho, par giro, phir chadho. Ek chadhaai-aur-girna ek period hai. Ek chadhaai ke chhote steps gino — woh number aage kaam aayega.

Step 3 — Ek doosra number chadhaai dekh raha hai: CCR
KYA HAI: CCR ki height par ek doosri horizontal line kheecho, ARR se neechi. Ab staircase do zones mein bant jaati hai: line ke neeche aur line ke upar.
KYUN: Ek comparison ("kya dot abhi tak line ke neeche hai?") woh ek hi naya idea hai jo PWM ko chahiye. Timer har single tick par CNT ko CCR se compare karta hai — free mein, hardware mein, jabke CPU so raha hota hai. Isliye timers delay() loops se behtar hain.
PICTURE: Red line CCR hai. Uske neeche = "pehle" ka zone; uspar/upar = "baad" ka zone. Dot har chadhaai ka kuch hissa neeche aur kuch hissa upar bitaata hai.

Step 4 — Do zones ko ek pin mein convert karo: HIGH aur LOW
KYA HAI: Climbing dot ke map ke neeche, hum pin ki voltage ko ek flat line ke roop mein draw karte hain jo HIGH aur LOW ke beech exactly un momentas par jump karti hai jab dot CCR ko cross karta hai aur wrap hota hai.
KYUN: Yahi poora trick hai. Counter ki height ko pin ki on/off state mein convert kar diya gaya hai. Time pin ko automatically drive karta hai — loop mein koi software nahi. Woh converted square wave hi hai PWM (Pulse-Width Modulation).
PICTURE: Top half — red dot CCR line ke upar chadh raha hai. Bottom half — resulting square wave. Notice karein ki HIGH stretch exactly chadhaai ke "below CCR" part ke saath align hoti hai.

Step 5 — HIGH fraction measure karo: duty cycle saamne aati hai
KYA HAI: Hum square wave par do lengths measure karte hain — HIGH part aur poori period — aur divide karte hain.
KYUN: par ek LED dim dikhta hai; par ek motor dheere ghoomta hai. Woh number jo brightness ya speed control karta hai exactly yahi ratio hai, isliye humein yeh formula chahiye.
Ab lengths guess karne ki jagah ticks gino:
PICTURE: HIGH span (red) poori period ke upar baitha hai. Unka ratio hi duty hai.

Step 6 — Ek "tick" actually kahan se aati hai (time axis, grounded)
Hum ticks ginte rahe hain. Lekin ek tick asli seconds mein kitni lambi hoti hai? Yeh hamari tick-counts ko ek real frequency mein badal deta hai jo aap oscilloscope par dekh sakte hain.
KYA HAI: Ek fast clock pulse har seconds mein aati hai; prescaler counter ko sirf ek tick pass karta hai har pulses ke liye.
KYUN: Slow kiye bina, ek 72 MHz counter apni poori chadhaai microseconds mein complete kar leta — servo ya LED ke liye bahut fast. Prescaler set karta hai ki har tick kitni "chunky" hogi.
PICTURE: Left side par fast clock pulses ek "divide by " gate se funnel hokar right side par slower, evenly spaced ticks banati hain.

Yeh tick-time Clock Tree and Prescalers se link karta hai (jahan paida hoti hai) aur pin ko chip se bahar jaane ke liye GPIO and Alternate Functions on karna padta hai.
Step 7 — Edge cases walk karo (kabhi koi gap mat chhodna)
Jo formula aap par trust karte hain woh apne ends par test kiya hua hota hai. CCR ko har extreme par set karo aur picture padhein.
KYA HAI / KYUN: Yeh teen panels prove karte hain ki formula dono ends par aur beech mein theek behave karta hai — koi surprise value nahi aa sakti jo humne nahi dikhaayi.
PICTURE: Teen stacked square waves — flat LOW, half-and-half, flat HIGH — har ek mein HIGH span mark karta hua ek accent bar.

Ek-picture summary
Upar sab kuch, compressed: climbing dot, ceiling ARR, threshold CCR, uske neeche pin, aur jo duty fraction produce hoti hai — sab kuch ek frame mein.

Recall Feynman retelling — ek dost ko explain karo
Sochiye ek lift jo ground floor se ARR floor tak chadhti hai, phir instantly neeche aa jaati hai aur dobara chadhti hai, hamesha ke liye. Diwar par ek marked floor hai, CCR. Hum ek lamp wire karte hain ek rule ke saath: lamp ON jab tak lift mark ke neeche ho, OFF jab woh mark par ya upar pahunche. Jaise lift upar jaati hai, lamp jalta hai; jis waqt lift mark ko cross karti hai, lamp bujh jaata hai; jab lift wapas ground par aa jaati hai, lamp phir jal jaata hai. Toh har round trip mein, lamp lower part mein ON rehta hai aur upper part mein OFF. Agar mark neeche hai, lamp mushkil se blink karta hai — dim. Agar mark upar hai, lamp almost poori ride ON rehta hai — bright. Brightness bas kitni trip mark ke neeche hai hai: CCR floor divided by total number of floors, aur total hai ARR+1 kyunki humne ground floor bhi count kiya. Woh ek ratio hi duty cycle hai — aur lift ne saara kaam kiya jabke hum baith kar dekh rahe the.
Connections
- Timers — PWM generation, input capture, output compare — parent note (words + more modes).
- Clock Tree and Prescalers — aur tick time kahan se aate hain.
- GPIO and Alternate Functions — wave emit karne ke liye pin AF mode mein honi chahiye.
- Interrupts and NVIC — compare/overflow events ISRs fire kar sakte hain.
- Motor Control and H-Bridges — duty motor speed set karta hai.
- Servo and ESC Control — isi wave ka pulse-width reading.
- Encoder Mode — counter position tracker ke roop mein use hota hai.