Maskinnära programmering 6B2266
Maskinnära programmering 6B2266
Maskinnära programmering 6B2266
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Funktion<br />
• Timer2 räknar tills den når talet i periodregistret PR2, då 0-ställs timern och<br />
samtidigt 1-ställs en SR-låskrets. Detta påbörjar PWM-pulsen på CCP-pinnen.<br />
• Nu laddas de 10 bitarna "DutyTime" från "CCPRL×4 + CCPX×2+ CCPY" till<br />
komparatorn.<br />
• 10-bitars komparatorn upptäcker när Timer2 räknat fram till talet för<br />
DutyTime.<br />
• Då 0-ställs SR-låskretsen och PWM-pulsen avslutas på CCP-pinnen.<br />
• När Timer2 räknat fram till periodvärdet 0-ställs timern på nytt och förloppet<br />
upprepas - allt detta utan medverkan från processorn.<br />
PWM-frekvens, upplösning och DutyCycle<br />
För upplösningen gäller:<br />
För DutyCycle gäller:<br />
Exempel (med PIC16F628)<br />
Antag att vi har en PIC16F628 med 10 MHz klocka. Högst upplösning får man om<br />
Timer2 räknar fullt, dvs PR2 = 255 och prescalern delar med 1/1 ( ställs in med<br />
T2CON ). Prescalern kan ställas in på: 1:1, 1:4, 1:16 {1 4 16}.<br />
f PWM = 10⋅10 6 / (256×4×1) = 9766 Hz<br />
Upplösning = log(10000000/9766) / log(2) = 3/0,3 = 10 bitar<br />
Om denna PWM-frekvens kan accepteras och om man nöjer sig med 8 bitars<br />
upplösning blir <strong>programmering</strong>en av DutyCycle enkel:<br />
37