Sida 1 av 3
Tre olika insignaler med CCP
Postat: 5 april 2006, 17:22:35
av ankan
Om jag har tre olika insignaler och vill veta pulslängden på dem. Måste jag då använda en PIC med 3st CCP eller kan jag tex använda mig av CCP-porten för alla 3 och sedan checka av vilken av insignalen som flaggar genom att låta dem sitta på ett varsit ben och kolla vilka förändringar som har gjorts sedan förra flaggningen?
Postat: 5 april 2006, 17:24:39
av strombom
Om de inte kommer samtidigt låter ju det som en bra idé!
Postat: 5 april 2006, 17:30:34
av ankan
Känns som att man skulle lika gärna kunna använda interupen på RB portarna och sedan bara kolla klockan varje gång.. Capture funktionen behöver man väll inte trigga igentligen?
Postat: 5 april 2006, 17:34:17
av sodjan
Min/max längden på pulserna ?
Tiden mellan två pulser ?
Utan att veta detaljerna ovan, så verkar 3 st IOC pinnar enklast.
Postat: 5 april 2006, 17:34:26
av Icecap
Det beror ju på upplösningen och hur noga du vill ha tiden.
Postat: 5 april 2006, 17:40:48
av ankan
ungefär:
1,7 ms
2,3 ms
4,3 ms
6 ms
4st var det förresten...
Postat: 5 april 2006, 19:17:08
av sodjan
Och de kommer helt oberoende av varandra ?
Finns det "risk" att två flanker på två olika "linjer"
kan komma med väldigt kort intervall.
T.ex "ettan går hög" och sedan 100 ns senare, "tvåan går hög" ?
Eller hur ser den totala bilden ut ?
Med lite tanke bakom hur man läser IOC interruptet, så
antar jag att det ska gå att hantera, men att ha hela bilden
underlättar...
Postat: 5 april 2006, 19:42:57
av ankan
Vad är IOC?
Risken finns nog eftersom signalerna inte är synkade med varandra utan de kommer och går. Capture verkar nästan lite onödigt när jag tänker efter. Man kan lika gärna köra RB-interup och kopiera timerns värde. Eller har jag missat något?
Postat: 5 april 2006, 21:15:24
av sodjan
IOC = Interrupt On Change.
> Man kan lika gärna köra RB-interup och kopiera timerns värde. Eller har jag missat något?
Nja, med den "vanliga" interrupt ingången måste du välja vilken
flank som skall ge interrupt, IOC ger interrupt på båda.
Notera bara att medan du hanterar en "change" på en pinne, så kan
du få ett "change" på en annan, så du måste antagligen fundera lite
extra på hur pinnarnas läge kollas. Det finns (i alla fall med IOC på
vissa modeller) en liten risk att man missar en flank om den inträffar
under en viss tidpunkt i samband med att porten läses (d.v.s gör
en reset en "change-condition"). Jag minns inte vilka modeller det var,
men det fanns/finns en varning i delen som handar om IOC.
Postat: 5 april 2006, 21:21:27
av ankan
Känns som att IOC är bättre att satsa på än CCP.
Kan ju kopiera timerns värde bara. Dock kan de bli lite knepigt när timern har gått runt.
Postat: 5 april 2006, 21:35:28
av sodjan
> Kan ju kopiera timerns värde bara.
Ja, en gång vid (t.ex) upp-flank och en gång vid ner-flank och sedan
bara räkna intervallet därimellan. Det blir två olika räkneoperationer
beroende på om räknaren har "slagit runt" (timer overflow) under
tiden mellan flankerna.
Enklast vore om det fanns en tidpunkt där timern kan
nollställas, men det kanske är svårt eftersom alla pulserna
kommer helt oberoende av varandra !?
Förresten, en viktig sak, vilken upplösning behöver du i mätningen ?
Postat: 5 april 2006, 21:44:36
av ankan
Bara så att jag kan urskilja periodlängderna jag skrev tidigare.
1,7 ms
2,3 ms
4,3 ms
6 ms
Postat: 5 april 2006, 21:55:27
av sodjan
Jo
Men, med vilken *** upplösning *** ?
+/- 0,1 ms ?
+/- 0,01 ms ?
+/- 1 us ?
Eller vänta !!!
Menar du att du *VET* att du enbart får pulser med just de längderna ?
Om det är så, så är det ju en helt annan sak !
Postat: 5 april 2006, 21:58:07
av ankan
Det är bara de längderna jag är intresserad av och borde komma in.
Postat: 5 april 2006, 22:15:31
av Icecap
Men det säger fortfarande inget om upplösningen.
T.ex. 1,7ms.
Är det OK med 1,69ms?
1,71ms?
osv......
Eller: 1,7ms ±HUR MYCKET?