Mål:
Mäta dutycycle på en puls med 31.5 KHz.
Det är för att mäta signalstyrkan (RSSI) på en RC mottagare vilken ges i detta format.
Då mycket utrustning vill ha en analog signal, så fixade jag en dutycycle till analog konverterare
med en SPI Potentiometer som reglerades utifrån dutycycle.
Problem:
Jag hade allt fungerande, men sedan ändrades koden för mottagaren (opensource projekt) så
att signalen kommer i 31.5KHz istället för tidigare 440Hz.
Det visar sig att min CCPM bara klarar att hänga med till 640Hz
Symptomet är att med kortare dutycycle så hänger den med i högre frekvens, så jag misstänker att
det hela har att göra med min timer inställning (TMR1) att göra.
Timer1 har en prescaler 1:1 (T1CON = 00000101), och jag hanterar mätning mellan stig och fall med interupt.
Nuvarande prescale är satt med trial'n error och jag ger mig fan på att timern rullar runt, men att jag har haft "tur" och kommit i synk, för nog fan borde man hinna med att sampla mer än 1KHz signal tycker jag.
Innan jag håller på att posta kod och greja tänkte jag kolla hur man BORDE tänka när det gäller timern.
Bara för att se om jag tänker rätt:
- MCU'n går i 8 MHz på intern OSC.
- TMR1 har en default prescale 1/4 från MCU klockan = 2MHz
- Med min satta prescale på 1:1 så borde TMR1 rulla om varje 32.7675 millisekund
- Med en signal på 31.5 KHz så blir pulslängden 31.5 uS.
Jag får det till att det borde funka
