21.12.2013 Views

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Lösta programexempel med PIC16F628<br />

Indirekt frekvensmätning, periodtid,<br />

multiperiodtid<br />

Frekvensmätning sker ofta indirekt som periodtidsmätning ( T ), varefter frekvensen<br />

( f ) beräknas som f = 1/T. Periodtiden är tiden mellan två lika flanker hos<br />

mätsignalen. Frekvensmätning kan ske inom ett brett intervall eftersom Timer1 har en<br />

Prescaler och det dessutom är möjligt att programmera mätning av, varje eller var<br />

fjärde eller var åttonde flank (multiperiodmätning).<br />

Vi antar att f osc = 4 MHz, och att Timer1 räknar T1CK = f osc /4 = 1 MHz.<br />

Timer1-ticket blir då 1 µs och Timer1-perioden 2 16 ×1µs = 66 ms ( 15,3 Hz ).<br />

Om en 100 kHz-signal ( med periodtiden 10 µs ) inkommer på CCP-pinnen hinner det<br />

gå 10 Timer1-tick mellan två positiva flanker. Om det i stället är en 10 kHz-signal går<br />

det 100 Timer1-tick mellan två flanker, och vid en 1 kHz-signal blir det 1000<br />

Timer1-tick. Vid 100 Hz blir det 10000 Timer1-tick.<br />

Är frekvensen 10 Hz hinner Timer1 räkna mer än ett helt varv mellan två flanker.<br />

Vid höga frekvenser som tex en 100 kHz-signalen kan man öka mätupplösningen<br />

genom att bara registrera var åttonde flank ( det går då 80 Timer1-tick mellan de<br />

registrerade flankerna). Vid låga frekvenser som 10 Hz-signalen måste man antingen<br />

hålla räkning på hur många gånger Timer1 räknar runt, eller låta Timer1 räkna<br />

långsammare genom att använda prescalern, tex. 1/8.<br />

30

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!