eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaZagwozdka w C Keil. › Re: Zagwozdka w C Keil - wyjaśnienie.
  • Data: 2019-02-13 23:06:03
    Temat: Re: Zagwozdka w C Keil - wyjaśnienie.
    Od: q...@t...no1 (Queequeg) szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    J.F. <j...@p...onet.pl> wrote:

    >> Wbrew intuicji -- nie :) Modyfikator `volatile` oznacza tylko tyle, że
    >> kompilator nie może robić założeń co do zawartości zmiennej opatrzonej tym
    >> modyfikatorem, bo zmienna może zmienić wartość poza ścieżką wykonania (np.
    >> jest to sprzętowy rejestr, lub inny wątek ją modyfikuje, lub właśnie
    >> przerwanie). `volatile` nie oznacza, że kompilator gwarantuje atomiczny
    >> dostęp do zmiennej (czyli że wyłączy wszystko inne, co może zmienić jej
    >> wartość w trakcie dostępu -- czy to wątki, czy przerwania, czy zewnętrzny
    >> sprzęt).
    >
    > No ale czy nie powinien ? Bo skoro sie moze zmienic w sposob
    > niekontrolowany, to jak mozna wierzyc wartosci odczytanej
    > nieatomicznie ?

    Są do tego inne mechanizmy. Kompilator nawet nie ma takiej możliwości, bo
    volatile nie oznacza nic innego niż "nie optymalizuj dostępu do tej
    zmiennej". Kompilator może, ale nie musi wiedzieć, co zmienia tę zmienną.

    Zobacz, jak w AVR są zrealizowane rejestry 16-bitowe (np. datasheet do
    atmega8 strona 77, "Accessing 16-bit Registers").

    >> AVR ma to rozwiązane w ten sposób:
    >> https://www.nongnu.org/avr-libc/user-manual/group__u
    til__atomic.html
    >
    > No i widac ja sie te pomysly nadaja do prostego:
    > while (ctr) ;

    No niestety :)

    --
    Eksperymentalnie: http://facebook.com/groups/pl.misc.elektronika

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: