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!newsfeed.pionier.net.pl!goblin1!goblin.
    stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.new
    s.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    From: "J.F." <j...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    References: <q3q59d$hp9$1@node1.news.atman.pl> <q3vee4$o74$1@node1.news.atman.pl>
    In-Reply-To: <q3vee4$o74$1@node1.news.atman.pl>
    Subject: Re: Zagwozdka w C Keil - wyjaśnienie.
    Date: Wed, 13 Feb 2019 11:28:08 +0100
    MIME-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    Importance: Normal
    X-Newsreader: Microsoft Windows Live Mail 16.4.3528.331
    X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331
    Lines: 62
    Message-ID: <5c63f185$0$476$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.26.68.34
    X-Trace: 1550053766 unt-rea-a-01.news.neostrada.pl 476 83.26.68.34:55544
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:740973
    [ ukryj nagłówki ]

    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 późniejszych wersjach kodu (trochę inna wersja PLC) już była
    >poprawna definicja jako typ 16 bitowy, czyli kiedyś to zauważyłem,
    >poprawiłem i zapomniałem :(

    Ale o co chodzi - powiekszyles wartosc opoznienia ponad 255, i sie
    okazalo, ze nie czeka tyle co powinien ?

    J.

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: