Enkoder z INT1 na INT0

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
alex
Posty: 2
Rejestracja: 16 kwie 2024, 20:36

Enkoder z INT1 na INT0

Post autor: alex » 28 mar 2025, 19:38

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
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Enkoder z INT1 na INT0

Post autor: niveasoft » 29 mar 2025, 6:00

A nie szybciej sprawdzic samemu :D 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.
Awatar użytkownika
alex
Posty: 2
Rejestracja: 16 kwie 2024, 20:36

Re: Enkoder z INT1 na INT0

Post autor: alex » 29 mar 2025, 20:29

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).
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Enkoder z INT1 na INT0

Post autor: niveasoft » 30 mar 2025, 16:25

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
ODPOWIEDZ