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

[ATMEGA128][C/AVRStudio6] - Procesor nie wchodzi do najprostszej funkcji

adammruk 05 Mar 2013 11:28 1236 5
REKLAMA
  • #1 12019553
    adammruk
    Poziom 16  
    Witam. Mam płytkę MMnet03 + EVBnet03 (z procesorem atmega128). Programuję AVR w C dosyć długo, ale z takim czymś się nie spotkałem jeszcze. Utknąłem na prostej rzeczy, otóż mam podłączoną diodę do wyjścia PB0, którą chcę wysterować. Teraz pytanie dlaczego ten program działa (dioda normalnie pracuje):

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


    A dlaczego ten już nie (dioda cały czas się świeci):
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Oba programy oczywiście kompilują się i programują bez problemu - jednak działanie jak opisane powyżej. Jedyna różnica między nimi to miejsce konfiguracji portu. Robiłem nowy projekt, ale efekt ten sam. Próbowałem dojść w którym momencie zatrzymuje się praca, wychodziło na to że zawsze procesor stawał jakby przed wykonaniem pierwszej instrukcji w funkcji. Gdy wszystko było w main(), układ chodził poprawnie. Mam najnowszą wersję Atmel Studio 6.0.1996 z SP2, optymalizacja -Os, mam też zdefiniowane F_CPU=16000000UL. Dlaczego tak się dzieje?
  • REKLAMA
  • #2 12019578
    BlueDraco
    Specjalista - Mikrokontrolery
    Może być źle ustawiony typ mikrokontrolera w środowisku, co skutkuje złą lokalizacją stosu i brakiem dostępnego stosu dla programu,a bez tego nie da się wołać funkcji i wracać z nich.
  • REKLAMA
  • #3 12019597
    adammruk
    Poziom 16  
    [ATMEGA128][C/AVRStudio6] - Procesor nie wchodzi do najprostszej funkcji

    Tak wygląda mój wybrany procesor - jest to pierwsza ATMEGA128 z listy, więc chyba się zgadza? Sprawdzałem też przed chwilą w symulatorze - program z funkcją działa poprawnie, tzn wchodzi do niej, ustawia kierunek, wychodzi i działa dalej w pętli w głównym programie. Aha, układ jest sprawny bo mam inny projekt, w Eclipse + AVR-GCC, który działa jako serwer http i wszystko tam ładnie działa. Problem mam tylko tutaj z Atmel Studio..
  • REKLAMA
  • #4 12019936
    excray
    Poziom 41  
    Jaką masz optymalizację? Pokaż co powstaje w pliku *.lss w pierwszym i drugim przypadku.
    Poza tym spróbuj zrobić tak jak poniżej i daj znać czy coś się zmieni w działaniu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #6 12022172
    adammruk
    Poziom 16  
    mattsk napisał:
    a odznaczyłeś m103C fusebit?

    Jesteś mistrzem.. Nie dopatrzyłem tego. Rzeczywiście, teraz działa wszystko poprawnie. Dziękuję i pozdrawiam:)
REKLAMA