PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
buzzeer
Inlägg: 14 Blev medlem: 9 mars 2007, 08:50:15
Ort: finland
Inlägg
av buzzeer » 18 mars 2007, 22:52:38
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 » 18 mars 2007, 23:08:15
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 » 18 mars 2007, 23:37:29
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 » 18 mars 2007, 23:41:33
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 » 19 mars 2007, 08:05:01
Tack, nu borde de fungera lite bättre
buzzeer
Inlägg: 14 Blev medlem: 9 mars 2007, 08:50:15
Ort: finland
Inlägg
av buzzeer » 19 mars 2007, 21:08:45
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 » 19 mars 2007, 21:54:46
En *PIC* har inte en susning om vad "decimaler" är för något.
Icecap
Inlägg: 26659 Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark
Inlägg
av Icecap » 20 mars 2007, 07:22:30
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 » 20 mars 2007, 13:03:01
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 » 21 mars 2007, 13:36:10
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 » 21 mars 2007, 13:53:53
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 » 21 mars 2007, 14:08:55
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?
Icecap
Inlägg: 26659 Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark
Inlägg
av Icecap » 21 mars 2007, 19:10:31
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 » 22 mars 2007, 12:45:01
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.
Icecap
Inlägg: 26659 Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark
Inlägg
av Icecap » 22 mars 2007, 12:47:54
Javisst, det kan jag. Var ska jag skicka fakturan?