Hjälp med PWM-upplösning i PIC16F886

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Hjälp med PWM-upplösning i PIC16F886

Inlägg av Tottish »

EDIT: Länk till nedan omtalade datablad: http://ww1.microchip.com/downloads/en/D ... 41291E.pdf

God-dagens!
Håller på att mecka med PWM-modulen i PIC16F886 och behöver hjälp att tolka databladet.
I sektion 11.5.3 (PWM resolution) i databladet står det i tabellen för 8MHz-klocka att "maximum resolution@4.90kHz period=8 bits".
I exemplet för dessa frekvenser har dem dock satt prescaler till 4 och PR2 till 0x65 vilket genererar en upplösning på ca 6.74 bitar enligt formeln på samma sida.
Hur ska man ställa registren för att få 8 bitars upplösning på PWM-modulen?
Sätter jag prescalern till 1 och maxar PR2 så kommer jag ändå inte ner i 5kHz.


MVH
/Tottish
H.O
Inlägg: 5919
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Inlägg av H.O »

Är du ute efter exakt 8 bitars upplösning eller exakt 5000Hz?

0x65 är väl 101 decimalt så med formeln 11-4 får jag resultatet 8,67 bitar.

Testa med prescaler 1:4 och PR2 satt till 99. Du borde få 5000Hz.

Frekvens:
Enligt formel 11-1: (99+1) * 4 * (1/8000000) * 4 = 0,0002 eller 0,2mS eller 5kHz.

Upplösning:
Enligt formel 11-4: log (4*(99+1)) / log (2) = 8,64 bitar.

Då kan du sätta dutycycle registren till mellan 0 och 400 vilket ger dig 0-100% i steg om 0.25%.
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Inlägg av Tottish »

Helt rätt av dig H.O.
Vet inte hur jag räknade för att komma fram till det jag gjorde men rätt var det inte i alla fall.
Det som kändes övertygande var att min felräkning faktiskt stämde bra överens med det som jag fick fram när jag labbade. Detta ledde mig till att tro att jag tolkat databladet fel.
Hmmmmm....
Ska labba lite till och återkommer med resultatet.
Tack för hjälpen!

MVH
/Tottish

EDIT:
Nu tror jag att jag fått kläm på det. Jag tänkte fel igår. Tänkte att om man bara har säg 8 bitar så kommer bara de 8MSb att räknas men det blir ju de 8LSb.
Tack för rättandet av min felräkning H.O!

MVH
/Tottish
Skriv svar