-
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
Następne wpisy z tego wątku
- 13.02.19 16:22 stary grzyb
- 13.02.19 21:13 Irek.N.
- 13.02.19 21:18 Irek.N.
- 13.02.19 21:21 Grzegorz Niemirowski
- 13.02.19 21:28 Irek.N.
- 13.02.19 22:03 Janusz
- 13.02.19 22:37 Queequeg
- 13.02.19 22:47 Queequeg
- 13.02.19 22:56 J.F.
- 13.02.19 22:59 Janusz
- 13.02.19 22:59 Queequeg
- 13.02.19 23:01 Queequeg
- 13.02.19 23:06 Queequeg
- 13.02.19 23:07 Grzegorz Niemirowski
- 14.02.19 00:59 HF5BS
Najnowsze wątki z tej grupy
- Czy cos fi przechodzi przez trafo separujące?
- śrubka masy
- Ciekawostka na dziś lock bity
- [OT] napisy w YT
- Było 83V
- Stare komputery
- Odbiornik ADS-B i wzmacniacze
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML