16F628 ccp och timer1

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
buzzeer
Inlägg: 14
Blev medlem: 9 mars 2007, 08:50:15
Ort: finland

16F628 ccp och timer1

Inlägg av buzzeer »

Jag använder en 16F628 och ccp modulen för att mäta frekvensen. Jag undrar om man kan ändra Prescaler för att kunna mäta lägre frekvenser tex. 10 Hz ? eller vad skall man göra för att timern inte skall räkna för "långt"? . Har sökt i datablad men det går ändast att ändra Prescaler i Timer0. Har läst om hur ccp modulen funger i capture mode och då står det att

"Configure the Timer1 prescaler so Timer1 with run TMAX(1) without overflowing"
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Kapitel och sida i databladet där TMAX nämns, tack.
buzzeer
Inlägg: 14
Blev medlem: 9 mars 2007, 08:50:15
Ort: finland

Inlägg av buzzeer »

det står i ett datablad som heter ccp tips and trics

ww1.microchip.com/downloads/en/DeviceDoc/41214a.pdf

på sidan 9 om "Measuring the Period of a Square Wave"
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK.
Tja, det borde vara T1CKPS1/T1CKPS0 i T1CON de menar...
buzzeer
Inlägg: 14
Blev medlem: 9 mars 2007, 08:50:15
Ort: finland

Inlägg av buzzeer »

Tack, nu borde de fungera lite bättre

:)
buzzeer
Inlägg: 14
Blev medlem: 9 mars 2007, 08:50:15
Ort: finland

Uträkning av RPM

Inlägg av buzzeer »

vad händer med decimaler när man räknar med en pic 16F628

T3 = ( 375 / T2 ) * 100 * 1000


om T2 = 5000 och T3 skall bli 7500

T2 är pulslängden och T3 är RPM
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En *PIC* har inte en susning om vad "decimaler" är för något.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Därför räknar man FÖRST:
unsigned long Mellanresultat = 375 * 100 * 1000 (=37500000)
T3 = Mellanresultat / T2;
Detta kan förkortas en del:
T3 = (unsigned long)37500000L / T2;
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det beror även en del på vad man igentligen menar med "7500".

Måste det bli 7500 +/- 0.5 ?
Eller är t.ex 7500 +/- 10 OK ?

Sen kanske man kan justera mättiderna så att konstanterna
i ekvationen blir t.ex jämna 2-potenser som är mycket enklare
att räkna med...
buzzeer
Inlägg: 14
Blev medlem: 9 mars 2007, 08:50:15
Ort: finland

Inlägg av buzzeer »

svaret skulle få vara 7500 +/- 0,5
buzzeer
Inlägg: 14
Blev medlem: 9 mars 2007, 08:50:15
Ort: finland

Inlägg av buzzeer »

Icecap skrev:Därför räknar man FÖRST:
unsigned long Mellanresultat = 375 * 100 * 1000 (=37500000)
T3 = Mellanresultat / T2;
Detta kan förkortas en del:
T3 = (unsigned long)37500000L / T2;

Måste man skriva det i assembler för PicBasicPro klarar väl inte av tal större än 16?
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

du menar 16-bitar? det är tal upp till (2^16)-1 = 65535...

EDIT: vad får dig att tro att den inte kan hantera större tal?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Det finns en anledning till att jag castade den till unsigned long som är en variabel som MikroC fint kan jobba med, det fungerar på min iaf!
buzzeer
Inlägg: 14
Blev medlem: 9 mars 2007, 08:50:15
Ort: finland

Inlägg av buzzeer »

kan du skicka T3 = (unsigned long)37500000L / T2 i assembler så skulle jag bli glad.

Jag vet inget kommndo i PicBasicPro som skulle göra samma sak.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Javisst, det kan jag. Var ska jag skicka fakturan?
Skriv svar