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.

mikroBasic PIC16F877A - Interrupt on change PORTB nie działa

krpawl 14 Mar 2013 18:45 2361 2
  • #1 14 Mar 2013 18:45
    krpawl
    Poziom 10  

    Witam wszystkich,
    Nie mogę sobie poradzić z przerwaniami "on Change" na PORTB w mikrokontrolerze PIC16F877A. Program przykładowy ma tylko pokazać inicjacje przerwań, natomiast w ISIS 7 nie jestem w stanie ich wywołać.
    Pytanie, czy błąd jest w kodzie czy może symulator nie wykrywa przerwań. Faktem jest, że od niedawna bawię się z ISIS 7 i może czegoś nie ustawiłem - nie wiem.
    Będę wdzięczny za wszelkie porady.

    kod w mikroBasic:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    A tu schemat połączeń w ISIS 7 Professional
    mikroBasic PIC16F877A - Interrupt on change PORTB nie działa

    0 2
  • Pomocny post
    #2 14 Mar 2013 19:19
    PDT
    Poziom 24  

    W sekcji main programu ustawiasz:

    TRISB=1

    to oznacza, że tylko RB0 jest wejściem, pozostałe piny RB7-RB1 są wyjściami. Przerwanie informujące o zmianie stanu pinu dotyczy tylko tych spośród RB7-RB4, które będą wejściami. W Twoim przypadku - żadnego. Spróbuj zmienić w/w instrukcję na:

    TRISB=240 (wartość binarna 11110000, hex F0).

    Nie koduję w mBasic-u.

    W procedurze przerwania te INTCON.RBIE=0 a potem 1 są zbędne. Wystarczy INTCON.RBIF=0.

    Pzdr

    0
  • #3 14 Mar 2013 19:30
    krpawl
    Poziom 10  

    Oczywiście kolego masz racje. Wszystko ruszyło od razu, a ja patrzyłem na ten kod i nie mogłem zrozumieć dlaczego to nie działa. Ten kod to tylko wycinek całego programu nad którym pracowałem ponad tydzień, więc chyba pomroczność jasna mnie dotknęła :)
    Pozdrawiam i dziękuję

    0