Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PIC18LF14K50][C18] - Zewnętrzne przerwanie nie jest obsługiwane

14 Wrz 2012 18:00 1719 4
  • Poziom 8  
    Bawię się ostatnio wspomnianym w tytule mikrokontrolerem i natknąłem się na problem z zewnętrznymi przerwaniami, którego nie potrafię obejść. Zaczynając od tego co działa: układ jest sprawny na pewno, jest podłączony, cały czas hula dioda sterowana przez timer z ustawionym przerwaniem na przepełnienie; podłączony jest również PICkit 3 przez icsp. Korzystam z MPLAB ide oraz kompilatora MPLAB C18.

    Teraz do rzeczy: chcę, aby przerwania pracowały z włączoną obsługą priorytetów - przerwanie timera obsługujące diodę ma mieć niski priorytet; przerwanie zewnętrzne obsługujące przycisk - wysoki. Uruchomiłem zatem odpowiednie peryferia i ustawiłem pin 0 portu C na wyjście (pin 0 odpowiada za INT0):
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Funkcje obsługujące przerwanie napisałem zgodnie ze specyfikacją C18:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Mikrokontroler jednak nie reaguje na sygnał z zewnątrz. Próbowałem podłączać przycisk zarówno w konfiguracji pull-up, jak i pull-down. Mierzyłem napięcia na przycisku i rzeczywiście do pinu 16. mikrokontrolera sygnał dochodzi. Dodatkowo, wiem, że uC prawidłowo przeskakuje do kodu pod adresem 00008h, ponieważ sprawdziłem to ustawiając flagę przerwania w softwarze. Przeczytałem mnóstwo tematów na forach, ale nigdzie nie znalazłem odpowiedzi.
    Czy ktoś wie, co robię tutaj źle?
  • Użytkownik usunął konto  
  • Poziom 8  
    co do TRISC - przejęzyczyłem się - oczywiście miałem napisać że nastawiłem na wejście ;)

    ale udało Ci się znaleźć mój błąd, wielkie dzięki :D - ustawiłem bit ANS4 rejestru ANSEL na 0 i działa. czytając te wszystkie fora i dokumentacje, jakoś nigdzie tego nie zauważyłem, nawet w przykładowych programach w user guidzie do C18 na stronie microchipa nie ustawiają tego bitu... dziwne. w każdym razie u mnie już wszystko działa i jeszcze raz dzięki za pomoc. pozdrawiam.
  • Użytkownik usunął konto  
  • Poziom 8  
    Model forum wymusza na mnie podanie rozwiązania, więc cytuję post wyżej:
    Cytat:
    udało Ci się znaleźć mój błąd, wielkie dzięki Very Happy - ustawiłem bit ANS4 rejestru ANSEL na 0 i działa