logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

LPC1114 - nie wchodzi do przerwania od CT16B0_CAP0 na P3.3

KamilCWK 13 Sie 2015 14:10 930 4
REKLAMA
  • #1 14918747
    KamilCWK
    Poziom 11  
    Posty: 68
    Pomógł: 5
    Ocena: 2
    Pin P2.0 generuje zbocza, a P3.3 ma je wychwytywać i generować przerwanie. Oczywiście P3.3 skonfigurowany jako CT16B0_CAP0 oraz ustawiony LPC_IOCON->CT16B0_CAP0_LOC dla P3.3.
    Pętla główna się kreci bo widzę, że zmienna i jest inkrementowana natomiast zmienne licznik, licznik2, przerwanie zawsze mają wartość 0 zatem program nigdy nie skacze do przerwania.
    Proszę o pomoc bo walczę już kilka godzin zdawało by się z prostą rzeczą
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 14918789
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    Zmienna flaga ma jakieś pokrętne zastosowanie. W pętli głównej ciało warunku while ( flaga == 0 ) jest wykonywane gdy zmienna flaga jest równa 0, w procedurze przerwania zmienna ta otrzymuje wartość 1 i ciało tego warunku już nigdy nie jest wykonywane bo nigdzie indziej nie ma zerowania tej zmiennej, tylko właśnie w ciele tego warunku.
  • REKLAMA
  • #3 14918958
    KamilCWK
    Poziom 11  
    Posty: 68
    Pomógł: 5
    Ocena: 2
    Poprawiłem warunek, teraz czeka dopóki flaga == 0, jeśli 1 to wyświetla wynik z tym że działa dla P1.8 i CT16B1. Na P1.8 jest microswitch podciągnięty do VCC przez rezystor. Kod dla P3.3 i CTB160 dalej nie wchodzi do przerwania.
    jakiś pomysł ?

    To wrzuca na terminal dla P1.8 i CT16B1:
    
    Test
    Rozpoczynam pomiar
    Licznik=1728
    Licznik2=1728
    Przerwanie=1
    I=0
    Rozpoczynam pomiar
    Licznik=2681
    Licznik2=2681
    Przerwanie=2
    I=1
    

    dla kodu
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    kiedy napiszę podobny kod dla P3.3 nie chcę wejść do przerwania :(
  • REKLAMA
  • Pomocny post
    #4 14919030
    Badmaneq
    Poziom 23  
    Posty: 567
    Pomógł: 76
    Ocena: 23
    Chwilę mi zajeło co w Twoim programie jest źle. Ja testowałem na LPC1114/302 faktycznie na P3.3 nie wchodzi do przerwania, nawet zajrzałem do UM i się niby zgadzało... dopiero później doczytałem, że P3.3 może pełnić CT16B0_CAP0 tylko dla serii mikrokontrolerów XL, to samo tyczy się pinu P3.4.
    Musisz skorzystać z CAP1 lub TIM32, tylko doczytaj czy dany pin nie jest tylko dla serii XL.
  • #5 14919719
    KamilCWK
    Poziom 11  
    Posty: 68
    Pomógł: 5
    Ocena: 2
    No tak dotyczyło to wersji XL. Wykorzystałem timer CT32B0 i przerwanie od CT32B0_CAP0 na pinie P1.5 - DZIAŁA :)
REKLAMA