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...
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...
a na 99% gubienie kroków jest spowodowane zbyt wolna obsługą. Z jaką częstotliwością wywoływane są przerwania od enkodera?
Rezystory powinny byc 10k. Sciag sobie biblioteke Rotary, masz gotowa i precyzyjnie dzialajaca obsluge enkodera, albo w przerwaniu, albo normalnie, do wyboru. Pozdr
Ja bym zrobił na przerwaniu + timer.
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.
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 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....
Witam. Enkoder na jednym przerwaniu [url=http://www.elektroda.pl/rtvforum/to...
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.
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.
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...
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...
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ś...
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,...
Punkty?! Trochę to przesada, ustawione mam 0 punktów dla użytkownika, więc ”G” z tego mam, to, że elektroda.pl tak sobie wymyśliła z tymi punktami to nie moja wina! Jeśli ktoś tu nabija sobie jakieś punkty to są to osoby które piszą posty nic nie wnoszące do rozwiązania problemu. Zmienna „LicznikEncoder” oczywiście jest zmienną...
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....
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...
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...
(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.
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! 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).
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.
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.
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)...
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....
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
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.
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...
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)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....
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.
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...
Bo enkoder mechaniczny generuje drgania styków - a te mogą wywołać wiele przerwań. Dużo lepszym i oszczędniejszym w zasoby uC sposobem na enkodery jest polling w przerwaniu timera.
Nawet nie napisałeś jaki to procesor... Ten RS musi być obsługiwany programowo? Może wykorzystaj sprzętowy, a wtedy przerwania nie będą przeszkadzać.
ale wykorzystując przerwania dam rade podłączyć tylko jeden enkoder do atmegi8. Chyba że są tam przerwania o których nie wiem
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.
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.
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
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...
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ę...
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, 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,
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?
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...
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...
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...
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.
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...
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...
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...
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
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.
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...
Czy taśma mogła się uszkodzić? Jest na niej rysuneczek ręki z przekreśleniem ale nie rwałem niczego a na pewno nie tych taśm nie widać nigdzie żadnych przerwań. Enkodery tutaj mają coś do powiedzenie? Bo jeden to chyba jest odpowiedzialny za jeżdżenie kasetki w prawo i lewo.
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ś...
Nie zgadzam się z Tobą. Wyobraź sobie sytuację - kręcisz dość szybko. Pojawia się impuls na kanale A. Wtedy musisz natychmiast sprawdzić stan kanału B. Jeśli zrobisz to zbyt późno to możesz zinterpretować ruch jako odwrotny a to jest totalny error. Przy szybkim kręceniu enkodera stan przejściowe trwają bardzo krótko, a tak naprawdę miarodajne są zbocza...
Jakby mógłby wyglądać odczyt wartości licznika używając przerwania ?
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...
ten czujnik to po prostu enkoder na 5V, ktory wysyla impulsy na przerwania, procek w przerwaniach ink(dek)rementuje wartosc, ktora jest wyswietlana na wyswietlaczu. Czyli tak jak pisałem wcześniej zabierasz się do sprawy z niewłaściwej strony. Szkoda INT na takie cele. Trzeba planować odwrotnie. Najpierw najważniejsze sprawy, a później mniej istotne....
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...
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...
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.
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.
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ś...
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...
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...
Z tym priorytetem to nie do końca jest tak jak myślisz. Dziala to tylko w przypadku jednoczesnego otrzymania sygnału przerwania, natomiast po wejsciu do przerwania od licznika obsługa przerwania z enkodera zostanie zawieszona do momentu ukończenia obsługi licznika. W twoim przypadku w niczym to nie przeszkodzi chyba ze faktycznie enkoder generuje "gęste"...
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ć...
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...
(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]
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....
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...
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.
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...
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...
Twierdzisz kolego, że łatwiej napisać soft jednocześnie obsługujący enkoder, LCD oraz generowanie sygnału niż 2 osobne ? Powyższe stwierdzenie jest chyba prawdą jedynie w przypadku małych umiejętności programisty Proszę https://www.elektroda.pl/rtvforum/topic3... Pomiar częstotliwości (sprzęt+przerwania), czasu (sprzęt), oscyloskop (DMA), obsługa...
Takie coś jest w kontrolerach przerwań ale szukając dekodera priorytetowego wskazało na enkoder priorytetowy 8 na 3 (74148) i jak do tego dołączysz demultiplekser 3 na 8 to w zasadzie aktywna będzie jedna linia - tylko trzeba zadbać o negacje i sygnały informujące, że przynajmniej jedna linia wejściowa jest aktywna.
Witam. Stoję przed koniecznością przebudowy maszyny. Chodzi mi szczególnie o wykorzystanie sterownika (prawdopodobnie S7-200) do sterowania osią. Na osi będzie enkoder (w tej chwili jest absolutny podłączony do S5). Czy możliwa jest praca S7-200 z tym enkoderem bez korzystania z szybkich wejść. Silnik będzie pracował na 2 prędkościach, więc dojazd na...
Blokować przerwania na czas odczytu, lub zrobić tak, żeby w ogóle nie czytać tego poza przerwaniem, np. tylko wyświetlanie na LCD w pętli, a konwersja w przerwaniu. Nowy C ma słowo kluczowe _Atomic, które dałoby plokadę przerwań na czas odczytu.
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...
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....
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...
Poczytaj sobie o nieblokującym odczycie temperatury np. tutaj http://akademia.nettigo.pl/ds18b20/ . Przerwania sprzętowe zostaw do enkodera, ew. bramki SMS -jeśli takich w ogóle wymaga.
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 ?
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...
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...
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...
To jest zwykła fizyka. Silnik ma ograniczoną prędkość i tego nie przeskoczysz ale można łatwo to rowiązać. Tak to robię na enkoderach W przerwaniu enkodera inkrementuję zmienną "W_lewo" albo "W_prawo" zależnie od kierunku pokrecenia. Zmienne są inkrementowane w dowolnym tempie i żadnego kroku nie zgubisz. Następnie w przerwaniu Timera, albo nie częsciej...
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...
Zrobiłem po swojemu czujnik PAS, dwa czujniki hall A3144, dwa rezystory pullup i attiny13. Prosty program mieści się w 700B i działa super, na wyjście układu wystawia impulsy tylko wtedy, gdy tarcza z magnesami kręci się w jednym kierunku. Odczyt impulsów w przerwaniu, z użyciem kodu Graya jak dla enkoderów. Płytka będzie malutka, projektuję tarczę...
Aha zapomniałem napisać,funkcja encoder jest w przerwaniu bo gdyby byla w pętli , za wolno by sie wykonywała ze względu na odpowiedni czas odświeżania dla lcd... to spróbuj odwrotnie lcd w przerwaniu a enkodery w pentli
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ł...
(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...
Atmega 8 w tym przypadku to przesada. Układ działa tak pod przerwania dodatkowego uc jest podłączony enkoder (równolegle z ori procesorem) jeśli wykryje zmianę na enkoderze odłącza szynę i2c przedwzmacniacza nadaje instrukcję głośniej ciszej po czym odłącza się od magistrali i podpina pod procesor główny.
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...
(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...
renesas przerwania flagi przerwania attiny przerwania
czerwona dioda pilot prąd bramki tyrystora programy symbian
lodówka haier a3fe742cmj parkside szczotki
Giganagrywarka Netii ucina końcówki filmów - jak wydłużyć nagrywanie? Citroen C5 II 1.6 HDi 2007 - Obrotomierz na "0" na biegu jałowym