Hjälp med att avgöra puls. Ckod

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Hjälp med att avgöra puls. Ckod

Inlägg av newbadboy »

Jag har en pic med tre ingångar a,b,c och två utgångar d,e.

Det finns två alternativ.1

1Antingen pulsar det på både a och c samtidigt med ca 1hz, och då ska utgångarna d och e pulsa
2Eller så kommer det en logisk etta på a,b,c och då ska d och e vara en fast 1a.

Problemet är bara att när det kommer logiskt 1a på a,b,c så är sker det en liten fördröjning. a och c kommer samtidigt medans b är lite fördröjd. Fördröjningen är ca T+/2 där T+ är längden av den positiva delen

Så jag vill helt enkelt maska ut för att kunna avgöra om det är alt1 eller alt2 som uppträder.
I alt1 gör det inget om jag tex missar första pulsen til utgången men till alt2 vill jag ha så lite fördröjning som möjligt.

Kolla på bilden nedan om det kanske är till ngn hjälp. har ritat hur jag eg önskar att utgång d och e ska reagera men i verkligheten blir det nog som sagt fördröjt

http://www.ladda-upp.se/bilder/ivywpzpwgpbs/
Användarvisningsbild
adent
Inlägg: 4242
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Hjälp med att avgöra puls. Ckod

Inlägg av adent »

Det verkar enkelt? Om de två alternativen är de enda möjliga:

Vi formulerar om det:

om b är låg så ska det som kommer på a eller b ut på d och e.
om a och c är höga och b låg kommer d och e att vara höga
tack vare villkoret ovan. Så fort b går hög ser man till att d och
e förblir höga och då har man tagit det andra fallet "redan innan"
det har hänt.

Hoppas jag lyckas få fram vad jag menar. Med risk för att du inte riktigt fått fram alla möjliga tillstånd så jag har misstolkat.

MVH: Mikael
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med att avgöra puls. Ckod

Inlägg av newbadboy »

Vad jag kan se har du rätt ja... måste fundera lite mer :) men det ser onekligen rätt ut..

ska bara se hur jag kan omsätta detta till kod :roll:


Det finns andra logiska kombinationer än de jag nämnt ovan men de är helt skilda och liknar inte alls dessa två alternativ som strular ihop.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Hjälp med att avgöra puls. Ckod

Inlägg av newbadboy »

I min iver att förenkla problemet för att det skulle bli lätt att förstå glämde jag bort helt två extra utgångar som skall vara med.

fixat en ny bild på hur det är tänkt att fungera. Nästan samma som innan men ändå inte. Kollar man på bilden nu är det nog tyvärr inte lika självklart för hur man ska göra? eller?

http://www.ladda-upp.se/bilder/pvdvbseqagrygv/
Användarvisningsbild
Icecap
Inlägg: 26622
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hjälp med att avgöra puls. Ckod

Inlägg av Icecap »

Det är inte svårt alls - men det betyder antingen att det kommer falsknivåer eller att responsen blir fördröjt minst en pulslängd.

Att - medelst en µC - känna av om en ingång pulser eller är stadig är inget svårt, det klaras på en pisskvart.
Att skapa en logisk koppling mellan fast nivå/pulsande är inget svårt heller.

Men om en ingång växlar nivå är det ju starten på en puls, alltså måste det väntas på att det kan avgöras om det är fast nivå eller pulsande som gäller. Och nu kommer det knepiga: vad ska hända under den tid?

Pulsandet kan enkelt kollas:
* Start en timer-interrupt med kanske 100Hz.
* Låt den interrupt kolla ingångarna.
- Om en ingång har samma nivå som förra koll räknas en räknar (A) upp (dock till ett maximalt nivå, kanske 150).
- Når räknaren det maximala nivån räknas den som fast nivå och ytterligare en räknare (B) nollställs.
- Om ingången byter nivå innan räknare A har nått max-nivån nollas räknare A och räknare B räknas upp ett steg (max till 2).

Nu kan man avgöra rimligt enkelt:
* Är räknare A == max-nivån är ingången stabil.
* Är räknare B > 1 är ingången pulsande.

Detta utförs för alla ingångar som såklart har var deras räknare. Vill man kan man låta interruptrutinen sätta lite flaggor som main-loop sedan kan stycka ihop enl. de logiska regler som krävs.
Skriv svar