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.

Timer1, PIC16F628A, bit TRM1IF, MPLAB X, XC8,

pisulski 13 Mar 2017 23:22 2196 6
  • #1 13 Mar 2017 23:22
    pisulski
    Poziom 9  

    Witam.
    Jeszcze raz "starą metodą pisania", ale proszę o pomoc.

    Pytanie brzmi:
    "Dlaczego stan portu RB3 się nie zmienia"? Dlaczego warunek sprawdzający flagę TRM1IF nie jest prawdą.
    A sprawdzałem na symulatorze, gdzie TRM1IF ma wartość jeden, jak licznik przekroczy 0Xff;

    Czy optymalizacja usuwa ten kod?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 6
  • Pomocny post
    #2 14 Mar 2017 07:54
    ryszard1955
    Poziom 19  

    Jak miałby się stan RB3, skoro funkcja cos() zadaje mu tylko wartość jeden, a nie widzie nic innego, co mogłoby go zmieniać?

    0
  • #3 14 Mar 2017 09:29
    pisulski
    Poziom 9  

    No właściwie to źle się wyraziłem. RB3 ma się ustawić na 1, a nie zmieniać.

    Chodzi o to, że uc nie ustawia flagi przerwania od timer1 w momencie przepełnienia.
    Jest to kod testowy, który na celu ma sprawdzenie czy licznik pracuje poprawnie.

    Dodam jeszcze, że na wyjściu RB3 mam diodę, która ma sygnalizować przepełnienie, a nie świeci się.
    Korzystam z oscylatora wewętrznego. Bit konfiguracyjny oscylatora tez mam ustawiony na wewnętrzny. (W podanym kodzie nie widać #pragma)

    Pytanie wciąż brzmi. Jakie rejestry należy ustawić, aby licznik wystawił flagę?

    0
  • Pomocny post
    #4 14 Mar 2017 12:15
    Sparrowhawk
    Poziom 21  

    Konfigurujesz rejestry odpowiedzialne za działanie przerwań i obsługę przerwania w przypadku wystąpienia przepełnienia TIMER1. A gdzie masz zdefiniowaną funkcję obsługi tego przerwania?

    0
  • #5 14 Mar 2017 14:00
    pisulski
    Poziom 9  

    Oj.. a warunek if(TRM1IF) nie jest taką funkcją? W takim razie jak powinna wygladać taka funkcja?

    Pozdrawiam

    0
  • Pomocny post
    #6 14 Mar 2017 14:28
    Sparrowhawk
    Poziom 21  

    Skąd pomysł, że warunek będzie funkcją? Nie pamiętam dokładnie, jak to teraz wygląda, ale analogicznie do przykładu zawartego w dokumencie MPLAB XC8 C Compiler User’s Guide, kod mógłby wyglądać tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #7 14 Mar 2017 23:08
    pisulski
    Poziom 9  

    Super. Poszukam I przetestuje.

    Dziękuję za pomoc

    Dodano po 7 [godziny] 27 [minuty]:

    Dziękuję za podpowiedzi. Działa.

    Dodano po 1 [minuty]:

    Po zastosowaniu się do Sparrowhawk, przerwania ruszyły

    Dziękuję wszystkim.
    Zamykam.

    0