Witam
Mam pewnien problem z wywoływaniem przerwań Itn0 i 1 , do których podłaczyłem enkoder obrotowy. Wywyłoywanie przerwań odbywa się zboczem (narast i opad), timerem chciałem mierzyć czas przerwania aby ustalić prędkość obrotową enkodera.
Problem tkwi w tym, ze przerwania wywoluja sie zbyt łatwo, tzn praktycznie losowo po lekkim dotkięciu ośki enkodera a zmierzone czasy są całkowicie dowolne .
Nie wiem czy problem ktwi w kwesti programowej czy sprzętowej, programowo konfig portów wygląda tak :
Config Portd = &B00110000
Portd = &B00001111
Config Portb = Output
Portb = 0
Config Portc = Input
Portc = 0
Sprzetowo wejścia są podciagniete rezystorami 100k do zasilania enkoder wywołuje przerwanie zwierajac wejście do masy. Poradźcie coś
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ęZbyt łatwe wywoływanie przerwań Int0/1
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Re: Zbyt łatwe wywoływanie przerwań Int0/1
Problem (prawdopodobnie) tkwi w tzw. drganiu stykow. Czy wyeliminujesz to sprzetowo czy programowo...Nie wiem czy problem ktwi w kwesti programowej czy sprzętowej,
Hasla do zapoznania sie, "drganie stykow", "debouncer"... jak juz cos wybierzesz, to bedzie mozna zaradzic Twoim problemom.
Witam ponownie
Problem już częściowo rozwiazałem programowo w dość dziwny sposób, mianowicie skonfigurowałem wyjścia portu najpier jako całość a poźniej poszczególne wejścia niezależnie :
Config Portd = Output
Portd = 0
Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Program jakby pracował stabilniej , nie wywołuje tak czesto przerawnia chociaż i tak nie jest do końca dobrze. Wcześniej trudno było mówić o drganiach styków kiery ja tylko dotykałem ośki i już miałem przerwanie nie kręcąc nią w ogóle. Nawet na oscyloskopie wówczas było "czysto".
Problem już częściowo rozwiazałem programowo w dość dziwny sposób, mianowicie skonfigurowałem wyjścia portu najpier jako całość a poźniej poszczególne wejścia niezależnie :
Config Portd = Output
Portd = 0
Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Program jakby pracował stabilniej , nie wywołuje tak czesto przerawnia chociaż i tak nie jest do końca dobrze. Wcześniej trudno było mówić o drganiach styków kiery ja tylko dotykałem ośki i już miałem przerwanie nie kręcąc nią w ogóle. Nawet na oscyloskopie wówczas było "czysto".
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości