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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-01-09T20:20:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10119&amp;mode</id>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2015-01-09T20:20:53+01:00</updated>
<published>2015-01-09T20:20:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113424#p113424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113424#p113424"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113424#p113424"><![CDATA[
Dzięki za pochwałę. Cieszę się choć trochę udało mi się pomóc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 9 sty 2015, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrelius]]></name></author>
<updated>2015-01-09T20:08:00+01:00</updated>
<published>2015-01-09T20:08:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113416#p113416</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113416#p113416"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113416#p113416"><![CDATA[
Znalazłem rozwiązanie, bo wygląda, że działa  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />[syntax=c]/*******          <br />                   <br />                    TUTAJ SĄ MOJE PROBLEMY !!!!!!!!      <br />                   <br />                    ********/<br />                   <br />                    if ( klawisz_wcisniety( CZUJNIK_A) )                   <br />                   <br />                    // działa odwrotnie tzn. po ponownym naciśnięciu PILOT_A przechodzi ze stałego otworzenia bramy na czasowe<br />                    // oraz po przejściu w &quot;czasówkę&quot; nie chce przejść w otwieranie na stałe<br />                   <br />                   <br />                    {                                      <br />                            MOSTEK_H_A_OFF;                                                         // brama została otwarta<br />                            if (key_lock &amp;&amp; (klawisz_wcisniety( PILOT_A )))        // wciśniecie drugi raz przycisku PILOT_A powoduje zmiane ze stałego otworzenia na czasowe<br />                                            {<br />while (key_lock &amp;&amp; !(klawisz_wcisniety( PILOT_B )))<br />{<br />//if (klawisz_wcisniety( PILOT_B )) break;<br />key_lock=1;<br />i=0;<br />MOSTEK_H_B_OFF;<br />LED_1SEK_OFF;<br />}<br />                                            <br />                                            }<br />     <br />     <br />                                            else if(!(klawisz_wcisniety( PILOT_A )))<br />                                            {<br />                                                    key_lock=1;<br />                                                    if (TIFR &amp; (1 &lt;&lt; OCF1A))                //odliczanie czasu<br />                                                    {<br />                                                            PORTB ^= (1 &lt;&lt; 0);                      // Zmień stan diody LED<br />                                                            TIFR = (1 &lt;&lt; OCF1A);            // Wyzerowanie flagi CTC poprzez wpisanie do niej jedynki<br />                                                            i++;<br />                                                           <br />                                                            if ((i==10))                            // czas po którym brama ma się samoczynnie zamknąć<br />                                                            {<br />                                                                    i=0;<br />                                                                    MOSTEK_H_B_ON;                  // zamykanie bramy<br />                                                                    MOSTEK_H_A_OFF;                 // logiczne zaprzeczenie otwierania bramy<br />//key_lock=0;<br />                                                            }<br />                                                    }<br />                                                                           <br />                                            }<br />                    }<br />           <br />                    //**********************czujnik zamknięcia bramy**************************************//                              <br />                                           <br />                                            if ( klawisz_wcisniety( CZUJNIK_B) )  <br />MOSTEK_H_B_OFF;           // brama została zamknięta<br />                                           <br />                                           <br />                    //**********************czujnik bariery optoelektronicznej****************************//       <br />                                           <br />                                            if ( klawisz_wcisniety( CZUJNIK_C) )  <br />                                            {<br />                                                    MOSTEK_H_B_OFF;<br />                                                    MOSTEK_H_A_ON;<br />                                            }<br />            }<br />    }[/syntax]<br /><br />Dziękuję za pomoc <strong><span style="color: #8040BF">gumeni</span></strong> za cenną wskazówkę. <br /><div class="quotetitle">gumeni napisał(a):</div><div class="quotecontent"><br />Nie przejdzie na stałe otwieranie bo nigdzie nie zerujesz zmiennej key_lock.<br /></div><br />To ona dała mi do zrozumienia, że coś jest nie tak ze zmienną <strong><em><span style="color: #0000FF">key_lock</span></em></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7705">andrelius</a> — 9 sty 2015, o 20:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrelius]]></name></author>
<updated>2015-01-09T18:41:33+01:00</updated>
<published>2015-01-09T18:41:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113396#p113396</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113396#p113396"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113396#p113396"><![CDATA[
Tkwi w &quot;czasówce&quot; ale po ponownym naciśnięciu PILOT_A nic się nie dzieje tzn. nie przechodzi w &quot;stałe&quot; otwarcie bramy<br /><br />Napisałem coś takiego i działa w odwróconej logice przez cały program, a nie jak miałem wcześniej, że raz zadziałało w odwróconej logice, a potem tylko &quot;czasówka&quot;<br /><br />[syntax=c]TUTAJ SĄ MOJE PROBLEMY !!!!!!!!      <br />                   <br />                    ********/<br />                   <br />                    if ( klawisz_wcisniety( CZUJNIK_A) )                   <br />                   <br />                    // działa odwrotnie tzn. po ponownym naciśnięciu PILOT_A przechodzi ze stałego otworzenia bramy na czasowe<br />                    // oraz po przejściu w &quot;czasówkę&quot; nie chce przejść w otwieranie na stałe<br />                   <br />                   <br />                    {                                      <br />                            MOSTEK_H_A_OFF;                                                         // brama została otwarta<br />                            if(!key_lock &amp;&amp; !( PIND &amp; PILOT_A ) )           // wciśniecie drugi raz przycisku PILOT_A powoduje zmiane ze stałego otworzenia na czasowe<br />                                            {<br />                                            key_lock=1;<br />                                            i=0;<br />                                            MOSTEK_H_B_OFF;<br />                                            LED_1SEK_OFF;<br />                                            }<br />     <br />     <br />                                            else if(key_lock &amp;&amp; ( PIND &amp; PILOT_A ) )<br />                                            {<br />                                                    key_lock++;<br />                                                    if (TIFR &amp; (1 &lt;&lt; OCF1A))                //odliczanie czasu<br />                                                    {<br />                                                            PORTB ^= (1 &lt;&lt; 0);                      // Zmień stan diody LED<br />                                                            TIFR = (1 &lt;&lt; OCF1A);            // Wyzerowanie flagi CTC poprzez wpisanie do niej jedynki<br />                                                            i++;<br />                                                           <br />                                                            if ((i==10))                            // czas po którym brama ma się samoczynnie zamknąć<br />                                                            {<br />                                                                    i=0;<br />                                                                    MOSTEK_H_B_ON;                  // zamykanie bramy<br />                                                                    MOSTEK_H_A_OFF;                 // logiczne zaprzeczenie otwierania bramy<br />key_lock=0;<br />                                                            }<br />                                                    }<br />                                                                           <br />                                            }<br />                    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7705">andrelius</a> — 9 sty 2015, o 18:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2015-01-09T18:22:53+01:00</updated>
<published>2015-01-09T18:22:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113391#p113391</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113391#p113391"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113391#p113391"><![CDATA[
[syntax=c]/*******          <br />                       <br />                        TUTAJ SĄ MOJE PROBLEMY !!!!!!!!      <br />                       <br />                        ********/<br />                       <br />                        if ( klawisz_wcisniety( CZUJNIK_A) )                  <br />                       <br />                        // działa odwrotnie tzn. po ponownym naciśnięciu PILOT_A przechodzi ze stałego otworzenia bramy na czasowe<br />                        // oraz po przejściu w &quot;czasówkę&quot; nie chce przejść w otwieranie na stałe<br />                       <br />                       <br />                        {                                      <br />                                MOSTEK_H_A_OFF;                                                         // brama została otwarta<br />                                if(key_lock &amp;&amp; !( PIND &amp; PILOT_A ) )           // wciśniecie drugi raz przycisku PILOT_A powoduje zmiane ze stałego otworzenia na czasowe<br />                                                {<br />                                                key_lock=1;<br />                                                i=0;<br />                                                MOSTEK_H_B_OFF;<br />                                                LED_1SEK_OFF;<br />                                                }<br />         <br />         <br />                                                else if(!key_lock &amp;&amp; ( PIND &amp; PILOT_A ) )<br />                                                {<br />                                                       <br />                                                        if (TIFR &amp; (1 &lt;&lt; OCF1A))                //odliczanie czasu<br />                                                        {<br />                                                                PORTB ^= (1 &lt;&lt; 0);                      // Zmień stan diody LED<br />                                                                TIFR = (1 &lt;&lt; OCF1A);            // Wyzerowanie flagi CTC poprzez wpisanie do niej jedynki<br />                                                                i++;<br />                                                               <br />                                                                if ((i==10))                            // czas po którym brama ma się samoczynnie zamknąć<br />                                                                {<br />                                                                        i=0;<br />                                                                        MOSTEK_H_B_ON;                  // zamykanie bramy<br />                                                                        MOSTEK_H_A_OFF;                 // logiczne zaprzeczenie otwierania bramy<br />                                                                }<br />                                                        }<br />                                                                               <br />                                                }<br />                        }[/syntax]<br />A teraz coś się zmieniło?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 9 sty 2015, o 18:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrelius]]></name></author>
<updated>2015-01-09T17:58:20+01:00</updated>
<published>2015-01-09T17:58:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113385#p113385</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113385#p113385"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113385#p113385"><![CDATA[
Niestety nie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7705">andrelius</a> — 9 sty 2015, o 17:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2015-01-09T17:46:44+01:00</updated>
<published>2015-01-09T17:46:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113382#p113382</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113382#p113382"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113382#p113382"><![CDATA[
[syntax=c]/*******          <br />                   <br />                    TUTAJ SĄ MOJE PROBLEMY !!!!!!!!      <br />                   <br />                    ********/<br />                   <br />                    if ( klawisz_wcisniety( CZUJNIK_A) )                  <br />                   <br />                    // działa odwrotnie tzn. po ponownym naciśnięciu PILOT_A przechodzi ze stałego otworzenia bramy na czasowe<br />                    // oraz po przejściu w &quot;czasówkę&quot; nie chce przejść w otwieranie na stałe<br />                   <br />                   <br />                    {                                      <br />                            MOSTEK_H_A_OFF;                                                         // brama została otwarta<br />                            if(key_lock &amp;&amp; !( PIND &amp; PILOT_A ) )           // wciśniecie drugi raz przycisku PILOT_A powoduje zmiane ze stałego otworzenia na czasowe<br />                                            {<br />                                            key_lock=1;<br />                                            i=0;<br />                                            MOSTEK_H_B_OFF;<br />                                            LED_1SEK_OFF;<br />                                            }<br />     <br />     <br />                                            else if(!key_lock &amp;&amp; ( PIND &amp; PILOT_A ) )<br />                                            {<br />                                                    key_lock++;<br />                                                    if (TIFR &amp; (1 &lt;&lt; OCF1A))                //odliczanie czasu<br />                                                    {<br />                                                            PORTB ^= (1 &lt;&lt; 0);                      // Zmień stan diody LED<br />                                                            TIFR = (1 &lt;&lt; OCF1A);            // Wyzerowanie flagi CTC poprzez wpisanie do niej jedynki<br />                                                            i++;<br />                                                           <br />                                                            if ((i==10))                            // czas po którym brama ma się samoczynnie zamknąć<br />                                                            {<br />                                                                    i=0;<br />                                                                    MOSTEK_H_B_ON;                  // zamykanie bramy<br />                                                                    MOSTEK_H_A_OFF;                 // logiczne zaprzeczenie otwierania bramy<br />                                                            }<br />                                                    }<br />                                                                           <br />                                            }<br />                    }[/syntax]<br />Sprawdź czy to zadziała.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 9 sty 2015, o 17:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrelius]]></name></author>
<updated>2015-01-09T17:40:36+01:00</updated>
<published>2015-01-09T17:40:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113380#p113380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113380#p113380"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113380#p113380"><![CDATA[
Jestem już po lekturze tych artykułów<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-zwoka-czasowa-cd3.html" >http://mirekk36.blogspot.com/2012/10/ob ... a-cd3.html</a><!-- m --><br /><br />Mimo wszystko ciężko mi dostosować program wg. wskazówek Pana Mirosława  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><br /><div class="quotetitle">gumeni napisał(a):</div><div class="quotecontent"><br />Nie przejdzie na stałe otwieranie bo nigdzie nie zerujesz zmiennej key_lock.<br /></div><br /><br />Gdzie powinienem zerować zmienną key_lock <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br /><br />Proszę o pomoc odnośnie tej części:<br />[syntax=c]/*******          <br />               <br />                TUTAJ SĄ MOJE PROBLEMY !!!!!!!!      <br />               <br />                ********/<br />               <br />                if ( klawisz_wcisniety( CZUJNIK_A) )                   <br />               <br />                // działa odwrotnie tzn. po ponownym naciśnięciu PILOT_A przechodzi ze stałego otworzenia bramy na czasowe<br />                // oraz po przejściu w &quot;czasówkę&quot; nie chce przejść w otwieranie na stałe<br />               <br />               <br />                {                                      <br />                        MOSTEK_H_A_OFF;                                                         // brama została otwarta<br />                        if(!key_lock &amp;&amp; !( PIND &amp; PILOT_A ) )           // wciśniecie drugi raz przycisku PILOT_A powoduje zmiane ze stałego otworzenia na czasowe<br />                                        {<br />                                        key_lock=1;<br />                                        i=0;<br />                                        MOSTEK_H_B_OFF;<br />                                        LED_1SEK_OFF;<br />                                        }<br /> <br /> <br />                                        else if(key_lock &amp;&amp; ( PIND &amp; PILOT_A ) )<br />                                        {<br />                                                key_lock++;<br />                                                if (TIFR &amp; (1 &lt;&lt; OCF1A))                //odliczanie czasu<br />                                                {<br />                                                        PORTB ^= (1 &lt;&lt; 0);                      // Zmień stan diody LED<br />                                                        TIFR = (1 &lt;&lt; OCF1A);            // Wyzerowanie flagi CTC poprzez wpisanie do niej jedynki<br />                                                        i++;<br />                                                       <br />                                                        if ((i==10))                            // czas po którym brama ma się samoczynnie zamknąć<br />                                                        {<br />                                                                i=0;<br />                                                                MOSTEK_H_B_ON;                  // zamykanie bramy<br />                                                                MOSTEK_H_A_OFF;                 // logiczne zaprzeczenie otwierania bramy<br />                                                        }<br />                                                }<br />                                                                       <br />                                        }<br />                }[/syntax]<br /><br />reszta działa ok tak jak chce. Tutaj mam problem aby najpierw była &quot;czasówka&quot;, potem otwarcie &quot;stałe&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7705">andrelius</a> — 9 sty 2015, o 17:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2015-01-09T17:22:14+01:00</updated>
<published>2015-01-09T17:22:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113377#p113377</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113377#p113377"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113377#p113377"><![CDATA[
Nie przejdzie na stałe otwieranie bo nigdzie nie zerujesz zmiennej key_lock.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 9 sty 2015, o 17:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marcin_G]]></name></author>
<updated>2015-01-09T13:28:56+01:00</updated>
<published>2015-01-09T13:28:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113322#p113322</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113322#p113322"/>
<title type="html"><![CDATA[Re: Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113322#p113322"><![CDATA[
Hmm, a rzuć okiem tutaj <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html" >http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html</a><!-- m --><br /><br />Jakaś dziwna ta Twoja funkcja do obsługi wciśniętego klawisza, tak jakbyś ją rozbił na drobne. Część jest w funkcji a część w pętli &quot;while&quot;. Poczytaj to co podałem Ci w linku oraz dwie kolejne części tego artykułu, a myślę że sporo Ci się wyjaśni.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=758">Marcin_G</a> — 9 sty 2015, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrelius]]></name></author>
<updated>2015-01-09T13:19:44+01:00</updated>
<published>2015-01-09T13:19:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113318#p113318</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113318#p113318"/>
<title type="html"><![CDATA[Sprawdzanie przycisku oraz instrukcja warunkowa IF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10119&amp;p=113318#p113318"><![CDATA[
Witam serdecznie<br /><br />Piszę do Was, ponieważ walczę od kilku dni i nie mogę sobie poradzić z problemem. Pragnę dodać, że jestem początkujący (wręcz raczkujący) w pisaniu programów. Jestem na etapie opracowuję mały banalny projekt bramy przesuwnej (niewątpliwie bluebook bardzo mi pomógł w pisaniu programu  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ) . Założenia są takie:<br />- przycisk pilota A otwiera na chwilę bramę po czym ponownie ją zamyka<br />- jeżeli ponownie nacisnę przycisk A w chwili otworzenia &quot;czasowego&quot; bramy przechodzi w &quot;stałe&quot; otwarcie bramy<br /><br />Program działa trochę inaczej - działa odwrotnie tzn. po ponownym naciśnięciu PILOT_A przechodzi ze stałego otworzenia bramy na czasowe oraz po przejściu w &quot;czasówkę&quot; nie chce przejść w otwieranie na stałe. <br /><br />[syntax=c]/*<br /> * Prototyp_sterownika_bramy_przesuwnej.c<br /> *<br /> * Created: 2015-01-06 15:12:51<br /> *  Author: Andrew<br /> */ <br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />// *************   definicje dla preprocesora<br /><br />#define LED_1SEK (1&lt;&lt;PB0)// definicja pinu do którego podłączona jest dioda kontrolna informująca o zliczaniu<br />#define LED_1SEK_ON PORTB &amp;= LED_1SEK// makrodefinicja - załączenie diody<br />#define LED_1SEK_OFF PORTB |= LED_1SEK// makrodefinicja - wyłączenie diody<br />#define LED_1SEK_TOG PORTB ^= LED_1SEK// makrodefinicja - zmiana stanu na przeciwny<br /><br />#define MOSTEK_H_A (1&lt;&lt;PC7)// definicja pinu do którego podłączony MOSTEK_H_A odpowiedzialny za otwieranie bramy<br />#define MOSTEK_H_A_ON PORTC &amp;= ~MOSTEK_H_A// makrodefinicja - załączenie MOSTEK_H_A<br />#define MOSTEK_H_A_OFF PORTC |= MOSTEK_H_A// makrodefinicja - wyłączenie MOSTEK_H_A<br /><br />#define MOSTEK_H_B (1&lt;&lt;PC6)// definicja pinu do którego podłączony MOSTEK_H_B odpowiedzialny za zamykanie bramy<br />#define MOSTEK_H_B_ON PORTC &amp;= ~MOSTEK_H_B// makrodefinicja - załączenie MOSTEK_H_B<br />#define MOSTEK_H_B_OFF PORTC |= MOSTEK_H_B// makrodefinicja - wyłączenie MOSTEK_H_B<br /><br /><br />#define CZUJNIK_A (1&lt;&lt;PD0)// definicja sygnału z czujnika otwarcia bramy<br />#define CZUJNIK_B (1&lt;&lt;PD1)// definicja sygnału z czujnika zamknięcia bramy<br />#define CZUJNIK_C (1&lt;&lt;PD2)// definicja sygnału z bariery optoelektronicznej<br /><br />#define PILOT_A (1&lt;&lt;PD7)// definicja sygnału otwarcia czasowego z pilota<br />#define PILOT_B (1&lt;&lt;PD6)// definicja sygnału zamknięcia bramy z pilota<br /><br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz);// deklaracja funkcji obsługi przycisków pilota i czujników<br />volatile uint8_t i,x,temp;// pomocnicze zmienne 8-bitowe<br />uint8_t key_lock;// zmienna od eliminacji drgań styków :-) - fajna sprawa<br /><br /><br />void timer0PWM_init()// generacja sygnału PWM<br />{<br />DDRB |= (1&lt;&lt;PB3);// kierunek pinu PB3 - WYJŚCIE // jest to port sygnału Fast PWM<br /><br />/*ustawienia TIMER0 w tryb Fast PWM<br />Fpwm = F_CPU / (prescaler * 256)*/<br /><br />TCCR0 |= (1&lt;&lt;WGM01)|(1&lt;&lt;WGM00);// tryb Fast PWM<br />TCCR0 |= (1&lt;&lt;COM01)|(1&lt;&lt;COM00);// clear at TOP<br />TCCR0 |= (1&lt;&lt;CS02);// prescaler = 256 (80 str MANUALA)<br />/* Fpwm ok. 244 Hz*/<br /><br />/***********************tutaj zmienia sie wartość PWM****************************/<br /><br />OCR0 = 60;// wypełnienie zawiera sie w wartosciach od 0 do 255 <br />// gdzie 255 to maks wypelnienie 100%<br />}<br /><br /><br /><br />void timer1CTC_init()// timer zliczania 1 sekundy<br />{<br />/*ustawienia TIMER1 w tryb CTC<br />Fctc = F_CPU / (2 * prescaler (1 + OCR1A)*/<br /><br />TCCR1B |= (1&lt;&lt;WGM12);// tryb CTC 16-bit<br />TCCR1B |= (1&lt;&lt;CS12)|(1&lt;&lt;CS10);// preskaler = 1024<br />OCR1A = 15625-1;// wpisana wartość co daje odliczenie dokładnie jednej sekundy<br />}<br /><br /><br /><br /><br />int main(void)<br />{<br />/****** inicjalizacja *********/<br /><br />DDRB |= LED_1SEK;// Ustawienie bitu LED jako wyjścia<br />DDRC |= ( MOSTEK_H_A | MOSTEK_H_B );// kierunek pinu PC7,PC6,PC5 – WYJściowy<br />PORTC |= ( MOSTEK_H_A | MOSTEK_H_B);// wyłączenie portów<br />DDRD &amp;= ~( PILOT_A | PILOT_B | CZUJNIK_A | CZUJNIK_B | CZUJNIK_C );// kierunek pinów - WEJściowy<br />PORTD |= PILOT_A | PILOT_B | CZUJNIK_A | CZUJNIK_B | CZUJNIK_C;// podciągnięcie pinu do VCC<br /><br />timer0PWM_init(); <br />timer1CTC_init();<br /><br /><br />//*********************************** pętla główna programu  ***********************************//<br />while (1)<br />{<br />//**********************otwieranie czasowe bramy***************************************//<br /><br />if ( klawisz_wcisniety( PILOT_A ))<br />{<br />MOSTEK_H_A_ON; // otwieranie bramy<br />MOSTEK_H_B_OFF;// logiczne zaprzeczenie zamykania bramy<br />}<br /><br /><br />//**********************zamykanie bramy***********************************************//<br /><br />if ( klawisz_wcisniety( PILOT_B )  )<br />{<br />MOSTEK_H_B_ON; // zamykanie bramy<br />MOSTEK_H_A_OFF;// logiczne zaprzeczenie otwierania bramy<br />}<br /><br /><br />//**********************czujnik otworzenia bramy**************************************//<br /><br /><br />/*******          <br /><br />TUTAJ SĄ MOJE PROBLEMY !!!!!!!!      <br /><br />********/<br /><br />if ( klawisz_wcisniety( CZUJNIK_A) )<br /><br />// działa odwrotnie tzn. po ponownym naciśnięciu PILOT_A przechodzi ze stałego otworzenia bramy na czasowe<br />// oraz po przejściu w &quot;czasówkę&quot; nie chce przejść w otwieranie na stałe<br /><br /><br />{<br />MOSTEK_H_A_OFF;// brama została otwarta<br />if(!key_lock &amp;&amp; !( PIND &amp; PILOT_A ) )// wciśniecie drugi raz przycisku PILOT_A powoduje zmiane ze stałego otworzenia na czasowe<br />{<br />key_lock=1;<br />i=0;<br />MOSTEK_H_B_OFF;<br />LED_1SEK_OFF;<br />}<br /><br /><br />else if(key_lock &amp;&amp; ( PIND &amp; PILOT_A ) )<br />{<br />key_lock++;<br />if (TIFR &amp; (1 &lt;&lt; OCF1A))//odliczanie czasu<br />{<br />PORTB ^= (1 &lt;&lt; 0);// Zmień stan diody LED<br />TIFR = (1 &lt;&lt; OCF1A);// Wyzerowanie flagi CTC poprzez wpisanie do niej jedynki<br />i++;<br /><br />if ((i==10))// czas po którym brama ma się samoczynnie zamknąć<br />{<br />i=0;<br />MOSTEK_H_B_ON; // zamykanie bramy<br />MOSTEK_H_A_OFF;// logiczne zaprzeczenie otwierania bramy<br />}<br />}<br /><br />}<br />}<br /><br /><br />//**********************czujnik zamknięcia bramy**************************************//<br /><br />if ( klawisz_wcisniety( CZUJNIK_B) )  MOSTEK_H_B_OFF;// brama została zamknięta<br /><br /><br />//**********************czujnik bariery optoelektronicznej****************************//<br /><br />if ( klawisz_wcisniety( CZUJNIK_C) )  <br />{<br />MOSTEK_H_B_OFF;<br />MOSTEK_H_A_ON;<br />}<br />}<br />}<br /><br /><br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz)  // obsługa przycisków i czujników<br />{<br />if ( PIND &amp; klawisz )// klawisz wciśnięty?<br />{<br />_delay_ms(80);// czas drgań styków<br />if( PIND &amp; klawisz ) return 0;   // jeśli wciśnięty?<br />}// zakończ funkcję - rezultat = 0<br />return 1;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 1<br />}[/syntax]<br /><br />Liczę gorąco na Waszą pomoc i proszę o wyrozumiałość  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7705">andrelius</a> — 9 sty 2015, o 13:19</p><hr />
]]></content>
</entry>
</feed>