<?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=4&amp;t=20681&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-05-05T04:43:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20681&amp;mode</id>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-05T04:43:27+01:00</updated>
<published>2018-05-05T04:43:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207424#p207424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207424#p207424"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207424#p207424"><![CDATA[
Ale walnąłem babola! <br />Nie dałem &quot;break;&quot; w kodzie. <br />Poprawiłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 5 maja 2018, o 04:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mtbchn]]></name></author>
<updated>2018-05-05T00:05:49+01:00</updated>
<published>2018-05-05T00:05:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207423#p207423</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207423#p207423"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207423#p207423"><![CDATA[
Daro69, też pięknie! I smaczek z enum <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=18960">mtbchn</a> — 5 maja 2018, o 00:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-05-04T22:37:19+01:00</updated>
<published>2018-05-04T22:37:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207422#p207422</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207422#p207422"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207422#p207422"><![CDATA[
<div class="quotetitle">JarekB napisał(a):</div><div class="quotecontent"><br />(Zabawa na całego)<br /></div><br />Jak się bawić to się bawić. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />[syntax=c]#define ZAPAL_3_DIODY PORTB &amp;=~ ( LED1_PIN | LED2_PIN | LED3_PIN )<br />#define ZGAS_LEDY     PORTB |=  ( LED1_PIN | LED2_PIN | LED3_PIN ) <br />#define ZAPAL_LED_1   PORTB &amp;=~ ( LED1_PIN ); PORTB |=( LED2_PIN | LED3_PIN )<br />#define ZAPAL_LED_2   PORTB &amp;=~ ( LED2_PIN ); PORTB |=( LED1_PIN | LED3_PIN )<br /><br />enum stany{puste_3, puste_2, puste_1}; // puste_3 to pelnych 0, itd.<br />uint8_t stan;[/syntax]<br />[syntax=c]stan = ( (PINB &amp; 32) &gt;&gt; 5 ) + ( (PINB &amp; 16) &gt;&gt; 4) + ( (PINB &amp; 8) &gt;&gt; 3); // stan bedzie mial wartosci od 0 pelnych, poprzez 1 lub 2 pelne, do 3 pelne.<br /><br />switch (stan){<br />  case puste_3: ZAPAL_3_DIODY;<br />   break;<br />  case puste_2: ZAPAL_LED_2;<br />   break;<br />  case puste_1: ZAPAL_LED_1;<br />   break;<br />  default : ZGAS_LEDY;<br />};[/syntax]<br /><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=11549">Daro69</a> — 4 maja 2018, o 22:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mtbchn]]></name></author>
<updated>2018-05-04T13:46:24+01:00</updated>
<published>2018-05-04T13:46:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207399#p207399</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207399#p207399"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207399#p207399"><![CDATA[
Panowie, dziękuję wszystkim za podpowiedzi i sugestie. Rozwiązanie z switch() idealnie nadaje się do tego zadania i czyni kod klarownym (nawet bardziej niż w przypadku drabinki na PLC <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ).<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18960">mtbchn</a> — 4 maja 2018, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-05T04:30:44+01:00</updated>
<published>2018-05-04T11:46:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207397#p207397</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207397#p207397"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207397#p207397"><![CDATA[
Jeszcze jedno wymyśliłem <br />Gdyby tak<br />czujnik określić          1 wł  2 wył<br />czujnik dwa              10 wł 20 wył <br />czujnik trzy              100 wł 200 wył<br /><br />wtedy było by jeszcze prościej:<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />int main( void ) {<br />    uint8_t stany;<br /><br />    while ( 1 ) {<br />      //  stany = suma wartości  // tu suma wartości <br />      <br />       switch ( stany ) {<br />        case 222: {                 // wszystkie zbiorniki pełne<br />            // coś tam coś tam             <br />        }break;<br />        case 111: {                  // wszystkie zbiorniki puste<br />            // coś tam coś tam<br />        }break;<br />        case 122: {                 // pierwszy pusty - drugi, trzeci pełny<br />            // coś tam coś tam<br />        }break;<br />        }<br />    }<br />                             <br />}<br />}[/syntax]<br /><br />Idąc jeszcze krok dalej gdyby tak na zbiorniku zastosować dwie krańcówki to wtedy można by było tak <br /><br />100 krancowka_zbiornik1_pusty = 0    krancowka_zbiornik1_pelny= 0      <br />200 krancowka_zbiornik1_pusty = 1    krancowka_zbiornik1_pelny= 0   <br />300 krancowka_zbiornik1_pusty = 1    krancowka_zbiornik1_pelny= 1 <br /><br />Czyli <br />333 wszystkie zbiorniki pełne<br />233 z pierwszego ubywa dwa pełne<br />133 pierwszy zbiornik pusty dwa pełne <br />(Zabawa na całego)<br /><br />Jak się to spodoba naciśnij &quot;pomógł&quot;<br />A co. Może zacznę zbierać zielone pastylki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 4 maja 2018, o 11:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mg101]]></name></author>
<updated>2018-05-04T09:15:08+01:00</updated>
<published>2018-05-04T09:15:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207395#p207395</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207395#p207395"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207395#p207395"><![CDATA[
To może być dla Ciebie za proste, ale 5 min. nie zaszkodzi.<br /><!-- m --><a class="postlink" href="http://jaktodziala.eu/2017/12/20/rozdzial-3-uklady-logiczne/" >http://jaktodziala.eu/2017/12/20/rozdzi ... -logiczne/</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=683">mg101</a> — 4 maja 2018, o 09:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mtbchn]]></name></author>
<updated>2018-05-04T08:21:08+01:00</updated>
<published>2018-05-04T08:21:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207393#p207393</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207393#p207393"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207393#p207393"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />Daro69<br /></div>, tak ma być i jest to działanie świadome. <br />Założenia:<br />- brak cieczy w dowolnym jednym zbiorniku, aktywne LED1<br />- brak cieczy w dowolnych dwóch zbiornikach, aktywne LED2<br />- brak cieczy w trzech zbiornikach, aktywne LED1, LED2, LED3<br />Takie są założenia i zgodnie z nimi działa.<br /><br /><div class="quotetitle">JarekB napisał(a):</div><div class="quotecontent"><br />JarekB<br /></div>, dziękuję bardzo. To zdecydowanie powinno skrócić zapis.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18960">mtbchn</a> — 4 maja 2018, o 08:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-05-05T04:30:02+01:00</updated>
<published>2018-05-04T07:36:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207392#p207392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207392#p207392"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207392#p207392"><![CDATA[
Nie wiem czy dobrze zrozumiałem ale może tak?<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />int main( void ) {<br /><br />    uint8_t stany;<br />    stany =  I1_ + I2_ + I3_<br /><br />    while ( 1 ) {<br />        switch ( stany ) {<br />        case 3: {                 // wszystkie zbiorniki pełne<br />            // coś tam coś tam<br />        }break;<br />        case 0: {                  // wszystkie zbiorniki puste<br />            // coś tam coś tam<br />        }break;<br />        case 2: {                 // dwa zbiorniki pełne jeden pusty<br />            // coś tam coś tam<br />        }break;<br />        }<br />    } <br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 4 maja 2018, o 07:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-05-03T23:08:55+01:00</updated>
<published>2018-05-03T23:08:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207385#p207385</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207385#p207385"/>
<title type="html"><![CDATA[Re: Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207385#p207385"><![CDATA[
witam,<br />siatka siatką, ale założenia coś nie bardzo pasują.<br />np. jeżeli wystąpi stan niski na ( PB3, PB4, PB5, )<br />to spełnione będą ify : i pierwszy i drugi i trzeci,<br />czyli ustawimy stan niski na led1, wysoki na led2, niski na led2, wysoki na led1, po czym niski na led1 led2 led3.<br />jak to rozumieć.(jakie zalożenia) ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 3 maja 2018, o 23:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mtbchn]]></name></author>
<updated>2018-05-03T21:39:05+01:00</updated>
<published>2018-05-03T21:39:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207384#p207384</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207384#p207384"/>
<title type="html"><![CDATA[Układy kombinacyjne - zapis]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20681&amp;p=207384#p207384"><![CDATA[
Witam,<br /><br />zastanawiam się jak najlepiej podejść do kodu w przypadku typowych układów kombinacyjnych.<br />Załóżmy, że funkcję dla każdego wyjścia mam już zminimalizowaną poprzez zastosowanie siatki Karnaugh.<br /><br />Pytania:<br />1) Jak najlepiej zapisywać poszczególne kombinacje? Może w tablicy? Może skorzystać z instrukcji switch()?<br /><br />2) Warto sięgnąć po przerwania w takim przypadku? Załóżmy, że analizujemy stany trzech czujników poziomu cieczy, znajdujących się w osobnych zbiornikach.<br /><br />3) Co zrobić, żeby zapis był możliwie elegancki i nie rozwlekał się na dwa kilometry w każdym ifie?<br /><br />Z góry dzięki za odpowiedź i proszę o ewentualny przykład. Poniżej zamieszczam kod.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br /><br />#define LED1_PIN (1&lt;&lt;PB0)<br />#define LED2_PIN (1&lt;&lt;PB1)<br />#define LED3_PIN (1&lt;&lt;PB2)<br /><br />#define I1 (1&lt;&lt;PB3)<br />#define I2 (1&lt;&lt;PB4)<br />#define I3 (1&lt;&lt;PB5)<br /><br />#define I1_ (!(PINB &amp; I1))<br />#define I2_ (!(PINB &amp; I2))<br />#define I3_ (!(PINB &amp; I3))<br /><br />int main( void ) {<br />    PORTA = 255;<br />    PORTB = 255;<br />    PORTC = 255;<br />    PORTD = 255;<br /><br />    DDRB &amp;= ~( I1 | I2 | I3 );<br />    DDRB |= LED1_PIN | LED2_PIN | LED3_PIN;<br /><br /><br /><br />    while ( 1 ) {<br />        if (( I1_ &amp;&amp; I2_ &amp;&amp; I3_ ) || ( !I1_ &amp;&amp; I2_ &amp;&amp; !I3_ ) || ( I1_ &amp;&amp; !I2_ &amp;&amp; !I3_ ) || ( !I1_ &amp;&amp; !I2_ &amp;&amp; I3_ )) {<br /><br />            PORTB &amp;= ~LED1_PIN;<br />            PORTB |= LED2_PIN;<br /><br />        }<br /><br /><br /><br />        if (( I2_ &amp;&amp; I3_ ) || ( I1_ &amp;&amp; I2_ ) || ( I1_ &amp;&amp; I3_ ) ) {<br />            PORTB &amp;= ~LED2_PIN;<br />            PORTB |= LED1_PIN;<br /><br /><br />        }<br /><br />        if ( I1_ &amp;&amp; I2_ &amp;&amp; I3_ ) {<br />            PORTB &amp;= ~( LED1_PIN | LED2_PIN | LED3_PIN );<br /><br />        }<br /><br />        else {<br />            PORTB |= LED1_PIN | LED2_PIN | LED3_PIN;<br />        }<br /><br /><br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18960">mtbchn</a> — 3 maja 2018, o 21:39</p><hr />
]]></content>
</entry>
</feed>