سالک: هر رجیستر را نام ببر و بگو جی را تنظیم می کنه
عالی! حالا بریم سراغ قلب کارخانهی تولید PWM در میکروکنترلر ATmega32:
مهمترین رجیسترهای تایمر برای PWM (برای تایمر 0، 1 و 2)
️ 1. TCCRnA (Timer/Counter Control Register A)
تعیین نوع موج خروجی (مثلاً Normal, Fast PWM, CTC, Phase Correct PWM)
تعیین رفتار پایههای OCnA و OCnB (یعنی خروجی PWM)
️ 2. TCCRnB (Timer/Counter Control Register B)
انتخاب کلاک ورودی تایمر و پریاسکیلر (مثلاً بدون تقسیم، تقسیم بر 8، 64...)
در برخی حالات نوع موج هم در این رجیستر کنترل میشه (مثلاً در تایمر 1)
️ 3. OCRnA / OCRnB (Output Compare Register)
مشخص میکنه در چه لحظهای (مثلاً وقتی شمارنده به این عدد رسید)، خروجی تغییر وضعیت بده
این عدد دیوتیسایکل PWM رو تعیین میکنه
️ 4. ICRn (Input Capture Register) ← فقط برای تایمر 1
در حالت Fast PWM، میتونه پریود کامل موج (Top value) رو مشخص کنه
یعنی به جای اینکه تایمر تا 255 یا 65535 بره، تا مقدار ICRn بالا میره
برای ساختن PWM با فرکانس دلخواه خیلی مهمه!
️ 5. TCNTn (Timer/Counter Register)
شمارندهی اصلیه؛ هر لحظه مقدار فعلی تایمر رو نگه میداره
معمولاً خودت بهش کاری نداری، ولی میتونی بخونیش یا صفرش کنی
️ 6. TIMSK / TIFR (Interrupt Mask & Flag)
برای فعالسازی و بررسی وقفهها (مثلاً وقتی تایمر به مقدار خاصی رسید)

n در اسمها یعنی شماره تایمر:
برای تایمر 0: TCCR0A, OCR0A
برای تایمر 1: TCCR1A, OCR1A, ICR1
برای تایمر 2: TCCR2A, OCR2A
اگه بخوای سروو رو دقیق کنترل کنی، معمولاً از تایمر 1 استفاده میکنن، چون ۱۶ بیتی و قابل انعطافه