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.
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