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.

Attiny13 PCINT4 - Attiny13 PCINT4

kundziak 25 Wrz 2013 19:04 1344 5
  • #1 25 Wrz 2013 19:04
    kundziak
    Poziom 9  

    Witam, dopiero wczoraj ogarnąłem przerwanie PCINT0 a już dziś potrzebuję PCINT4. Poniżej zamieszczam program testowy na którym pracuję. Przerwanie PCINT0 działa bez problemu niestety PCINT4 już w ogóle. Wpisanie w konfiguracji PCINT4 kończy się błędem "unkown interrput source" więc doczytałem, że wektor przerwania jest jeden i jest nim PCINT0 tylko przy pomocy rejestru PCMSK0 można wybrać który pin ma reagować na przerwanie. Niestety jak wpiszę coś innego jak Pcmsk = &B00000001 to już przestaje w ogóle działać. Jak by ktoś mógł coś podziałać żeby zadziałało PCINT4 to był bym bardzo wdzięczny. Z góry dzięki.

    Program:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0 5
  • #3 26 Wrz 2013 05:49
    emarcus
    Poziom 34  

    kundziak napisał:
    Witam, dopiero wczoraj ogarnąłem przerwanie PCINT0 a już dziś potrzebuję PCINT4. Poniżej zamieszczam program testowy na którym pracuję. Przerwanie PCINT0 działa bez problemu niestety PCINT4 już w ogóle. Wpisanie w konfiguracji PCINT4 kończy się błędem "unkown interrput source" więc doczytałem, że wektor przerwania jest jeden i jest nim PCINT0 tylko przy pomocy rejestru PCMSK0 można wybrać który pin ma reagować na przerwanie. Niestety jak wpiszę coś innego jak Pcmsk = &B00000001 to już przestaje w ogóle działać. Jak by ktoś mógł coś podziałać żeby zadziałało PCINT4 to był bym bardzo wdzięczny. Z góry dzięki.


    Wystarczy tylko zmienic:
    Enable Pcint0
    Pcmsk = &B00010000
    -co w efekcie oznacza "enable PCINT4"
    Patrz datasheet; str. 47
    9.3.4 PCMSK – Pin Change Mask Register
    • Bits 5:0 – PCINT5:0: Pin Change Enable Mask 5:0................(doczytaj resztę).
    Wszak dowiedziałeś się że jest to ten sam interrupt (PCINT0) tylko "przekierowany" na inny 'prawie dowolny' PIN. W tym wypadku będzie to PB.4, czyli praktycznie korzystasz z PCINT4.

    e marcus

    0
  • #4 26 Wrz 2013 20:27
    kundziak
    Poziom 9  

    Dzięki wielkie, właśnie nie wiedziałem jak te PCMSK ustawić. Wszystko działa :)

    0
  • #5 28 Wrz 2013 17:32
    kundziak
    Poziom 9  

    Jeszcze jedno pytanie, da rady jakoś to tak ustawić, żeby np PCINT4 i PCINT3 włączały inne podprogramy ? bo z tego co rozumiem załączam tam tylko PCINT0 i wybieram pin z którego ono ma być załączane a ja bym chciał załączać dwa przerwania. Jest w ogóle możliwość konfiguracji przerwania żeby wybrać na jaki stan reaguje jak przy normalnym przerwaniu zbocza i stan niski ?

    0
  • #6 28 Wrz 2013 20:52
    piotrva
    Moderator Mikrokontrolery

    To trzeba już nałożyć programowo na przerwanie PCINT.
    Ogólnie konfigurujesz PCMSK tak, aby były aktywne piny 3 i 4, a potem w programie przerwania sprawdzasz, który pin zmienił stan (wygenerował przerwanie) oraz w jakim był stanie przed przerwaniem (stąd wiesz jakie zbocze wygenerowało przerwanie).
    Można więc nawet programowo przypisać inne funkcje do każdego zbocza każdego pinu.

    0