<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=58&amp;t=20155&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-02-09T19:37:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=20155&amp;mode</id>
<entry>
<author><name><![CDATA[fysiek]]></name></author>
<updated>2018-02-09T19:37:21+01:00</updated>
<published>2018-02-09T19:37:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203584#p203584</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203584#p203584"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203584#p203584"><![CDATA[
Dziękuję panowie. Widać już światełko w tunelu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8342">fysiek</a> — 9 lut 2018, o 19:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-02-09T09:00:55+01:00</updated>
<published>2018-02-09T09:00:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203551#p203551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203551#p203551"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa "If"]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203551#p203551"><![CDATA[
Skompiluj sobie prosty przykład z zastosowaniem zmiennych w kilku bajtach oraz w kilku bitach jednego bajtu i porównaj pliki .lss - powinieneś zobaczyć różnice.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 9 lut 2018, o 09:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-02-06T23:45:17+01:00</updated>
<published>2018-02-06T23:45:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203468#p203468</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203468#p203468"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203468#p203468"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Mirku po Twoim rozwinięciu już chyba wszystkie wątpliwości powinny być rozwiane<br /></div>Jeszcze można do proponowanej struktury dodać unię, aby odwoływać się po różnej części (po bitach lub po całych bajtach) tej samej zmiennej. Jak praktycznie zastosować unię można znaleźć w Mirkowym poradniku.<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />Kolega <strong>fysiek</strong> zapytał się o zwykłego if-a, a dostał taką dawkę wiedzy, że pewnie długo nie będzie się mógł otrząsnąć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 6 lut 2018, o 23:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom277]]></name></author>
<updated>2018-02-06T14:07:14+01:00</updated>
<published>2018-02-06T14:07:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203442#p203442</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203442#p203442"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203442#p203442"><![CDATA[
O kurcze dzięki Mirku.<br />A o jaką szybkość mi chodzi, normalną  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> Po prostu natknąłem się na informację, że stosowanie pól bitowych jest kosztem szybkości dostępu do nich no i nie miałem zielonego pojęcia o jak duże spowolnienie chodzi, jaki jest to rząd wielkości.<br />Wiesz jak jest? Dla uczącego się, non stop pojawią się pytania i niejasność. Później wiele z tych rzeczy okazuje się nieistotne, ale to przychodzi z doświadczeniem, więc pytam.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=548">Tom277</a> — 6 lut 2018, o 14:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-02-06T08:31:20+01:00</updated>
<published>2018-02-06T08:31:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203430#p203430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203430#p203430"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203430#p203430"><![CDATA[
Ło matko! <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Mirku po Twoim rozwinięciu już chyba wszystkie wątpliwości powinny być rozwiane. Swoim kosztem zaoszczędziłeś mi kupę klikania <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Tylko podziękować i złocisty napój postawić <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":-D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 6 lut 2018, o 08:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-02-06T07:31:35+01:00</updated>
<published>2018-02-06T07:31:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203429#p203429</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203429#p203429"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203429#p203429"><![CDATA[
<div class="quotetitle">Tom277 napisał(a):</div><div class="quotecontent"><br />Sylwek a powiedź proszę jak to się ma do szybkości działania?<br /></div><br />Jeśli się kolega tak mocno zastanawia nad szybkością działania to najpierw powiedz o jaką szybkość ci chodzi i do czego ta szybkość ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">Tom277 napisał(a):</div><div class="quotecontent"><br />W BB są opisane pola bitowe z lakoniczną informacją<br /></div><br />Skoro masz pola bitowe to wiadomo, że ładnie wygląda to dla oka, ale jeśli się je źle zorganizuje np jakieś pole kilkubitowe będzie leżało na granicy dwóch bajtów ... to już w ogóle aby mieć do tego dostęp kompilator będzie musiał wygenerować sporo operacji maskowania aby się dostać do potrzebnych bitów ...<br /><br /><div class="quotetitle">Tom277 napisał(a):</div><div class="quotecontent"><br />że oszczędność kodu jest kosztem szybkości dostępu do pojedynczych bitów i że programista sam musi określić, co jest bardziej istotne.<br /></div><br />Dlatego jak jest sporo pamięci ram a potrzeba zaledwie kilku prostych flag do których odwołujemy się sporadycznie w programie i pojedynczo to absolutnie dużo szybciej wyjdzie odwoływać się nawet do flagi jedno-bitowej umieszczonej w jednym bajcie (pomimo marnotrawstwa 7 bitów) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ja wprawdzie nie jestem SylwekK ale w odpowiedzi na pytanie<br /><div class="quotetitle">Tom277 napisał(a):</div><div class="quotecontent"><br />Czy mógłbyś to trochę rozjaśnić?<br /></div><br /><br />Jeśli zaś przychodzi nam często korzystać z kilku flag naraz to tak jak pisze Sylwek warto je grupować w ramach jednego bajtu i ... no co trzeba robić aby dowiadywać się o stanie np kilku z nich naraz ? MASKOWAĆ panie - maskować<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />oczywiście idealną sytuacją jest gdy ktoś chce po prostu sprawdzić tylko (tak jak autor w pierwszym poście) czy któraś flaga jest = 1<br /><br />to co za problem umieścić je wszystkie w ramach JEDNEGO bajtu - a tak na prawdę to co oznacza umieszczenie ? Nic ... tyle co nadanie nazwy zmiennej, np<br /><br />[syntax=c]uint8_t moje_flagi;[/syntax]<br /><br />i nie ważne z ilu bitów będziesz korzystał czy z 2, 4, czy z 8-miu - zawsze ten cały warunek z pierwszego postu można zapisać tak:<br />[syntax=c]if( moje_flagi ) .... zrób coś ....[/syntax]<br /><br />A jeśli będziesz chciał je sprawdzać grupami czy np tylko kilka z nich jest = 1 a inne są = 0 ... to przygotowujesz sobie odpowiednie maski dla takich grupek zgodnie z poradnikiem wyżej i po prostu dajesz warunek z odpowiednią maską<br />[syntax=c]if( moje_flagi &amp; ENGINE_FLAGS ) .... zrób.... coś ...<br /><br />if( moje_flagi &amp; OIL_FLAGS ) .... zrób coś innego...[/syntax]<br /><br />Oczywiście gdy ma ich być więcej to wtedy już opłacać się może stworzenie pól bitowych np:<br /><br />[syntax=c]typedef struct {<br />   uint8_t ENGINE_FLAGS: 4;<br />   uint8_t OIL_FLAGS: 2;<br />   uint8_t RTC_FLAG: 1;<br />   uint8_t EEP_FLAG: 1;<br />} TMYFLAGS;<br /><br />TMYFLAGS moje_flagi;[/syntax]<br /><br />i wtedy te warunki wyżej mogą wyglądać tak jak niżej już bez naszego maskowania bo kompilator za nas porobi odpowiednie maskowanie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]if( moje_flagi.ENGINE_FLAGS ) ... zrób coś ....<br /><br />if( moje_flagi.OIL_FLAGS ) ... zrób coś innego...[/syntax]<br /><br />albo nawet<br /><br />[syntax=c]if( moje_flagi.ENGINE_FLAGS &amp;&amp; !moje_flagi.OIL_FLAGS ) ... zrób coś tam coś tam[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 lut 2018, o 07:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom277]]></name></author>
<updated>2018-02-06T07:02:24+01:00</updated>
<published>2018-02-06T07:02:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203426#p203426</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203426#p203426"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203426#p203426"><![CDATA[
Sylwek a powiedź proszę jak to się ma do szybkości działania? W BB są opisane pola bitowe z lakoniczną informacją, że oszczędność kodu jest kosztem szybkości dostępu do pojedynczych bitów i że programista sam musi określić, co jest bardziej istotne. Czy mógłbyś to trochę rozjaśnić? Myślę, że autor pytania również skorzysta, bo twoja propozycja jest zdecydowanie &quot;ładniejsza&quot; niż 7 warunków if.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=548">Tom277</a> — 6 lut 2018, o 07:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-02-05T14:14:49+01:00</updated>
<published>2018-02-05T14:14:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203365#p203365</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203365#p203365"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203365#p203365"><![CDATA[
Ja często grupuję potrzebne flagi w jednym bajcie i w podobnej do Twojej sytuacji po prostu sprawdzam tylko jeden warunek, a nie całą litanię <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br />Twoje flagi akurat można spokojnie podpiąć pod taki bajt i nazwać, np. grupa_error.<br />[syntax=c]if (grupa error){<br /> <br />        }[/syntax]<br />Oczywiście ważne jest aby korzystać w programie z pojedynczych bitów, bo dość często wykorzystuje się cały bajt wykorzystując tylko dwa stany marnując jego potencjał. Ma to uzasadnienie gdy zależy na szybkości i objętości kodu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 5 lut 2018, o 14:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2018-02-05T14:13:07+01:00</updated>
<published>2018-02-05T14:13:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203364#p203364</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203364#p203364"/>
<title type="html"><![CDATA[Re: Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203364#p203364"><![CDATA[
jest[syntax=c]język c<br /><br />    if (error_flag_ignition || error_flag_inverter || error_flag_driver ||<br /> error_flag_Ebutton || error_flag_Termal || error_flag_In1 || error_flag_In2){<br />     <br />            }[/syntax] np. tak<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 5 lut 2018, o 14:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fysiek]]></name></author>
<updated>2018-02-05T14:10:10+01:00</updated>
<published>2018-02-05T14:10:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203363#p203363</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203363#p203363"/>
<title type="html"><![CDATA[Insfrukcja warunkowa &quot;If&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20155&amp;p=203363#p203363"><![CDATA[
Witam. Pisze program i natknąłem się na blok warunkowy w którym muszę sprawdzić jednocześnie siedem flag. Ma to działać na zasadzie jeżeli którakolwiek z nich jest ustawiona wykona się blok warunkowy. Moje pytanie jest następujące - czy pisać półkilometrową linijkę, czy jest jakiś bardziej elegancki sposób o którym nie wiem?<br /><br />[syntax=c]if (error_flag_ignition || error_flag_inverter || error_flag_driver || error_flag_Ebutton || error_flag_Termal || error_flag_In1 || error_flag_In2){<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8342">fysiek</a> — 5 lut 2018, o 14:10</p><hr />
]]></content>
</entry>
</feed>