Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięjeszcze raz impulsator, enkoder itp.
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witka !
Po długich i mozolnych próbach z impulsatorem (no name, podobny do tego taniego z oferty AVT) udało mi się go odpalić .
Wszystkie kody obsługi jakie znalazłem w necie (łącznie z moim z przed paru lat )
niestety nie dawały sobie rady .
W sumie impulsator generuje przebieg w kodzie Graya, ale stany spoczynkowe to na zmianę 11 (3) i 00 (0), a w momencie przejścia generuje na zmianę 10 (2) i 01 (1).
Najlepiej sobie radził kod z noty AN #115 MCS.
Niestety pojawiało się dużo błędnych odczytów kierunku, gubił impulsy ale podstawową niedogodnością było zlicznie co drugi impuls.
Niewielka przeróbka kodu umożliwiła poprawną pracę impulsatora.
A oto poprawiony kod :
'impulsator podpięty do int0 i int1 (pind.2 i pind.3 AT90S8535) z zew. rezystorami podciągającymi 10k.
'Pomiędzy masę a wyprowadzenia impulsatora przylutowane kondensatory 100N.
config int0 = falling
config int1 = rising
config potrd = input
dim value as byte
on int0 imp0
on int1 imp1
enable int0
enable int1
enable interrupts
do
............
............
loop
imp0:
if pind.2 <> pind.3 then
incr value
else
decr value
end if
return
imp1:
if pind.2 <> pind.3 then
decr value
else
incr value
end if
return
Powodzenia w bojach z impulsatorami !!!!
Pozdrawiam JJMafia
Po długich i mozolnych próbach z impulsatorem (no name, podobny do tego taniego z oferty AVT) udało mi się go odpalić .
Wszystkie kody obsługi jakie znalazłem w necie (łącznie z moim z przed paru lat )
niestety nie dawały sobie rady .
W sumie impulsator generuje przebieg w kodzie Graya, ale stany spoczynkowe to na zmianę 11 (3) i 00 (0), a w momencie przejścia generuje na zmianę 10 (2) i 01 (1).
Najlepiej sobie radził kod z noty AN #115 MCS.
Niestety pojawiało się dużo błędnych odczytów kierunku, gubił impulsy ale podstawową niedogodnością było zlicznie co drugi impuls.
Niewielka przeróbka kodu umożliwiła poprawną pracę impulsatora.
A oto poprawiony kod :
'impulsator podpięty do int0 i int1 (pind.2 i pind.3 AT90S8535) z zew. rezystorami podciągającymi 10k.
'Pomiędzy masę a wyprowadzenia impulsatora przylutowane kondensatory 100N.
config int0 = falling
config int1 = rising
config potrd = input
dim value as byte
on int0 imp0
on int1 imp1
enable int0
enable int1
enable interrupts
do
............
............
loop
imp0:
if pind.2 <> pind.3 then
incr value
else
decr value
end if
return
imp1:
if pind.2 <> pind.3 then
decr value
else
incr value
end if
return
Powodzenia w bojach z impulsatorami !!!!
Pozdrawiam JJMafia
Właśnie po nieprzespanej nocy udało mi się wszystko uruchomić.
Kodzik sprawdzony, aktualnie bawię się pisaniem obsługi !!
Pzdr JJMafia
[ Dodano: 30-11-2006, 22:45 ]
No i mam chyba zaćmienie umysłu !!
Pytasz o jedno a ja o drugim !!
Niestety nie - nawet nie szukałem.
Możesz podpowiedzieć gdzie tego szukac ??
Pzdr. JJMafia
Kodzik sprawdzony, aktualnie bawię się pisaniem obsługi !!
Pzdr JJMafia
[ Dodano: 30-11-2006, 22:45 ]
No i mam chyba zaćmienie umysłu !!
Pytasz o jedno a ja o drugim !!
Niestety nie - nawet nie szukałem.
Możesz podpowiedzieć gdzie tego szukac ??
Pzdr. JJMafia
Hi, mam cuś nie tak z helpami. W helpie "z html" nie ma takiej instrukcji. W helpie " u góry ekranu" znajduję ENCODER ale nie mogę wejść do opisu instrukcji. Może help niekompletny; no problem; ściągnę go na nowo. Dobrze że wiem że taka instrukcja istnieje.
Czy enkoder musi "wisieć" na liniach INT0 i INT1, czy może na innych?
Przy okazji pytanie dodatkowe: brakuje mi trochę pinów na ATMega8; czy na liniach służących do programowania (MOSI, MISO, SCK) można jeszcze coś "powiesić" - linie pracowałyby jako output sterując innymi kośćmi - czy to nie będzie się gryzło przy programowaniu?
Franek
Czy enkoder musi "wisieć" na liniach INT0 i INT1, czy może na innych?
Przy okazji pytanie dodatkowe: brakuje mi trochę pinów na ATMega8; czy na liniach służących do programowania (MOSI, MISO, SCK) można jeszcze coś "powiesić" - linie pracowałyby jako output sterując innymi kośćmi - czy to nie będzie się gryzło przy programowaniu?
Franek
Witam ponownie,
Pantera33 - próbowałeś tą moją procedurkę ??
Właśnie dlatego że żadna z procedur dostęnych w necie,
nie sprawdziła się, napisałem swoją i działa jak należy.
MW - niestety, ale funkcja enkoder nie działa prawidłowo.
Przy kręceniu w prawo - na zmiane liczy w górę i w dół.
Przy kręceniu w lewo - kierunek rozpoznaje poprawnie.
Niepoprawnie są też liczone impulsy.
Jeden skok impulsatora powoduje naliczenie 1 lub 2 impulsów.
Zwracam uwagę, że używam nietypowego impulsatora i dlatego
byłem zmuszony do napisania obsługi po swojemu.
I mam nadzieję że jeszcze komuś pomogłem.
Pozdrawiam JJMafia
Pantera33 - próbowałeś tą moją procedurkę ??
Właśnie dlatego że żadna z procedur dostęnych w necie,
nie sprawdziła się, napisałem swoją i działa jak należy.
MW - niestety, ale funkcja enkoder nie działa prawidłowo.
Przy kręceniu w prawo - na zmiane liczy w górę i w dół.
Przy kręceniu w lewo - kierunek rozpoznaje poprawnie.
Niepoprawnie są też liczone impulsy.
Jeden skok impulsatora powoduje naliczenie 1 lub 2 impulsów.
Zwracam uwagę, że używam nietypowego impulsatora i dlatego
byłem zmuszony do napisania obsługi po swojemu.
I mam nadzieję że jeszcze komuś pomogłem.
Pozdrawiam JJMafia
Można samemu napisać procedure odczytu enkodera. Wystarczy 1 przerwanie, reakcja na zbocze. W przerwaniu sprawdzic trzeba jaki jest stan drugiego wejścia. W zależności od wyniku albo zwiększać albo zmniejszac wskazanie.
Cos takiego:
on int0 przerwanie
drugi_sygnal alias pind.5
...
...
przerwanie:
if drugi_sygnal=1 then
incr licznik
else
decr licznik
end if
return
Cos takiego:
on int0 przerwanie
drugi_sygnal alias pind.5
...
...
przerwanie:
if drugi_sygnal=1 then
incr licznik
else
decr licznik
end if
return
Przykład JJMafi'ii działa dobrze. Obowiązkowo muszą być 100n. Dla M16 wystarcza wewnętrzne podciągnięcie. No niestety zużywa 2 przerwania. Co do drugiego przykładu kolegi Fredy to potrzeba 2 przeskoków impulsatora, bo nie jest wywoływane przerwanie dla jednego z wejść - to może się da obejść za pomocą diody. Aczkolwiek oba rozwiązania są dobre - nie gubią impulsów.
jeżeli chodzi o te małe impulsatory z avt to nieCo do drugiego przykładu kolegi Fredy to potrzeba 2 przeskoków impulsatora, bo nie jest wywoływane przerwanie dla jednego z wejść - to może się da obejść za pomocą diody.
wystarczy jeden przeskok i nie są potrzebne 2 przerwania, procedura Fredyego jest dla nich jak najbardziej OK
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości