Tre olika insignaler med CCP
Tre olika insignaler med CCP
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?
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...
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...
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.
> 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.
> 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 ?
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 ?