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.

[C] - Po właczeniu przerwań program nie działa prawidłowo

waldek454_33 11 Wrz 2012 13:46 669 5
  • #1 11 Wrz 2012 13:46
    waldek454_33
    Poziom 7  

    Cześć.
    Mam taki kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jeśli uruchomię sei() po wywołaniu wyświetlania tekstu na ekranie:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Nic się nie dzieje. Jeśli jest tak jak teraz (//sei()), na wyświetlaczu pojawia się napis.
    Dodam, że jest to wyświetlacz na kontrolerze HD44780 podłączony do Atmegi32 w porty PD3-PD7 oraz PC0 i PC1.

    Fragment jest z deklaracją do odbioru po USART. Odbiór działa prawidłowo, wyświetlane są znaki na ekranie ale potrzebuje jeszcze obsłużyć TIMER:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dlaczego po włączeniu sei() nie działa mi wyświetlanie? Musi to mieć jakiś związek z USART bo kiedyś używałem tego kodu do Timer i też tego wyświetlacza i nie było problemu :-)

    0 5
  • #2 11 Wrz 2012 14:47
    mirekk36
    Poziom 42  

    No włączasz przerwanie od UART'a .... a masz chociaż puste makro procedury obsługi tego przerwania w kodzie ? bo jeśli nie masz - a coś przyleci na UART to procek się resetuje - bo tak ma być a nie inaczej. Ponieważ kompilator tak się broni gdy programista zapomni wpisać chociażby pustej procedury obsługi przerwania....

    0
  • #3 11 Wrz 2012 15:43
    waldek454_33
    Poziom 7  

    Tak wygląda mój kod.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #4 11 Wrz 2012 15:54
    tronics
    Poziom 36  

    Masz obsługę przepełnienia licznika T0, ale gdzie obsługa przerwania od Rx complete, które włączasz bodajże:

    Code:
    UCSRB |= (1 << RXCIE );

    Tutaj?

    0
  • #5 11 Wrz 2012 16:06
    mirekk36
    Poziom 42  

    No właśnie o tym piszę autorowi ;)

    więc albo panie autorze nie włączaj przewania czyli wywal linię:

    UCSRB |= (1 << RXCIE );

    albo dopisz obsługę i tego przerwania ...

    0
  • #6 11 Wrz 2012 16:14
    waldek454_33
    Poziom 7  

    Dzięki, wystarczyło dodać puste metody do kodu i już śmiga.

    0