Pocitanie impulzov z enkodera.
Moderátori: psichac, Moderátori
Pocitanie impulzov z enkodera.
Zdravim vas pani..
Potrebujem pocitat impulzy z enodera. Ma kanaly A, B a Z a procesor AVR. Spravil som si kratky program na jeho otestovanie, ale len kanal A, vyuzil som prerusenie, nacital som 1024 impulzov, ale potrebujem z neho dostat 4096, a neviem, ako sa to bezne robi. V helpe Bascomu som nasiel aj nejaky prikaz Encoder, ale narozumiem tomu. Nemate niekto nejaky kratky vzorovy programek, najlepsie z komentarom, z ktoreho by som odkukal?
Dakujem.
Potrebujem pocitat impulzy z enodera. Ma kanaly A, B a Z a procesor AVR. Spravil som si kratky program na jeho otestovanie, ale len kanal A, vyuzil som prerusenie, nacital som 1024 impulzov, ale potrebujem z neho dostat 4096, a neviem, ako sa to bezne robi. V helpe Bascomu som nasiel aj nejaky prikaz Encoder, ale narozumiem tomu. Nemate niekto nejaky kratky vzorovy programek, najlepsie z komentarom, z ktoreho by som odkukal?
Dakujem.
0
- dxr
- Ultimate člen
- Príspevky: 3968
- Dátum registrácie: 05 Aug 2013, 20:21
- Bydlisko: V strede nicoho
- Kontaktovať používateľa:
Re: Pocitanie impulzov z enkodera.
Vymenim priklad za trafo najlepsie aj s tlmivkou
vies preco to pisem .... uz to mam aj pripravene okomentovane caka sa na Mira
vies preco to pisem .... uz to mam aj pripravene okomentovane caka sa na Mira
0
Naposledy upravil/-a dxr v 26 Máj 2015, 16:39, upravené celkom 1 krát.
-
- Ultimate člen
- Príspevky: 1738
- Dátum registrácie: 11 Máj 2008, 00:00
- Bydlisko: Námestovo
- Vek: 34
Re: Pocitanie impulzov z enkodera.
Ja si predstavujem, že máš klasický enkóder, ktorého piny musíš pripojiť na procesor. Piny musia byť pripojené na procesor dva a nie jeden. A potom jeden pin pripojíš na prerušenie a keď nastane, prečítaš hodnotu aj na druhom pine. A máš nejaké dve čísla (10 alebo 11). No a takto si vieš zistiť aj smer točenia. S jedným pripojeným pinom to nezistíš.
-- Spojený príspevok 26 Máj 2015, 15:45 --
a keď vieš napočítať 1024 tak prečo nevieš napočítať aj viac? Keď sa dostaneš na 1024 tak počítaj ďalej .
-- Spojený príspevok 26 Máj 2015, 15:45 --
a keď vieš napočítať 1024 tak prečo nevieš napočítať aj viac? Keď sa dostaneš na 1024 tak počítaj ďalej .
0
Re: Pocitanie impulzov z enkodera.
Samozrejme, tak som to mal, asi som sa zle vyjadril. Neviem, ako to nazvat. Skratka neviem vyuzit to vzajomne posunutie oboch signalov o 90 stupnov, kde mam potom 4 cisla. Do jedneho smeru 00,01,11,10 a do opacneho 00,10,11,01. A samozrejme, ako ich dalej "spracovat".Piny musia byť pripojené na procesor dva a nie jeden. A potom jeden pin pripojíš na prerušenie a keď nastane, prečítaš hodnotu aj na druhom pine. A máš nejaké dve čísla (10 alebo 11). No a takto si vieš zistiť aj smer točenia. S jedným pripojeným pinom to nezistíš.
0
Re: Pocitanie impulzov z enkodera.
Maximální rozlišení se dosáhne, pokud se přerušení vyvolává každou hranou a testuje se při tom ten druhý signál. Není to implementačně úplně snadné. Když jsem toto řešil, použil jsem MCU, který úlohu umí hardwarově, přijde mi to z hlediska rizika ztráty impulsu značně bezpečnější.
0
-
- Ultimate člen
- Príspevky: 1738
- Dátum registrácie: 11 Máj 2008, 00:00
- Bydlisko: Námestovo
- Vek: 34
Re: Pocitanie impulzov z enkodera.
Nemáš štyri čísla, máš len dve čísla. Ty si musíš nastaviť prerušenie na nábežnú, alebo dobežnú hranu. Ak budeš mať nastavené prerušenie na dobežnú hranu, tak sa ti prerušenie zavolá, keď ti bude padať z log1 na log0 a v tomto okamihu si prečítaš hodnotu na druhom pine a ak tam bude log1 točíš napríklad doprava a ak tam bude log0 točíš doľava.
Jeden pin len zavesíš na prerušenie a budeš čítať hodnotu na tom druhom pine.
Toť príklad. Hádam to tam uvidíš .
Jeden pin len zavesíš na prerušenie a budeš čítať hodnotu na tom druhom pine.
Toť príklad. Hádam to tam uvidíš .
0
Re: Pocitanie impulzov z enkodera.
Martin dakujem, ale to co mi ty radis, je ten bezny sposob, to mam vyskusane. Myslim, ze Zaky spravne pochopil, o co sa mi jedna. Prave ten postup ma zaujima, prerusenie pri kazdej hrane, cim sa dosiahne vyssi pocet impulzov, vacsie rozlisenie. Pridavam link na help z Bascomu, tam je to aj s tymi 4 cislami, ktore som spominal.
http://avrhelp.mcselec.com/index.html?encoder.htm
http://avrhelp.mcselec.com/index.html?encoder.htm
0
Re: Pocitanie impulzov z enkodera.
Použil jsem procesor Cypress PSOC4, jeho PWM periferie přímo umí hardwarově dekódovat módy 1x,2x,4x. Stačí si jen programově vyčítat hodnotu counteru a ošetřit si přetečení/podtečení. Lze takto jedním procesorem číst až 4 enkodéry najednou bez rizika ztráty pulsů, přičemž procesor může řešit nadřazenou úlohu, dekódování nebere žádný výpočetní výkon. Myslím, že čistě softwarově bude 4x režim dost boj. Popis periferie zde: http://www.cypress.com/?rID=78825
0