eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProblem lekko OT, ale w WinAVR ;-) › Re: Problem lekko OT, ale w WinAVR ;-)
  • Data: 2009-06-13 10:10:15
    Temat: Re: Problem lekko OT, ale w WinAVR ;-)
    Od: Grzegorz Kurczyk <g...@c...slupsk.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Użytkownik Zbych napisał:
    >
    > Dlatego napisałem, że do takich rzeczy jak sekcje atomowe są makra
    > zdefiniowane w pliku atomic.h, a ty uparcie chcesz rzeźbić ręcznie
    > (pomijając przy tym barierę).

    Nie, no nie chcę nic robić uparcie. Sugestie Kolegi bardzo mi pomogły,
    za co serdecznie dziękuję. Akurat w moim przypadku wystarczyło volatile,
    ale gdybym nie spojrzał do .lss to żyłbym w błogiej nieświadomości będąc
    pewnym, że zablokowałem przerwania w krytycznej sekcji programu i
    zastanawiając się dlaczego program kiksuje raz na ruski miesiąc. Tym
    bardziej, że w poprzedniej wersji kompilatora kolejność działań była
    taka jak w źródłówce. Z biblioteki atomic.h nie miałem jeszcze okazji
    korzystać, ale widzę, że chyba najwyższy czas :-) Nie narzekam na
    WinAVR, bo to niezły kompilator, ale główny problem w tym, że program,
    który w danej wersji WinAVR bez problemu się kompilował i co
    najważniejsze działał poprawnie, w nowszej wywala błędy kompilacji (co
    nie jest problemem), ale co gorsza kompilacja przechodzi bezbłędnie,
    tylko program chodzi nie do końca tak jak powinien. Z tego powodu z dużą
    rezerwą podchodzę do nowych wersji kompilatora.
    Problem w tym skąd mam wiedzieć (poza "brutalnym" zajrzeniem do pliku
    .lss), w którym momencie muszę posiłkować się sztuczką typu ATOMIC_BLOCK
    lub czymś podobnym, bo kompilator może wygenerować kod, nie do końca
    zgodny z założeniami autora kodu źródłowego. W podanym wcześniej
    przykładzie w jednej procedurze było źle, a w następnej już dobrze i
    nijak nie mogę wydedukować z czego to wynika. W przypadku volatile
    sytuacja jest jasna, ale z tym sei to kompilator zrobił mi psikusa, bo
    jest to pierwszy taki przypadek. Przecież sekcji cli() {..} sei() używa
    się dość często. W większych programach mam ich dużo i to jest jak na
    razie jedyna funkcja, w której takie zjawisko mi wystąpiło (choć po tym
    kwiatku nie jestem już tego taki pewien i dla pewności skorzystam z rady
    Kolegi Zbycha i porobię klamerki ATOMIC_BLOK).


    Pozdrawiam i dziękuję za udział w dyskusji.
    Grzegorz

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: