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.

atmega64 - Zapętlające się funkcje

qba0991 01 Paź 2013 14:17 861 4
  • #1 01 Paź 2013 14:17
    qba0991
    Poziom 7  

    Mam problem z wywoływaniem funkcji na mikrokontrolerze atmega64. Jakąkolwiek funkcję wywołam, to wykonuje się w nieskończonej pętli. Dodam, że na mikrokontrolerze zmieniłem fabryczne ustawienie fuse bitów tak aby otrzymać taktowanie na wewnętrznym kwarcu równe 8Mhz. Aby to zrobić zmieniłem tylko ustawienia bitów CKSEL żadnych innych bitów nie zmieniałem. Dodatkowo w atmel studio w symbolach dodałem informację o aktualnym taktowaniu procesora F_CPU=8000000.

    oto listing programu

    Kod: C
    Zaloguj się, aby zobaczyć kod


    Efekt jest taki, że pin PD1 cyklicznie zmienia swoją wartość. Dlaczego sam się zapętla?

    0 4
  • Pomocny post
    #2 01 Paź 2013 14:29
    BlueDraco
    Specjalista - Mikrokontrolery

    Np. dlatego, że procesor się resetuje. Inny dobry powód - to złe ustawienie stosu, np. wskutek wybrania innego typu mikrokontrolera lub włączenia trybu zgodności z innym modelem w ustawieniach bitów konfiguracji.

    0
  • #3 01 Paź 2013 14:59
    qba0991
    Poziom 7  

    Dzięki, sam bym do tego nie doszedł. Podejrzewałem tylko, że chyba się resetuje. Problemem okazał się tryb zgodności. Czy mógłbyś mi jeszcze wytłumaczyć dlaczego to miało wpływ? Tak aby na przyszłość być mądrzejszym. Pozdrawiam

    0
  • #4 01 Paź 2013 15:07
    tmf
    Moderator Mikrokontrolery Projektowanie

    Tryb zgodności z ATMega103? Dlatego, że ona ma inaczej umieszczoną pamięć RAM, w efekcie stos jest ustawiony nieprawidłowo i zapewne każdy powrót z przerwania (instrukcja RET) kończy się skokiem pod adres 0xffff, skąd procesor realizuje zapewne nieudokumentowane instrukcje i leci aż do 0x0000, gdzie masz wektor RESET.

    0
  • #5 01 Paź 2013 22:24
    qba0991
    Poziom 7  

    Jeszcze raz dzięki :) Temat zamykam

    0