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

[Rozwiązano] Atmega 32u4 - OCR0B - wpisanie wartości resetuje działanie programu

goslawen 19 Sie 2019 18:54 384 4
  • #1 18124013
    goslawen
    Poziom 10  
    Cześć,

    Mam problem z kodem na Atmega32u4.
    Mam dwie PCB z Atmega 32u4 - w jednej z nich podłączony jest silnik DC poprzez driver do pinu PWM. W drugiej jest tylko nadajnik.
    Używam NRF24l01, do którego zakupiłem biblioteki od firmy Atnel.
    Wydaje mi się, że musiałem popełnić gdzieś błąd w kodzie, ponieważ nie wszystkie, a nawet mniejszość pakietów dociera do odbiornika.

    Wydaje mi się, że błąd może być właśnie gdzieś z używaniem OCR0b - po wpisaniu w niego wartości program "resetuje się". Wychodzi z pętli while(1) i wskakuje na początek int main (void).

    Zdaję sobie sprawę że kod to makaron, ale wyrywam sobie już włosy z głowy i zmieniam w sposób mniej lub bardziej sensowny wiele elementów. Dobra, na pewno mniej niż bardziej :)

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #2 18124075
    excray
    Poziom 41  
    Nie widzę w Twoim kodzie obsługi przerwań które aktywowałeś. O ile nie ma ich w dołączonych plikach, to to jest przyczyną resetowania się procesora.
  • Pomocny post
    #3 18124080
    Konto nie istnieje
    Poziom 1  
  • #4 18124096
    goslawen
    Poziom 10  
    o_Tadeusz napisał:
    W kodzie umieść funkcję
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i sprawdź czy program nie skacze do niej.


    Dziękuję za odpowiedź,

    Po kliknięciu z breakpointem na miejscu w którym wstawiłem:
    ISR( ISR_BAD )
    {
    encoder++;
    }


    Atmel studio pokazuje:
    The breakpoint will not currently be hit. Unable to set requested breakpoint on target.The current selected deviceis unable to set breakpoints during runtime

    Dodano po 51 [sekundy]:

    excray napisał:
    Nie widzę w Twoim kodzie obsługi przerwań które aktywowałeś. O ile nie ma ich w dołączonych plikach, to to jest przyczyną resetowania się procesora.


    Bardzo dziękuję za podpowiedź, biorę się za sprawdzanie.
    Wydawało mi się, że przerwania które ja dodałem są obsłużone.
    Być może jest coś w bibliotece czego do końca nie rozumiem.
  • #5 18124179
    goslawen
    Poziom 10  
    o_Tadeusz napisał:
    W kodzie umieść funkcję
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i sprawdź czy program nie skacze do niej.


    Dziękuję za odpowiedź,

    Po kliknięciu z breakpointem na miejscu w którym wstawiłem:
    ISR( ISR_BAD )
    {
    encoder++;
    }


    Atmel studio pokazuje:
    The breakpoint will not currently be hit. Unable to set requested breakpoint on target.The current selected deviceis unable to set breakpoints during runtime

    Dodano po 51 [sekundy]:

    excray napisał:
    Nie widzę w Twoim kodzie obsługi przerwań które aktywowałeś. O ile nie ma ich w dołączonych plikach, to to jest przyczyną resetowania się procesora.


    Bardzo dziękuję za podpowiedź, biorę się za sprawdzanie.
    Wydawało mi się, że przerwania które ja dodałem są obsłużone.
    Być może jest coś w bibliotece czego do końca nie rozumiem.

    Dodano po 37 [minuty]:

    Bardzo dziękuję za pomoc.
    Faktycznie błędem było wyrzucenie obsługi przerwań.
    Chciałem metodą małych kroczków wyeliminować wszystko poza głównym problemem i stworzyłem sobie nowy :)
REKLAMA