Brniesz w ślepą uliczkę. Zaprogramuj timer na zgłaszanie przerwań z częstotliwością rzędu 50..100 Hz. W przerwaniu timera sprawdzaj stan wejść enkodera, porównuj z poprzednim i reaguj.
Kolego andrzej_nied, Proponuję zastosować timer do generowania przerwań co około 2.5ms. W przerwaniu testujemy wejścia portów nie zawracając sobie głowy jakimiś 'drganiami styków'. Sprawdzone, pewne, proste. Czas 2.5ms dobrany jest tak aby zwykły enkoder 20-32imp./obrót obracany energicznie ręką nie zgubił impulsu (gdy czas pomiędzy przerwaniami za...
Nie widzę problemu. 32 enkodery to 64 bity, 8 rejestrów przesuwnych. Ponieważ SPI działa z max CLK/2 to masz przerwanie co 16 taktów. No ale przecież enkoder możesz czytać wolniej, w zależności od założonej max prędkości pewnie nie trzeba częściej niż co 1ms, czyli przerwania ci wyjdą co 0,25ms - kupa czasu. Dekodowanie enkoderów zrobiłbym w przerwaniu...
Rezystory powinny byc 10k. Sciag sobie biblioteke Rotary, masz gotowa i precyzyjnie dzialajaca obsluge enkodera, albo w przerwaniu, albo normalnie, do wyboru. Pozdr
a po co na końcu dawac komende #asm("cli")? Czy kompilator nie zrobi tego natychmiast sei ? Kompilator nie dodaje SEI. Flaga I w SREG jest automatycznie - sprzętowo, a nie programowo - czyli procesor sam ją ustawia w momencie wyjścia z procedury obsługi przerwania. Jednak obsługa przerwania nie kończy się w momencie zakończenia wykonywania kodu napisanego...
OK, mam nadzieję, że zegar ustawiłeś w opcjach. Ponieważ muszę wyjść, to dam Ci wskazówki, a resztę wymyślisz sam lub koledzy pewnie podpowiedzą. Gdy pierwsze zbocze drgania styku ustawi flagę przerwania i mikrokontroler wejdzie w funkcję jego obsługi, to zaraz na początku automatycznie kasuje (w tym mikrokontrolerze) flagę przerwania. Ty w swoim programie...
skoro wykrywasz zmiany w przerwaniu to można tam ustawić flagę (zmienną bool) i wtedy wyświetlać w głównej pętli i ją kasować. Prawdę mówiąc obsługa enkodera w przerwaniu od pinu też nie jest najlepszym pomysłem - chyba, że to enkoder optyczny. Lepiej użyć przerwania timera.
Jeszcze tu: http://www.elektroda.pl/rtvforum/topic18... Ale te zwykłe impulsatory stykowe to są paskudne. Drgania styków trwają dłużej niż czas wygaszania. Zrobiłem też impulsator z silnika krokowego- lepiej ale nie doskonale. Kierunek trzyma- ale co jakiś czas gubił kroki. Trzeba by zastosować jakiś co 7.5 stopnia- a nie mam. Jednak enkoder...
Witam. Mam maleńką prośbę. Czy mógłby ktoś z bardziej doświadczonych kolegów podpowiedzieć mi w następującej sprawie?? Mianowicie zliczam impulsy (na zew. przerwaniach) z enkodera i teraz chciałbym ruszyć silnikiem o ileś impulsów i aby ten samoczynnie sie zatrzymał. Problem w tym, że kod na pewno działa poprawnie ale niestety silnik ignoruje moj warunek...
Panowie, proszę o pomoc w poprawnym odczycie pozycji enkodera inkrementalnego przez Arduino. Czemu nie użyjesz gotowej biblioteki [url=https://github.com/PaulStoffregen/E... dla Arduino? Będziesz miał wtedy możliwość obsługi tego enkodera z przerwań (dla obu pinów enkodera lub tylko jednego ) lub też bez przerwań. Natomiast w tym [url=https://www.electroschematics.com/1...
1. z tego co piszesz to przerwanie o najwyższym piriorytecie będzie występowało z częstotliwością 4kHz. Zakładając że będziesz miał zegar 8MHz to na obsługe przerwania (zapisanie 8 bajtów) i obsługe innych przerwań będziesz miał: 8MHz/4kHz = 2000 cykli zegarowych co w przypadku procesorów typu RISC daje jakieś 1500 instrukcji. A to jest całkiem sporo....
Ja bym zrobił na przerwaniu + timer.
Witam, [syntax=c]attachInterrupt(ENK1, enkoder, FALLING);[/syntax] Na pinie 3 (PB3), nie ma przerwania INT, które włącza ta funkcja. Attiny85 ma przerwanie INT0 na pinie 2 (PB2), więc wystarczy pozamieniać piny, np. tak: [syntax=c]#define ENK1 2 #define ENK2 4 #define RST 0 #define DATA 1 #define CLK 3[/syntax] Później zmienić to: [syntax=c]attachInterrupt(ENK1,...
Po pierwsze enkoder możesz obsługiwać sprzętowo na XMEGA - w tym celu konfigurujesz event system na QDEC, a dowolny timer będzie ci zliczał impulsy i pracował jako enkoder. Co do transmisji USART - można paczki odbierać przez DMA, co jest wygodne, można to zrobić w oparciu o przerwania. W tym celu odblokowujesz przerwanie RXComplete sygnalizujące gotowy...
Witam, przecież wskazanie enkodera nie zależy od wartości na pinie, tylko od zmiany tej wartości. Teraz przerwanie wywołuje enkoder drugi, a Ty przy okazji zmieniasz pozycję dla pierwszego. Pozdrawiam.
Ja coś podobnego zrobiłem na ATmedze16. Podłączyłem enkoder pod wejścia generujące przerwania zewnętrzne i odpaliłem tajmer, zliczam różnice czasu między przerwaniami. W AT90S2313 masz przerwania zewn z PD2 i PD3. w obsłudze przerwania zewn. robisz: prędkość = (obwód_koła / rozdzielczość_tarczy_enkodera) / różnica_czasu_między_przerwaniami lub pomiar...
Witam. Enkoder na jednym przerwaniu [url=http://www.elektroda.pl/rtvforum/to...
powiedzieli mi, że to nie będzie działać... Ja się nie dziwię, że tak powiedzieli. A z ciekawości zapytam cię w oparciu o co tworzysz takie schematy? czy dobierasz elementy na nich oraz ich podłączenia tak całkiem przypadkowo? losowo? czy jak? Może jednak powinieneś całkowicie odwrócić problem i pytanie? czyli zapytać jak zrealizować wykrywanie czegoś...
(at)cinek_14 Jak rozumiem masz gotową płytkę, więc to implikuje jakie masz możliwości rozwiązania problemu. Koledzy upierają się, aby wszystko wrzucić do przerwań, co IMHO nie tylko nie rozwiązuje problemu, ale go całość niepotrzebnie komplikuje. Skoro już masz płytkę, to zrobienie 1-wire na UART raczej nie wchodzi w grę. Zresztą nie jest to potrzebne....
Odnoszę się do kodu z postu #24. Zmienne 'wyslij' oraz 'ilosc' powinny mieć kwalifikator volatile ponieważ są używane w programie oraz w procedurze obsługi przerwania. [syntax=c] volatile int ilosc; volatile bool wyslij; [/syntax] Wywołanie funkcji serial() w pętli loop() może być wielokrotnie "przerwane" przez obsługę przerwania ENKODER_ISR() jeżeli...
Przede wszystkim PCINT wymaga większego nakładu programowego. Przy włączonych wielu źródłach danego przerwania PCINT trzeba analizować, który pin zgłosił przerwanie i w jaki sposób się to odbyło (które zbocze). PCINT jest niżej w hierarchii przerwań, zatem na obsługę tego przerwania trzeba czasem dłużej poczekać (w zależności od konstrukcji programu)...
Nie, tego z obsługi enkodera. Jak sądę przejściu 0->top i top->0 towarzyszy przerwanie nadmiaru. Ew. można wykorzystać przerwanie compare z kanałów A-D.
chce się pozbyć enkodera ze względu na przerwania które potrafią zatrzymać mi prace całego układu Enkoder nie musi być obsługiwany w przerwaniach, ale podobnie, jak przyciski w pętli loop().
(at)krzysztofh Tak jak pisał kol. (at)BlueDraco wykorzystanie przerwań do obsługi impulsatora nie jest dobrym pomysłem. Raczej należałoby odpalać co określony czas przerwanie sprawdzające stan enkodera. Jeśli upierasz się na wykorzystaniu przerwań to należy dodać chociaż filtr RC na wejście.
bo dane na porcie szeregowym pojawiają się dopiero po zakończeniu ruchu( domyslam się, że to przez funkcję delay) i to w "bliżej nieokreślonym" języku. Tak jakbym pomylił się w określeniu prędkości w Serial. begin . Drugą częścią komplikacji jest to, że nie ma mam pojęcia ( gdy uda mi się rozgryźć enkoder ) jak opisać ograniczenie obrotu. To co jest...
... niestety nie znalazłem dobrej obsługi enkodera bez używania systemu przerwań (nie pozwala mi na to konstrukcja programu, gdyż innym przerwaniem obsługuję RS'a dla którego bardzo ważne są timingi) Bo dobra procedura enkodera musi być na przerwaniach. Spróbuj pogodzić jedne przerwania z drugimi, np. skracając czas obsługi przerwania do minimum, lub...
Przebiegi te są najprawdopodobniej delikatnie przesunięte w czasie... Można np ustawić (w uP) przerwanie na jeden z pinów, jeżeli w chwili przerwania na drugim 0 - obroty prawe, jeżeli 1 lewo.
Cóż, nie jest to znana mi metoda obsługi enkodera, ale chyba ciekawsza... Natomiast nie widzę tu operacji na przerwaniach.... To prawdopodobnie powoduje błędy, chyba, że się mylę. Ale enkodery to zawsze zagadka dla mnie były więc wiele nie pomogę.. Pozdrawiam.
Przykłady z pierwszego postu należy przenieść do działu "Jak nie pisać programów". Program w miarę poprawnie zadziała przy niskiej częstotliwości taktowania uC (brak eliminacji drżenia styków) lub gdy pętla główna będzie wykonywać się długo. Tak jak napisał (at)rs6000, enkoder najlepiej obsłużyć na przerwaniach.
Witam. Kupiłem wczoraj enkoder obrotowy EC11SP. Mam problem z odpowiednim podłączeniem go do mikroprocesora AVR. Szukałem jego specyfikacji technicznej, ale znalazłem tylko to: http://www.tokyoden.com/Drawings/EC-11SP... Niewiele ten plik mi pomógł. W dalszym ciągu nie wiem, do których pinów mam podłączyć VCC, GND. Przecieżna tym rysunku masz wszystko...
witam! To niestety nic nie daje, bo właśnie o to chodzi aby podczas wykonywania przerwania od timer2(enkoder), gdy Timer0 się przepełni, procesor powinien zawiesić przerwanie (enkoder) i przejść do obsługi przerwaia od Timer0(czekaj).
Witam Pisalem kiedys program do sterowania robotem (manipulatorem ) w bascomie. Zliczal on miedzy innymi impulsy z 3 enkoderow. i wszystko ladnie chodzilo: Fragment kody ktory zlicza impulsy z 3 enkoderow: //enkoder 1 Enk1_a Alias Pinb.0 Enk1_b Alias Pinb.1 //enkoder 2 Enk2_a Alias Pinb.2 Enk2_b Alias Pinb.3 //enkoder 3 Enk3_a Alias Pinb.4 Enk3_b Alias...
Panowie, Prosty temat. Dotychczas sprzętowo-software'ową obsługę enkodera robiłem w najprostszy sposób. Obie nogi z układem całkującym R/C (10k/100nF), jedna noga do przerwania zewnętrznego Falling, w przerwaniu czytamy stan drugiej i na tej podstawie detekcja kierunku. Ale w ATtiny 1604 działa to jakoś dziwnie: czyta co drugie "pyknięcie" enkodera....
zrob enkoder na przerwaniach. Nie warto bawic sie opcja enkoder bascoma. Gdzies na elektrodzie sa moje przykladu kodu ktore dobrze dzialaja Dodano po 11 http://www.elektroda.pl/rtvforum/topic14...
Pokazaną tam funkcję (ReadEncoder) po prostu zamień na ISR z przerwań enkodera, albo zrealizuj obie funkcje oddzielnie - tzw. wykorzystaj przerwania do wybudzania, a odczyt enkodera zrób niezależnie od przerwań pinu, np. w przerwaniu timera
Nie należy popadać w skrajności. Do elektroniki sterującej wystarcza 2.5mm2. Kłopot zaczyna się przy większych mocach zainstalowanych urządzeń. Drugi koniec przewodu wyrównującego potencjał to obudowy urządzeń i masy, ekrany. Tylko, że tu też nie ma jednoznacznej odpowiedzi gdzie się wpiąć. Czasem punkty masowe/ekranowe muszą zostać odizolowane (np....
Pin ICP nadaje się jeśli chcesz określić np. długość impulsu. Dla enkodera się nie nada - enkoder daje sygnał w kodzie Graya, ponieważ M8 nie ma sprzętowego dekodera tego kodu musisz to zrobić programowo. Aby nie czekać w pętli i ciągle nie sprawdzać czy coś się nie zmieniło wyjścia z enkodera trzeba podpiąć pod wejścia generujące przerwania. W handlerze...
Witam mam prośbę do osób bardziej doświadczonych w temacie mikrokontrolerów zrobiłem opisywane enkoder na przerwaniach z noty znalezionej na stronie bascoma i chodzi jak należy jednak chce zrobić to tak jak opisywałem wcześniej nie chce przerabiać urządzenia i przyznam się ze mam problem z wrzuceniem tego co kolega napisał powyżej do procka może ktoś...
ale wykorzystując przerwania dam rade podłączyć tylko jeden enkoder do atmegi8. Chyba że są tam przerwania o których nie wiem
Masz rację, nie ma, może to nie jest ten typ przerwania, który pasuje do enkodera poczytam w dokumentacji może coś znajdę jeszcze. Na razie nic nie znalazłem, może po prostu enkoder nie obsługuje przerwań i tyle. Posiedziałem jeszcze dziś nad tym wychodzi na to, że TIM8_UP_IRQHandler jest wywoływany jak pokrętło wraca do pozycji początkowej. Jak pokręcę...
Na Mega328 z KB RAM uruchamianie OS nie bardzo ma sens. Zrób wielowątkowość opierając cały program o maszynę stanów. Zapomnij, że istniej delay. Owszem, krótkich delay (mikrosekundy) w AVR przeważnie nie da się przeskoczyć ale nie zawsze. Na 1-Wire, można obsłużyć USARTem. Nie ma żadnych delay i 1-Wire działa na przerwaniach. Masz więc już pierwszy...
Oczywiscie , zrobie to na przerwaniach,tzn po wystąpieniu przerwania bedzie wykonywana instrukcja sprawdzajaca stany z 3 lini enkoderów.Czestotliwosc generowania przerwań powiedzmy powiedzmy 6x 400 /s powinna w zupełnosci zapewnić odpowiedni zapas poprawnosc odczytu sygnalow nawet w przypadku pojawienia sie impulsów z 3 enkoderów jednoczesnie. Tylko...
Poprostu enkoder podłączony do samego arduino Musisz jeszcze pamiętać o czymś takim, jak bouncing na stykach enkodera, więc w wypadku generowanie przerwań przez enkoder mogą się pojawiać takie dziwne zachowania. Lepiej skorzystaj ze sprawdzonych bibliotek do obsługi enkodera.
ustaw sobie dwa porty pod które jest podpięty enkoder enkodera jako wejścia, przerwania zewnętrzne, wyzwalane opadającym i rosnącym zboczem. PO CO? To co ja podałem jest dwa razy lepsze. A dodatkowo - nieistotna jest pozycja enkodera, a event jego ruchu. Jedyne co obchodzi to to, w ktora strone...
Zakładami że to enkoder inkrementalnyy i do obsługi używasz szybkiego licznika HSC. Wtedy masz obsługę zdarzenia typu wartość licznika=wartość zadania przez przerwanie. Np dla HSC0 jest to zdarzenie (przerwanie) 12
to ja też coś od siebie dołożę spróbuj wszystko zapisać w postaci liczbowe tj nie baw się w przesunięcia bitów i takie tam tylko na sztywno w pisz co masz wpisać do rejestrów, wnioskuje ze używasz darmowego kompilatora spróbuj wyłączyć optymalizacje kodu, ewentualnie spróbuj dopisać w obsłudze przerwania czy to wejście faktycznie ma stan niski. Swego...
Witam, Piszę obsługę enkodera optycznego w przerwaniu jednak natrafiłem na dziwny problem! Otóż kiedy program uruchamiam w "debugerze" to wszystko śmiga jak należy, gdy wrzucam program na procka to wywoła się kilka-kilkanaście razy przerwanie nagle koniec, nie przyjmuje tego przerwania, wiem bo wynik wyświetlam na wyświetlaczu, sprawdzałem też i program...
Nie da się tego precyzyjnie wyliczyć. Dekodowanie impulsów z enkodera na M328 odbywa się programowo - np. tak, że impulsy z jednego kanału generują przerwania (nie jest to idealne rozwiązanie, ale na początek nie komplikujmy). W efekcie to jak często mogą się one pojawiać zależy od czasu jaki MCU spędza w funkcji obsługi tego przerwania, ale także od...
Jeżeli masz na PCB sygnały na wszystkich liniach, jak zmierzysz oscyloskopem, to enkoder działa. Może jest tylko kwestia przerwanych przewodów lub problem z wtyczką, co tam masz podłączone... jaka wtyczka, przewody... Miernik na piszczałkę i ruszać przewodami kablem, zapewne tam masz problem z niedziałaniem maszyny... A może masz przerwane przewody...
Enkoder można na kilka sposobów oprogramować..PCINT (przerwania) albo POOLING (testując stan co jakiś czas Timerem). Wszystko sie dobrze sprawdzi gdy dobrze zastosowane :D
Jak już robić koniecznie na przerwaniach zewnętrznych to na nowszych układach z PCINT, podpinając tylko jedno przerwanie na enkoder, drugie jest całkowicie zbędne. Obsługujemy tylko jedno zbocze w przerwaniu, drugie odrzucamy. W obsłudze przerwania należy pamiętać poprzedni stan, aby nie odczytywać drobnych drgań jako pełnoprawnego impulsu.
Chciałem użyć w projekcie enkodera inkrementalnego. We właściwościach wybrałem HSC1 jako aktywny (więc wejścia 0,1 i 3), jako AB x1. Start adres ustawiony jest na 1000 (end 1003). W programie dodałem blok CTRL_HSC i zastanawiam się co dalej. Jak poustawiać ten blok aby całość zaczęła działać? (chciałbym mieć możliwość zresetowania licznika enkodera...
Witam, Możesz częściej wywoływać przerwanie ale nie licz na więcej ;) . Do odczytu enkodera w PLC masz specjalne wejścia i bloki. Pozdrawiam,
Dla enkoderów ze stykami mechanicznymi, jeśli nie podłączasz go do uC za pomocą prostego filtru RC, wykorzystywanie timera czy przerwań to ślepa uliczka. Z racji, że takie enkodery nie generują impulsów o dużej częstotliwości, to najlepiej zrealizować odczyt programowo, np. cyklicznie w systicku sprawdzać czy mamy stan wysoki przez minimalny czas i...
->tmf Chyba masz rację, ale nie zmuszaj mnie już do zaglądania do słownika... :) Przyznam, że już dość długo załatwiam obsługę enkodera przerwaniem na zboczu i z dobrym enkoderem, nawet mechanicznym, działa to zadawalająco, chociaż ostatnio musiałem dodawać jakiś filtr RC na wejściu.
Witam, Zacząłem pisać program na atmege8 w bascomie, do sterowania preampem tda8425 przez enkoder, wyświetlając to wszystko na LCD póki co 8x2. Program jest w fazie powstawania, ale mam kilka pytań co sądzicie o moich rozwiązaniach i czy tak w ogóle może być? Enkoder obsługuję przez INT0 i INT1, zbocze opadające. Jeśli wejdzie w procedurę przerwania...
Sprawdzałeś czy jeden obrót motoreduktora to tyle samo impulsów enkodera? Użyte są HSC ? W jakim przerwaniu odczytujesz te impulsy? Sam enkoder w sobie jest sprawny? Zakłócenia? Wrzuć jakieś zdjęcia?
Cześć, mam pytanie odnośnie Timerów w uC ATmega. Potrzebuję następujących opcji: - zliczanie impulsów z dwóch enkoderów - generowanie dwóch przebiegów PWM - generowanie przerwania co kilka ms. ..............? Czy są jakieś AVR'y mające 4 timery? ........... Pozdrawiam, Bartek Wystarczy ci Atmega48/88/168 Dla 2-ch sygnałów PWM wystarczyłby 1 timer z...
O to mi chodziło - czyli printf nie blokuje przerwań na czas wysyłki. To standardowa funkcja języka C, więc nie może mieć nic wspólnego z przerwaniami, bo te są różne w różnych mikrokontrolerach. Istotne jest jednak miejsce jej użycia, więc nadal prosimy o materiały, bo nie ma jak Ci pomóc.
Ale wtedy to pewnie już z jakimś innym procesorem? Z80, 8088 albo 68000. 68k fajne procki. Zrobiłem system na 68000/12MHz. Dekodowanie adresów, sygnały BUSERROR , reset itp robił GAL, kolejny enkoder priorytetów przerwań. Później wszystko realizował CPLD. Pisanie w Asseblerze na 68k to przyjemność a kompilator C potrafi rozwinąć skrzydła. Niestety...
Do testów możesz na początku użyć enkodera z myszki kulkowej. Tylko wpierw będziesz musiał podbić napięcia wychodzące z enkodera do 24V. Robiłem odczyt dwóch enkoderów na przerwaniach w PLC Mitsubishi FX3U i spokojnie chodziło to na licznikach. (1024 impulsy na obrót) Tylko poszedłem na łatwiznę i odczytywałem tylko zbocza narastające sygnału "A". Sygnał...
w ten sposob pozbylem sie delaya w ogole Jeżeli nie masz żadnych delay w loop() to tym bardziej możesz przenieść obsługę przycisku w to miejsce. Proponuję użycie EasyButton: https://github.com/evert-arias/EasyButto... Funkcja read() z tej biblioteki też nie wprowadza żadnych delay(), a detekcję naciśnięcia przycisku można sobie elegancko podpiąć pod...
Istotnie są enkodery, które generują pojedyncze przejścia, albo całe cykle, lecz w praktyce nie ma to znaczenia i metoda opisana przez (at)PDT sprawdzi się w obu przypadkach. Jedynie wynik należy podzielić przez 4 jeśli enkoder generuje pełen cykl/przejście. Jeśli przerwanie tak jak w przykłądzie jest generowane co 2,5ms to potencjalnie możemy wykryć...
Jest parę błędów które widzę już teraz. Pozwoliłem sobie wstawić to w syntax bo nie dało się czytać :) unsigned char ilosc_imp=0; powinno zostać opatrzone jeszcze etykietką volatile. Czyli: [syntax=c] volatile unsigned char ilosc_imp=0; [/syntax] Volatile wyłącza dla tej konkretne zmiennej optymalizację. Jest to konieczne jeżeli korzystasz ze zmiennej...
Witam wszystkich. Jestem zielony w sterownikach PLC, toteż proszę o pomoc doświadczonych kolegów. Próbuję rozgryźć program, który jest zaszyty w moim FATEK'u (układ działa poprawnie) Ne wejściu X1 jest enkoder. Zastosowano konfigurację HSC4, licznik softwarowy,U/D, zlicz w górę X0. W programie głównym jest znacznik (?) M1982 - maskowanie, który jest...
Przepraszam ale w pierwszej wypowiedzi popełniłem błąd logiczny - oba przerwania powinny być ustawione na te same zbocze a nie różne. Dlaczego, bo tak jak napisałem wcześniej nie będzie można określić kierunku zmian, zawsze bedzie ta sama kolejność wywoływania przerwań. Obojętnie czy kręcimy w lewo czy w prawo. np. ChA narastanie 0->1 a ChB opadanie...
Niespecjalnie, chyba, że to będzie przerwanie wyzwalane zboczem, a nie poziomem. Niemniej gorąco cię zniechęcam do robienia obsługi enkodera na przerwaniach wyzwalanych zboczami z pinów IO. Lepszym pomysłem jest przerwanie timera co określony czas i w nim badanie stanu pinów IO. Niemniej gotowca znajdziesz w darmowych przykładach do mojej książki (do...
Sygnał na dwóch wejściach enkodera jest w zależności od kierunku obrotu przesunięty w fazie. A ten kod to wykrywanie sekwencji. Na początku wpisujesz stany pinów do zmiennej i na jej podstawie (o obecnego stanu) zmieniasz stan na kolejny. Drgania styków eliminowane są poprzez przejścia wewnątrz danej sekwencji. Wystarczy wrzucić go w przerwanie co ileś...
Czy w ogóle ten układ z bramek xor to właśnie układ filtrujący, czy może ma inną funkcję? Nie jest to układ filtrujący, jego zadaniem jest zamiana sekwencji sygnałów z enkodera na jawne sygnały STEP / DIR. W swoim projekcie też wykorzystałem enkoder podpięty bezpośrednio do przerwania zewnętrznego arduino i był on niezwykle czuły na zakłócenia (włączenie...
Jakby mógłby wyglądać odczyt wartości licznika używając przerwania ?
Szczerze mówiąc impulsator w dalszym ciągu nie działa jak powinien :/ Nie mogę sobie z nim poradzić :/ Co do przerwania to nie mogę obsługiwać impulsatora w przerwaniu.
Zacznij od początku, to znaczy weź jakieś Menu z Enkoderem, jako przykład i zapanuj nad nim. A później do działającego przykładu dorobisz swój program. Generalnie albo robisz Switch-Case, albo duużo bardziej skomplikowane rozwiązania na obiektach, które w kodzie będą bardziej eleganckie, ale trudniejsze dla zrozumienia dla początkujących. Ja zrobiłem...
Według mnie najlepiej było by do procka doprowadzić dwie linie. Program i tak w 99% przypadków musi reagować na każdy przeskok enkodera więc wydaje mi się, że najlepszym rozwiązaniem było by wyprowadzenie sygnału impulsu oraz kierunku. Impulsy podpinamy pod przerwanie zewnętrzne mikroprocesora a w jego obsłudze sprawdzamy wejście odpowiadające za kierunek...
1 ms to troszkę krótko... jaki silnik (ile obrotów), ile impulsów na obrót w enkoderze ?? ja robię to troszkę inaczej... w przerwaniach wywoływanych przez sygnał z enkodera inkrementuje licznik (zaletą jest bardzo krótki czas wykonania się przerwania), po czym w timerze np. co 20ms (choć moim zdaniem to i tak dość krótki czas) używam regulatora PID....
Musisz znać drogę między czujnikiem a wyrzutnikiem, czyli liczbę impulsów enkodera. Wówczas po sygnale z czujnika, liczysz impulsy i po określonej ich liczbie butelka będzie przy wyrzutniku. To będzie dobre dla małych prędkości. Dla wyższych być może będziesz musiał zadziałać wyrzutnikiem odpowiednio wcześniej aby trafić w butelkę. Ten czas będziesz...
Ponieważ PD2 nie da się skonfigurować jako UART5_TX to nie można zrealizować pół-automatycznego zegara. Pozostaje tylko działanie rdzenia lub przesłanie ciągu danych z użyciem DMA do GPIOD->BSRR dla PD2. Odczyt danych z PA15 będzie wtedy synchronicznie ze zmianą stanu pinu PD2. Obsługa w przerwaniu będzie kosztować trochę więcej, ale też jest możliwa....
Aktualny czas cyklu programu możesz zobaczyć w diagnostyce. Obliczenie timer'a zależy od cyklu programu, stąd wynikają niedokładności, na dodatek stan wyjścia ustawiany jest na końcu OB1. Spróbuj użyć wbudowanego generatora PWM (jak HSC jest obsługiwany poza programem) albo ustawiaj wyjście jako P w przerwaniu.
Witam. Do Atmegi mam podłączony enkoder z drukarki na INT0 (obsługuje przerwanie). oraz rs232 , który komunikuje się z aplikacją na PC(też przerwanie). Opcja pierwsza: czytam dane z enkodera manualnie : mam o programie guzik "daj dane". Gdy kręcę enkoderem jak szalony to w lewo to w prawo a potem wciskam guzik "daj dane" to dostaje to co trzeba - znaczy...
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem by otrzymać jednakowe odcinki czasu zliczane później...
Jaki będziesz miał wyświetlacz? Alfanumeryczny że string będzie ok? Czy może LED lub LCD segmentowy? Żeby zmieniać wartość enkoderem trzeba go obsłużyć... Enkoder ma przycisk? Zatem weź zmienną Word w której będziesz zmieniał nastawy np. [syntax=vbnet]dim wartosc as word dim index_wartosc as byte if index_wartosc =1 then wartosc=wartosc + 1 end if if...
Raczej utrudnienie, łatwiej pisać soft na jeden uC niż na kilka. Twierdzisz kolego, że łatwiej napisać soft jednocześnie obsługujący enkoder, LCD oraz generowanie sygnału niż 2 osobne ? Naturalnie. Jaki problem aby DMA generowało przebieg, pętla główna obsługiwała LCD a przerwania modyfikowały DMA aby uzyskać modulację? Powyższe stwierdzenie jest chyba...
No ciężko to jeszcze bardziej uprościć. Bo to są podstawy podstaw. Po prostu uruchamiasz przerwania dla pinów 8 i 9. Oraz 13 i 14. Z reakcją zarówno na zbocza narastające jak i opadające. W STM32F10x przerwania dla pinów 5...9 oraz 10...15 są wspólne. Czyli mają jeden wektor przerwania i nie wiadomo który pin spowodował wystąpienie przerwania. Więc...
Posiadam oba te enkodery. Oczywiście ten z avt jest nieporównywalnie lepszy. W moim z allegro bywa że po puszczeniu jeden ze styków jest ciągle zwarty... Jednak z programu wnioskuje że enkodera nie obsługujesz w przerwaniach co powoduje dziwne zachowanie np. momentami kręcisz w górę a wartość na LCD spada w dół. Tylko przerwania gwarantują reakcję na...
(at)bigmaster Dla 50 Hz masz jakieś 24.7 mm/s Czyli dla każdej innej częstotliwości masz 24.7 * f /50 na sekundę lub lub 2.47 * f/50 na 100ms Jeśli chcesz śledzić ruch to co każde przerwanie dodajesz do zmiennej wartość 2.47 * f/50 [mm]
Ja obsługę takich enkoderów wykonuje zawsze na jednym przerwaniu. Jeden z impulsów wywołuje przerwanie, w obsłudze przerwania sprawdzam tylko stan drugiego kanału. Jeśli jest wysoki to ++licznik, jeśli jest niski to --licznik.
(at)jta gdzieś wyżej pisałeś o czasach rzędu 30uS. przy zegarze rzędu 16MHz i cyklu 1/16MHz=62,5ns bez problemu ztestujesz takie rzeczy po odpaleniu przerwania. Chyba że wymyśliłeś czasy zbliżone do cyklu procesora, to wtedy zaczynają się schody. Ogólnie prosty odczyt enkodera robi się tak, że jeden pin wyzwala "normalne" przerwanie, ale w obsłudze...
Witam. Elektrycznie jest wszystko rozwiązane jak w nocie katalogowej, czyli rezystory są 2,7k. Co do listingu musze tego poszukać, ale z tego co pamiętam nie wykorzystywałem w nim pinu I, był mi niepotrzebny. Ponieważ nie wiem kiedy będę mógł zamieścić listing, polecam poszukać zasadę działania enkoderów. Co do programu najlepiej zrealizować to na przerwaniach....
Kompilator sam inicjalizuje domyślnie zmienne wartościami 0. Dopiero jak chcesz to nadajesz wartość. Z portami powinno być tak samo, ale nie zawsze. To są takie niuanse czasem. Na przykład jeśli użyjesz biblioteki LCD4BUSY.lib po to by użyć pinu WR lcd i przy okazji zaoszczędzić kodu to ona automatycznie wpisze Ci do całego rejestru DDR jedynki. Żeby...
Czy zmienna kierunek jest globalna i volatile? Już po pierwszym przerwaniu powinna przyjąć wartość 1 lub 2, a nie być cały czas 0. Czy zaobserwowałeś zwiększanie wartości zmiennej enkoderA ?
Mam problem jeszcze z enkoderem, mianowicie jedno kliknięcie jest liczone jako 2. kod jest z ksiazki Tomasza Francuza. Gdzie mogłbym szukać błędu? Niekoniecznie jest to błędem. Zależy to od budowy enkodera - są takie, które generują nawet 4 impulsy na jedno "kliknięcie" - po prostu trzeba podzielić wynik przez 4 lub 2 w zależności od typu enkodera.
(at)Prezeslukasz Przy liczbie impulsów na sekudę jaką podałeś to ślimak sobie poradzi. Więc tu nie ma problemu. Kwestia, aby przynajmniej poprawnie zaimplementować obsługę enkodera. Co do równoczesnych przerwań to też nie ma problemu, gdyż zostaną one obsłużone w kolejności priorytetów. Ważne tylko, aby w trakcie obsługi przerwania nie były zgłoszone...
Takie ustawienie enkodera jest mozliwe. Reagowanie na stan to bład. Powinieneś reagować na zbocze. Np. przerwanie zewnętrzne AVR'ów potrafi reagować zarówno na zbocze narastajace i/lub opadające. Jak odczytywac w którą strone następuje ruch?. Najlepiej jak sobie znajdziesz gdzieś w internecie opis takiego enkodera z wykresami sygnałów wyjściowych, bo...
Zastosowałem rozwiązanie oparte na mikrokontrolerze z rodziny ATmega + zmodyfikowany przez Briana Lowa szkic autorstwa Bena Buxtona. Wyjście na 2 mikroprzekaźniki. Działa bez zarzutu. Jest debouncing, nie ma gubienia impulsów. Układ działa nawet przy "wariackim" kręceniu pokrętłem enkodera (choć nie do tego został stworzony). W przyszłości: - przepisanie...
Tak zmiana zbocza to jeden krok. Filtr oczywiście jak najbardziej, ja po prostu doświadczalnie wybrałem prędkość, przy której jestem w stanie odczytać impulsy. Przerwania będą w 2 cz.
Szanowni Forumowicze, mam problem z regulacją prędkości obrotowej silnika DC wyposażonego w enkoder za pomocą przerwań INT. Enkoder to czujnik Halla i odbiera impulsy z magnesu neodymowego na wale silnika (magnes 8-polowy). Prędkość kontroluję za pomocą generowanego PWM na atmedze podawanego na mostek L293DNE. Atmega pracuje na 1MHz, a licznik to Timer/Counter0...
(at)Flesz dziękuję za odpowiedź. Układ buduję w oparciu o ATMegę32, nie ma ona takich możliwości jak XMega,która już ma w sobie funkcje do obsługi enkoderów. Taktuję zewnętrznym kwarcem 16MHz , więc przerwania z częstotliwością 14kHz powinno dać się uzyskać.
roblem jaki widzę to że czasem taki uklad drga minimalnie np 1-2 piki enkodera i jak to się trafi na progu przepełnienia, układ będzie ciagle w pętli przerwań. Nie, gdyż dla wejść enkodera można w XMEGA włączyć sprzętowy filtr. Ponadto to mogłoby się zdarzyć wyłącznie, gdyby dochodziło do cyklicznych zmian 0xffff-0, co jest niezbyt prawdopodobne. Enkodery...
na 6 minisumo śmiga, na 4 też. Tylko uważaj, są szybkie. Koledzy, którzy ich użyli mówili, że robot miał problemy z hamowaniem na linii, mimo iż czujniki dali na przerwaniach.
szukaj jest 50 postów gotowców za free
Sprawdź kod w załączniku. Warunkiem użycia jest wykonanie kodu w przerwaniu od timera. Im szybsze będzie przerwanie tym szybsze impulsy będą wychwytywane. Testowałem kod z enkoderem optycznym 360 imp. oraz przerwanie było ustawiane na poziomie 0.1 ms - 1 ms kręcąc nim "jak szalony". Przy Twoim enkoderze pewnie szaleństwo będzie bardziej ograniczone,...
przerwania enkoder renesas przerwania flagi przerwania
ustawi adres publiczny sterownik regulator temperatura chłodziarko zamrażarka polar cz340
przełącznik hyundai obrotomierz motocykl
Jak odblokować kartę SIM - kod PUK i PIN Odczyt hasła z panelu HMI Siemens - porady i metody