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.

Avrstudio - funkcja delay

A\/iat0r 04 Kwi 2015 15:01 630 3
  • #1 04 Kwi 2015 15:01
    A\/iat0r
    Poziom 8  

    Witam. Chciałem napisać prosty program miganie diody w avrstudio 6 dla atmegi8 z wykorzystaniem funkcji delay_ms().Następnie chciałem zobaczyć w symulacji jak owy program działa .I niestety niedziala.program kompiluje sie bez żadnych błędów i warnigow .Użyłem funkcji stepinto żeby zobaczyć w którym miejscu mojego kodu jest błąd i otwiera mi plik delay.h gdzie znalazłem dwa warningi
    1.# warning "F_CPU not defined for <util/delay.h>"
    2.# warning "Compiler optimizations disabled; functions from <util/delay.h> won't
    work as designed"
    Oraz taka informacja:__builtin_avr_delay_cycles(__ticks_dc);
    F_CPU zdefiniowałem i również ustawiłem optymalizacje na -0s. Przeczytałem kilka wątków z podobnym problemem ale nic nie pomogło.Pozdrawiam
    Oto program:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 3
  • #2 04 Kwi 2015 15:09
    mi14chal
    Poziom 28  

    Tutaj masz błąd:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Powinno być
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #3 04 Kwi 2015 15:11
    tmf
    Moderator Mikrokontrolery Projektowanie

    Co znaczy nie działa? Tego typu trywialne kody należy symulować z intensywnym wykorzystaniem okna podglądu assemblera - kompilator tak optymalizuje kod, że z oryginalnego niewiele zostaje i podgląd w C może być mylący. Często objawia się to tym, że pozornie nic się nie dzieje. Pamiętaj, że symulator nie działa tak szybko jak prawdziwy CPU - opóźnienie rzędu 500ms na symulatorze będzie się wykonywało pewnie z kilkanaście-kilkadziesiąt sekund, chociaż oczywyiście liczba taktów i czas symulacji będą odpowiadały prawdziwemu CPU.

    0
  • #4 04 Kwi 2015 19:14
    dondu
    Moderator Mikrokontrolery Projektowanie

    Aby wyjaśnić wątpliwości:

    A\/iat0r napisał:
    Użyłem funkcji stepinto żeby zobaczyć w którym miejscu mojego kodu jest błąd i otwiera mi plik delay.h gdzie znalazłem dwa warningi
    1.# warning "F_CPU not defined for <util/delay.h>"
    2.# warning "Compiler optimizations disabled; functions from <util/delay.h> won't
    work as designed"
    Oraz taka informacja:__builtin_avr_delay_cycles(__ticks_dc);
    F_CPU zdefiniowałem i również ustawiłem optymalizacje na -0s. Przeczytałem kilka wątków z podobnym problemem ale nic nie pomogło.Pozdrawiam

    To że je znalazłeś to nie znaczy, że się do Twojego przypadku odnoszą.
    To standardowy plik delay.h, który zawiera między innymi:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Ten pierwszy warunek w trakcie kompilacji gdy nie został zdefiniowany prawidłowo F_CPU spowoduje pokazanie warningu: F_CPU not defined for <util/delay.h> oraz ustawienie F_CPU na 1MHz.

    Ten drugi w trakcie kompilacji, gdy optymalizacja nie jest właczona, tylko pokaże warning: Compiler optimizations disabled; functions from <util/delay.h> won't work as designed

    W Twoim przypadku warningi na etapie kompilacji nie zostały pokazane, bo zrobiłeś wszystko prawidłowo. :)

    0