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ę

Encoder i Atmel

kamilcgi
-
-
Posty:4
Rejestracja:20 paź 2003, o 23:46
Lokalizacja:Kobyłka
Kontaktowanie:
Encoder i Atmel

Postautor: kamilcgi » 10 gru 2003, o 11:48

Witam,
Chce podlaczyc encoder o rozdzielczosci 1000 imp./obrot do procka - mysle o 2313 bo chce wykorzystac go jako licznik. Problemem jest predkosc dzialania przerwan. Po napisaniu prostego programu, w ktorym na jedno przerwanie podpialem kanal A enkodera zas na inny port kanal B (przesuniety o 90 stopni w fazie wzgledem A), powstja nastepujace problemy: uklad za wolno liczy, gubi sie i na dodatek nie potrafi w trakcie wykonywania przerwania sprawdzic stanu portu do ktorego podpiety zostal kanal B. Przerwanie jest realizowane na opadajacym zboczu sygnalu z A.

Max czestotliwosc wysylanych przez enkoder impulsow to okolo 3kHz

Zastanwiam sie:
- czy wersja demo Bascoma ma jakis bug i zle kompiluje na jezyk maszynowy (zbyt dlugie ciagi operacji)
- czy w takim razie program nalezy napisac w asemblerze

Do programowania procka wykorzystuje programator oparty jedynie na porcie LPT plus kilka rezystorow i kondensatorow. Jest to uklad recznej roboty znaleziony gdzies w sieci rzekomo oparty na projekcie z EP.

Z gory dzieki na pomoc

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Postautor: ZbeeGin » 10 gru 2003, o 19:05

Kompilatory z wersji DEMO i FULL (O TAKIM SAMYM NUMERZE WERSJI!!!) nie różnią się zasadniczo, więc o błędach teoretycznie nie ma mowy.

Tak. Wypadałoby program napisać w asemblerze. Bascom nie jest zbyt efektywnym kompilatorem.
Przerwania w Bascom szczególnie się "wleczą" się gdyż program odkłada masę rejestrów na stos. Można to wyłączyć przez dodanie klauzury NOSAVE, ale i tak treść przerwania powinno się wtedy napisać w asemblerze.

kamilcgi
-
-
Posty:4
Rejestracja:20 paź 2003, o 23:46
Lokalizacja:Kobyłka
Kontaktowanie:

Enocder itd.

Postautor: kamilcgi » 10 gru 2003, o 22:35

Wielkie dzieki. W takim razie kolejne pytanie, czy jest jakis programik - kompilator do AVR by moc pisac w asemblerze. Moj programator oparty jest na prostej konstrukcji pod LPT.

zysiu
-
-
Posty:19
Rejestracja:14 lis 2003, o 01:38
Lokalizacja:Bydgoszcz, obecnie Koszalin
Kontaktowanie:

Postautor: zysiu » 11 gru 2003, o 01:10

Jesli nie masz przekonania do asm to napisz sobie program w jezyku c. Proponuje Codevision albo AVRGCC. W c chodza szybko przerwania, a przesiadka z Bascoma na c bedzie mniej bolesna niz w przypadku asm.

MDz
-
-
Posty:365
Rejestracja:29 mar 2003, o 13:35
Lokalizacja:Warszawa
Kontaktowanie:

Postautor: MDz » 11 gru 2003, o 13:22

Alternatywnie możesz wykorzystać LS7166 czyli specjalizowany, 24bitowy licznik, przeznaczony właśnie do zliczania impulsów z enkoderów:
http://www.wobit.com.pl/download/pdf/ul ... ls7166.pdf
Do kupienia w Wobicie.

--
MDz

Awatar użytkownika
ucy74
-
-
Posty:100
Rejestracja:6 sie 2003, o 21:04

Postautor: ucy74 » 11 gru 2003, o 15:18

Na stronie Bascom'a jest aplikacja bodajże AN115. Jest to licznik do enkodera z myszki. Przerobiony działa mi z enkoderem 10K impulsów i jeszcze wyświetla wynik na LCD i printuje.

kamilcgi
-
-
Posty:4
Rejestracja:20 paź 2003, o 23:46
Lokalizacja:Kobyłka
Kontaktowanie:

Postautor: kamilcgi » 11 gru 2003, o 22:15

Wlasnie sprawdzalem ten projekt ale u mnie nie chce chodzic. Mozesz mi przeslac mailem schemat Twojego urzadzenia? Walsnie na podstawie tego projektu prowadzilem swoje dzialania.
THX

Awatar użytkownika
ucy74
-
-
Posty:100
Rejestracja:6 sie 2003, o 21:04

Postautor: ucy74 » 12 gru 2003, o 17:53

eee tam schemat...
Jeżeli używasz konkretnego enkodera a nie części z myszki to można wywalić "szmity" z wejścia. Układ z tej aplikacji (AN 115) zlicza rosnące i opadające zbocza sygnału z enkodera. Czyli liczy razy dwa. Jeśli masz enkoder 1K, to chyba nie musisz liczyć obydwu zboczy sygnału. Czyli, nie trzeba używać obydwu przerwań.
1. Na pierwsze przerwanie (INT 1) podajesz opadające zbocze fazy A z enkodera.
2. Na pind4 podajesz sygnał fazy B enkodera.
3. W przerwaniu INT 1 sprawdzasz stan na pind4. Jeśli jest 1 to zmniejszasz licznik impulsów, jeśli nie to go zwiększasz.
4. Jeśli twój enkoder daje jeszcze impuls przy przejściu przez 0 to możesz go podłączyć do INT 0 i wyzwalać rosnącym zboczem sygnału. Zerowe przerwanie (INT 0) zeruje licznik impulsów.

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Re: Enocder itd.

Postautor: ZbeeGin » 15 gru 2003, o 12:38

W takim razie kolejne pytanie, czy jest jakis programik - kompilator do AVR by moc pisac w asemblerze.
Jako kompletne środowisko dla asemblera to jest firmowe AVR Studio (do ściągnięcia ze strony Atmela). Można nim także symulować programy pisane w Bascomie (Polecam gdy nie da się czegoś zasymulować w Bascom - np. Config Servos, licznik w trybie PWM itd.) czy wspomiane w dalszych postach AVRGCC.

Do programu w Bascomie możesz także bezpośredno dodawać instrukcje mnemoniczne, nawet nie stosując dyrektyw $ASM i $END ASM. Po prostu piszesz (przykładowo)

Kod: Zaznacz cały

OUT 0x21,R10
i kompilator to wplata.

p.s. Lepiej śćiągnij sobie AVR Studio 3.56, gdyż AVR Stuidio 4(RC1) niekiedy nie potrafi się "dogadać" z Windowsami - przestaje kompilować kod :-(
Ostatnio zmieniony 21 gru 2003, o 20:31 przez ZbeeGin, łącznie zmieniany 1 raz.

kamilcgi
-
-
Posty:4
Rejestracja:20 paź 2003, o 23:46
Lokalizacja:Kobyłka
Kontaktowanie:

Postautor: kamilcgi » 15 gru 2003, o 21:14

Dzieki, zaczalem pisac w AVR Studio 4 i jak na razie jest chyba OK.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 37 gości