eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaZagwozdka w C Keil. › Re: Zagwozdka w C Keil - wyjaśnienie.
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
    OSTED!not-for-mail
    From: Janusz <j...@o...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Zagwozdka w C Keil - wyjaśnienie.
    Date: Wed, 13 Feb 2019 13:48:39 +0100
    Organization: ATMAN - ATM S.A.
    Lines: 60
    Message-ID: <q413na$8rb$1@node2.news.atman.pl>
    References: <q3q59d$hp9$1@node1.news.atman.pl> <q3vee4$o74$1@node1.news.atman.pl>
    <5c63f185$0$476$65785112@news.neostrada.pl>
    NNTP-Posting-Host: 185.234.91.244
    Mime-Version: 1.0
    Content-Type: text/plain; charset=iso-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1550062122 9067 185.234.91.244 (13 Feb 2019 12:48:42
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Wed, 13 Feb 2019 12:48:42 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101
    Thunderbird/60.5.0
    In-Reply-To: <5c63f185$0$476$65785112@news.neostrada.pl>
    Content-Language: pl
    X-Antivirus: Avast (VPS 190213-0, 2019-02-13), Outbound message
    X-Antivirus-Status: Clean
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:740974
    [ ukryj nagłówki ]

    W dniu 2019-02-13 o 11:28, J.F. pisze:
    > Użytkownik "Irek.N."  napisał w wiadomości grup
    > dyskusyjnych:q3vee4$o74$...@n...news.atman.pl...
    >> Na wstępie małe usprawiedliwienie - procedura była napisana na 8051 i
    >> uruchomiona na jednym z pierwszych PLC jakie zrobiłem, w latach 90,
    >> ale stosowana też później*. W tamtych czasach wydawało mi się, że
    >> ogarniam podstawy C :)
    >
    >> W maszynie którą diagnozowałem definicja zmiennej DEL_STEP była o
    >> zgrozo jako unsigned char. Nie zwróciłem na to uwagi, choć zauważyłem,
    >> że sprawdzany jest tylko młodszy - przekazany - bajt zmiennej z którą
    >> wywołano funkcję. Wygląda więc na to, że kompilator miał rację.
    >
    > uzyc niewlasciwy typ - zdarza sie.
    > Ale nie spojrzec jaki to typ przy sprawdzaniu/szukaniu bledu ... czas na
    > lecytyne :-)
    >
    >> Po zmianie definicji na unsigned int kompilator robi OLR na obu
    >> połówkach zmiennej DEL_STEP a następnie sprawdza czy wynik operacji
    >> jest zerowy. Bardzo ładne rozwiązanie moim zdaniem.
    >
    > Typowe.
    >
    >> Zrobiłem jeszcze jedną rzecz. Ponieważ jak zauważyliście, nie ma
    >> gwarancji, że sprawdzenie 16 bitów będzie poprawne w przypadku gdy
    >> przerwanie może je zmienić, podłączyłem oscyloskop, persystencję na
    >> nieskończoną i obserwowałem czas generowany przez procedurę. Zdarzały
    >> się błędnie odliczone interwały, ale nie za często.
    >
    > Czyli potrafi przerwanie trafic miedzy dwie instrukcje ?
    > No w sumie - zawsze miedzy dwie trafia, tylko kwestia
    > prawdopodobienstwa, kiedy trafi miedzy dwie istotne.
    >
    > A tych instrukcji przy ORL byc moze nawet wiecej.
    >
    >> Zrobiłem jak Mateusz podpowiedział - flaga w przerwaniu modyfikującym
    >> zmienną. Nie złapałem żadnego błędnego odliczenia.
    >
    > Rozumiem, ze najpierw zmieniles typ zmiennej na int ?
    >
    > Ale nie bardzo rozumiem - przerwanie ustawia flage, modyfikuje zmienna,
    > gasi flage ?
    > na przetwarzanie w procesie głownym nie ma to znaczenia - sprawdzi
    > sobie, ze flagi nie ma, zacznie czytac zmienna ... i tu przerwanie
    > przychodzi.
    > Co innego gdy uzywa zmiennej przerwanie wyzszego poziomu.
    >
    > Ja bym tam wylaczyl przerwania na czas sprawdzenia, to raptem kilka
    > instrukcji, ale w pojedynczym while zaprogramowac to trudno.
    >
    > A swoja droga - czy Keil sam ich nie wylacza ? Dla zmiennych volatile
    > powinien.
    W avr studio nie wyłącza, i keil pewnie też,
    w gcc jest do tego osobna sekcja, atomic block się nazywa
    i w niej sie takie porównania robi.


    --
    Pozdr
    Janusz

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: