Pytanie do autora drugiego kodu z tego linku, napisanego pod przerwanie INT1:
https://bart-projects.pl/encoders.html
Czy chcąc użyć przerwania INT0 wystarczy zamienić wszystkie wystąpienia INT1 na INT0, czy konieczne jest również dokonanie zmian w kodzie ASM?
Z góry dziękuję ! Serdecznie pozdrawiam.
Alex
Enkoder z INT1 na INT0
- alex
- Posty: 2
- Rejestracja: 16 kwie 2024, 20:36
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Enkoder z INT1 na INT0
A nie szybciej sprawdzic samemu
Tak sobie żartuję bo czasami odpowiedź przychodzi później.
Kod asm był wygenerowany przez program NoSave Tool do tego uzytego procesora. Chodzi o to że to kompilator Bascom uzył tych rejestrów w przerwaniu a ten mój program tylko je wylistował z kodu. Jeżeli z jakiegoś powodu kompilator uzyje innych rejestrów to wtedy klapa. Nalezy to zawsze sprawdzić przy uzycu NoSave Tool albo na piechotę w Miccrochip Studio. Można też nie używać dyrektywy Nosave i odłożyć wszystkie rejestry jak to robi Bascom standardowo - jesli program nie jest jakoś ściśle czasowo zależny.
Kod asm był wygenerowany przez program NoSave Tool do tego uzytego procesora. Chodzi o to że to kompilator Bascom uzył tych rejestrów w przerwaniu a ten mój program tylko je wylistował z kodu. Jeżeli z jakiegoś powodu kompilator uzyje innych rejestrów to wtedy klapa. Nalezy to zawsze sprawdzić przy uzycu NoSave Tool albo na piechotę w Miccrochip Studio. Można też nie używać dyrektywy Nosave i odłożyć wszystkie rejestry jak to robi Bascom standardowo - jesli program nie jest jakoś ściśle czasowo zależny.
- alex
- Posty: 2
- Rejestracja: 16 kwie 2024, 20:36
Re: Enkoder z INT1 na INT0
Sprawdziłem, zanim napisałem posta, niemniej jednak nie chciałem sugerować odpowiedzi. Na tę chwilę wygląda to tak, że ten konkretny kod działa tylko na przerwaniu pierwszym 
Faktycznie, na płytce prototypowej miałem enkoder podłączony do tego przerwania (1) i działało całkiem fajnie. Przy projektowaniu PCB musiałem podłączyć enkoder do INT0, ponieważ INT1 został wykorzystany do komunikacji... i sprawa się skomplikowała
szkoda pcb...
Jeśli nie sprawiałoby to zbytniego kłopotu, czy mógłbyś opublikować ten sam kod, ale uwzględniający zmianę na INT0 (przy zachowaniu wykorzystania INT1 do komunikacji) ?
Z góry dziękuję!
Resztę wyslalem PW (PM).
Faktycznie, na płytce prototypowej miałem enkoder podłączony do tego przerwania (1) i działało całkiem fajnie. Przy projektowaniu PCB musiałem podłączyć enkoder do INT0, ponieważ INT1 został wykorzystany do komunikacji... i sprawa się skomplikowała
Jeśli nie sprawiałoby to zbytniego kłopotu, czy mógłbyś opublikować ten sam kod, ale uwzględniający zmianę na INT0 (przy zachowaniu wykorzystania INT1 do komunikacji) ?
Z góry dziękuję!
Resztę wyslalem PW (PM).
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Enkoder z INT1 na INT0
To chyba nieskomplikowane. Wystarczy w Bascom zaznaczyć INT1 i wcisnąć CTRL+R czyli replace i zamienić wszystkie wystąpienia INT1 na INT0.
Na samym końcu w przerwaniu prawdopodobnie trzeba zamienić "Encoder_a = 1" na "Encoder_b = 1"
Skoro juz masz PCB to trudno. Osobiście juz dawno tak enkodera nie obsługuję. Wolę ustawić przerwanie na "Change" albo użyć PCINT.
Taki kod to mnie jeszcze nie zawiódł -> viewtopic.php?f=13&t=360&p=2971&hilit=encoder+by#p2971
Na samym końcu w przerwaniu prawdopodobnie trzeba zamienić "Encoder_a = 1" na "Encoder_b = 1"
Skoro juz masz PCB to trudno. Osobiście juz dawno tak enkodera nie obsługuję. Wolę ustawić przerwanie na "Change" albo użyć PCINT.
Taki kod to mnie jeszcze nie zawiódł -> viewtopic.php?f=13&t=360&p=2971&hilit=encoder+by#p2971
