 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Luksy Član

Pridružen-a: Sob 24 Dec 2011 22:33 Prispevkov: 51 Aktiv.: 0.31 Kraj: Maribor
|
Objavljeno: Ned Jun 16, 2013 10:01 pm Naslov sporočila: Merjenje časa v PIC-u |
|
|
Nevem, če sem se pravilno izrazil v naslovu, bom kar tukaj opisal problem.
Torej izdelujem robosleda z možnostjo izogibanja oviram. Pogon bo preko servomotorčkov z odstranjeno elektroniko, črti bo sledil z IR senzorji, imam pa še ultrazvočni merilnik razdalje HC-SR04.
Tukaj nastane mali problem. Priklopljen imam triger na navadni digitalni vhod, medtem ko imam echo na CCP oz. PWM modul. Signal sprožim s trigerjem na 10us, zdaj pa bi ga moral še prebrati echo sihnal, oz. sprožiti časovnik ko pošljem triger in potem ko sprejmem signal.
Ne sprašujem za celotno kodo, zanima me samo, kako bi sprožil časovnik - točno kateri ukaz in kako ga potem prekinil, da bi lahko prebral kodo. Kot sem napisal imam zato rezerviran CCP modul.
Hvala za vaše odgovore  |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Ned Jun 16, 2013 10:37 pm Naslov sporočila: |
|
|
Nisi napisal s čim pišeš programe.
Ni mi popolnoma jasno kako imaš zadeve priključene, shema bi bila bolj uporabna. Se pa to dela nekako takole. Sprožiš timer ki ga napolniš z vrednostjo, ki v odvisnosti s tvojo frekvenco procesorja povzroči zaključek po 10us. Takrat mora timer sprožiti prekinitev, ki jo ti obdelaš - izvedeš kar koli že pač hočeš da se izvede po 10us. Nato delaš naprej karkoli si počel prej. _________________ If at first you don't succeed, destroy all evidence that you tried. |
|
Nazaj na vrh |
|
 |
Luksy Član

Pridružen-a: Sob 24 Dec 2011 22:33 Prispevkov: 51 Aktiv.: 0.31 Kraj: Maribor
|
Objavljeno: Ned Jun 16, 2013 10:58 pm Naslov sporočila: |
|
|
Programsko kodo pišem z programom MikroC, shemo pa lahko prilepim iz eagla, če je potrebno.
V bistvu gre za to, da ko sprožim jaz meritev z trigerjem (10us signal) nekako vklopim časovnik ali števec ali kakorkoli bi se lahko temu reko in ga izklopim, ko dobim signal vrnjen iz echo-ta. Potem bi tisti signal prebral in izračunal razdaljo do objekta. |
|
Nazaj na vrh |
|
 |
MvE Član


Pridružen-a: Ned 04 Jan 2009 12:24 Prispevkov: 146 Aktiv.: 0.73 Kraj: MB
|
Objavljeno: Pon Jun 17, 2013 12:29 am Naslov sporočila: |
|
|
Poglej si Microchip tricks&tips na strani 3-4 pod naslovom Measuring Pulse Width. Pojdi točno po navodilih in bo delovalo.
Drugače pa tako da vklopiš timer takoj po poslanem pulzu ni najboljša rešitev. že zaradi tega ker ne veš koliko časa je preteklo "od trigerja do echota", kolikor vem je v datashet-u omenjenega senzorja enačba s katero preračunaš razdaljo glede na čas trajanja pulza.
Poiskusi rešiti, v skrajnem primeru imam še shranjeno kodo za HC-SR04 napisano (celo) v mikroC  |
|
Nazaj na vrh |
|
 |
Luksy Član

Pridružen-a: Sob 24 Dec 2011 22:33 Prispevkov: 51 Aktiv.: 0.31 Kraj: Maribor
|
Objavljeno: Pon Jun 17, 2013 4:23 pm Naslov sporočila: |
|
|
MvE je napisal/a: |
Poglej si Microchip tricks&tips na strani 3-4 pod naslovom Measuring Pulse Width. Pojdi točno po navodilih in bo delovalo.
Drugače pa tako da vklopiš timer takoj po poslanem pulzu ni najboljša rešitev. že zaradi tega ker ne veš koliko časa je preteklo "od trigerja do echota", kolikor vem je v datashet-u omenjenega senzorja enačba s katero preračunaš razdaljo glede na čas trajanja pulza.
Poiskusi rešiti, v skrajnem primeru imam še shranjeno kodo za HC-SR04 napisano (celo) v mikroC  |
Zdaj si mi pa dal za misliti. Če se prav spomnim so nam celo na faksu rekli, da merimo čas kdaj se signal vrne, pa vidim zdaj tukaj da temu ni tako, oziroma da obstaja še drugi način. Sedaj razumem princip.
Z 10us pulzom sprožim triger, potem čakam da se signal vrne in ko dobim na CCP vhodu 1 štejem čas, dokler ta ne upade nazaj na 0. Potem iz tistega izračunam dolžino?
Del programa za triger že imam, zdaj me zanima še samo kako namestim tisti timer, ki mi bo izmeril dolžino pulza? Je kakšen posebni ukaz za to v C jeziku? |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|