Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek 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

Piotrush 14 Wrz 2012 18:00 1680 4
  • #1 14 Wrz 2012 18:00
    Piotrush
    Poziom 7  

    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?

    0 4
  • #2 14 Wrz 2012 19:14
    63404
    Użytkownik usunął konto  
  • #3 15 Wrz 2012 00:36
    Piotrush
    Poziom 7  

    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.

    0
  • #4 15 Wrz 2012 09:34
    63404
    Użytkownik usunął konto  
  • #5 04 Paź 2014 17:14
    Piotrush
    Poziom 7  

    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

    0