Bestämnd min. tid för puls

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Premix
Inlägg: 142
Blev medlem: 15 april 2004, 21:58:05
Ort: Trollhättan

Bestämnd min. tid för puls

Inlägg 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
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg 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?
Premix
Inlägg: 142
Blev medlem: 15 april 2004, 21:58:05
Ort: Trollhättan

Inlägg 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.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg 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...
Premix
Inlägg: 142
Blev medlem: 15 april 2004, 21:58:05
Ort: Trollhättan

Inlägg 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.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Inte ens "PORTB interrupt on change" ?

Det är 4 pinnar den reagerar på om jag minns rätt...
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg 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?
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg 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.
danei
EF Sponsor
Inlägg: 27419
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Du får ju ett avbrott. Du behöver inte kolla den alls annars.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg 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...
ristomemo
Inlägg: 1028
Blev medlem: 29 mars 2004, 14:12:18

Inlägg 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.
Premix
Inlägg: 142
Blev medlem: 15 april 2004, 21:58:05
Ort: Trollhättan

Inlägg 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
Användarvisningsbild
mrmike
Inlägg: 301
Blev medlem: 29 oktober 2003, 20:40:12

Inlägg av mrmike »

Du kan låta en av picens timerar interrupta efter 0,5s.
Premix
Inlägg: 142
Blev medlem: 15 april 2004, 21:58:05
Ort: Trollhättan

Inlägg 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.
Skriv svar