Sida 1 av 1
Bestämnd min. tid för puls
Postat: 4 maj 2004, 21:39:48
av Premix
Jag ska med en pic läsa av pulser på ett par ben.
Detta ska göras löpande i en loop dvs jag vill inte stå kvar med ett count kommando (pic basic).
Men låt säga att pulsen in kanske är 1ms men jag läser bara av med 2ms mellanrum, då kan jag ju missa pulsen.
Vad kallas en sådan koppling som håller kvar puls-in till en betämd tid?
Dvs. 1ms hålls kvar till 2ms
Om det kommer in en puls till under tiden kretsen håller nivån så spelar det mig ingen roll.
Är det någon som har ett bra schema över något liknande så vore jag tacksam.
Ha det
Postat: 4 maj 2004, 22:26:33
av Melker
Vet inte om jag tänker rätt nu, men du kanske kan använda ett minne (JK-vipa eller liknande) som sätts när knappen trycks ned och resetas så fort PICen läst av det?
Postat: 4 maj 2004, 23:03:44
av Premix
Ingen dum ide, men jag tror jag hittade vad jag sökte.
http://www.play-hookey.com/digital/timer_555.html
Borde väll funka.. ska testa snart.
Postat: 5 maj 2004, 00:56:05
av cyr
Det finns också interrupt på PICen som du kanske kan använda istället för extra hårdvara. Alltså istället för att du sitter i en loop och kollar efter pulser med jämna mellanrum så hoppar PICen själv till din interrupt-rutin när pulsen kommer...
Postat: 5 maj 2004, 10:30:33
av Premix
Interupt kommer inte att funka då det är mer än ett ben som kommer användas + att jag med viss repeterbarhet måste köra igen koden.
men tack för förslaget.
Postat: 5 maj 2004, 10:34:27
av cyr
Inte ens "PORTB interrupt on change" ?
Det är 4 pinnar den reagerar på om jag minns rätt...
Postat: 5 maj 2004, 13:09:22
av $tiff
>> cyr
Är det inte samma sak egentligen, fast på två lite olika sätt? Man måste väl i programmet hela tiden kolla interrupt-flaggan?
Jämför det med att istället kolla I/O-registerna, det kan inte vara så stor skillnad?
Postat: 5 maj 2004, 13:25:08
av matseng
Nej, sätter man ett interrupt-on-change på en pinne så anropas en rutin automatiskt när pinnen förändras. I interrupt-rutinen så kollar man sedan vilken pinne det var som orsakade interruptet och agerar på resultatet. Så det behövs ingen pollning.
Postat: 5 maj 2004, 13:25:36
av danei
Du får ju ett avbrott. Du behöver inte kolla den alls annars.
Postat: 5 maj 2004, 18:07:27
av cyr
Om man bara hade en pinne med pulser på (eller om man hade en egen interrupt-flagga för varje pinne) så kunde man även köra varianten att polla flaggorna.
Skillnaden mellan att polla pinnarna direkt blir ju att flaggan sätts även av en jättekort puls, och det räcker att du läser av flaggan innan *nästa* puls kommer (till skillnad från direkt poll då du måste läsa av innan första pulsen är klar).
Men det är nog bättre med en interrupt-rutin som direkt kan läsa av pinnarna och vidta åtgärder...
Postat: 5 maj 2004, 22:02:33
av ristomemo
Antar att pulsen du ska detektera är en positiv puls. Invertera den så pulsen blir negativ, kör in den negativa pulsen i DS1233
http://www.elfa.se/elfa-bin/setpage.pl? ... 009443.htm
Ut får du en 300ms lång negativ puls.
En av alla möjliga lösningar.
Postat: 5 maj 2004, 22:25:57
av Premix
ok många ideer, perfekt.
Ska erkänna att jag inte är den skarpaste på pic, men jag ska dra grundidén så att vi snackar samma grej.
Det kanske funkar med en interrupt men jag är inte så bekant med det ännu så guida mig gärna.
Projekt "flight recorder".
Ett ben tar in antalet tändpulser på en bil.
Ett annat antal hjulvarv(kardan) ,genom givare.
Ev ett för att känna av när du kör förbi en ir sändare.
Jag har tänkt så här:
Läs av ben 1 (viss kodning kommer fixas för att inte dubbeltrigga)
Läs av ben 2
Läs av ben 3
Gör detta under typ 0.5s ,skriv sedan in antalet pulser per ben till ett eeprom eller liknande. (tid tot med eeprom 0.5s)
Om o om igen.
Sedan är det tänkt att jag i en PC ska räkna ut varvtal, hastighet , sträcka, snitt hastighet osv.
Men funkar det med interrupt ,vet jag att man har läst i 0.5s.?
Eller varierar tiden med hur många interrupt man får?
Inte så kunnig och givetvis tacksam för alla ideer
Postat: 5 maj 2004, 23:02:22
av mrmike
Du kan låta en av picens timerar interrupta efter 0,5s.
Postat: 6 maj 2004, 00:20:07
av Premix
Mrmike, skitsmart hade inte tänkt på det.
tack alla för tips och hjälp, nu hoppas jag att jag ska ta mig vidare.