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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-05-31T20:48:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=20766&amp;mode</id>
<entry>
<author><name><![CDATA[Tok-Tok]]></name></author>
<updated>2018-05-31T20:48:17+01:00</updated>
<published>2018-05-31T20:48:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208482#p208482</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208482#p208482"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208482#p208482"><![CDATA[
Kolego anshar Bardzo ślicznie Ci dziękuje za pomoc i poświęcony czas (wiszę ci zimne piwko)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18135">Tok-Tok</a> — 31 maja 2018, o 20:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2018-05-30T01:11:54+01:00</updated>
<published>2018-05-30T01:11:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208436#p208436</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208436#p208436"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208436#p208436"><![CDATA[
<div class="quotetitle">Tok-Tok napisał(a):</div><div class="quotecontent"><br />bardzo mi na tym zależy<br /></div><br />Proszę  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />#define SET_TIME 3000<br /><br />//leds<br />#define DDR_LED1        DDRA<br />#define PORT_LED1       PORTA<br />#define LED1            (1&lt;&lt;PA0)<br /><br />#define DDR_LED2        DDRA<br />#define PORT_LED2       PORTA<br />#define LED2            (1&lt;&lt;PA1)<br /><br />#define LED1_ON         PORT_LED1 &amp;= ~LED1<br />#define LED1_OFF        PORT_LED1 |= LED1<br />#define LED2_ON         PORT_LED2 &amp;= ~LED2<br />#define LED2_OFF        PORT_LED2 |= LED2<br /><br />//key<br />#define KEY_PORT        PORTD<br />#define KEY_PIN         PIND<br />#define KEY             (1&lt;&lt;PD7)<br /><br />uint16_t key1_lock;<br />uint16_t set_time;<br />uint8_t flag;<br /><br />void io_init( void );<br />void change_leds( uint8_t fl );<br />uint8_t key_press(uint16_t * klock, volatile uint8_t * KPIN, uint8_t key_mask);<br />uint8_t td_delay(uint16_t * my_del);<br /><br /><br />int main(void){<br /><br />io_init();<br /><br />while(1) {<br /><br />change_leds( flag );<br /><br />if( key_press( &amp;key1_lock, &amp;KEY_PIN, KEY ) &amp;&amp; flag ) flag = td_delay( &amp;set_time );<br /><br />}<br /><br />}<br /><br />uint8_t td_delay(uint16_t * my_del) {<br /><br />if( 0 == *my_del ) flag = 0;<br />else {<br />(*my_del)--;<br />_delay_ms(1);<br />flag = 1;<br />}<br />return flag;<br />}<br /><br /><br />uint8_t key_press(uint16_t * klock, volatile uint8_t * KPIN, uint8_t key_mask) {<br /><br />register uint8_t key_press = (*KPIN &amp; key_mask);<br />uint8_t key_state = 0;<br /><br />if( !*klock &amp;&amp; !key_press ) {<br />*klock = 1;<br />flag = 1;<br />set_time = SET_TIME;<br />key_state = 0;<br />} else if( *klock &amp;&amp; key_press ) {<br />(*klock)++;<br />key_state = 1;<br />}<br />return key_state;<br />}<br /><br />void change_leds( uint8_t fl ) {<br /><br />if( !fl ) {<br />PORT_LED1 &amp;= ~LED1;<br />PORT_LED2 |= LED2;<br />}<br />else {<br />PORT_LED1 |= LED1;<br />PORT_LED2 &amp;= ~LED2;<br />}<br />}<br /><br />void io_init( void ) {<br /><br />DDR_LED1  |=LED1;<br />DDR_LED2  |=LED2;<br />PORT_LED2 |=LED2;<br /><br />KEY_PORT |= KEY;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 30 maja 2018, o 01:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tok-Tok]]></name></author>
<updated>2018-05-29T19:46:13+01:00</updated>
<published>2018-05-29T19:46:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208419#p208419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208419#p208419"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208419#p208419"><![CDATA[
Witam odświeżam temat może znajdzie się ktoś na forum kto pomoże mi z tym problemem bardzo mi na tym zależy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18135">Tok-Tok</a> — 29 maja 2018, o 19:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tok-Tok]]></name></author>
<updated>2018-05-26T15:11:21+01:00</updated>
<published>2018-05-26T15:11:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208262#p208262</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208262#p208262"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208262#p208262"><![CDATA[
Witam w dalszym ciągu walczę z tym blokującym przyciskiem,jest już lepiej gdyż poradziłem sobie z blokowaniem w dość&quot; nie ładny&quot; sposób wg.Pana Mirka ale pojawił się następny problem a mianowicie: Po wciśnięciu klawisza w trakcie oczekiwania &quot;td_delay_ms&quot; pierwsza dioda mignie i zapali się dioda druga. Czy może mi ktoś pomóc zlikwidować efekt mignięcia diody 1.Byłbym baaaardzo wdzięczny za pomoc. Tutaj podaję mój kod[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br /><br /><br />#define LED1 (1&lt;&lt;PA0)<br />#define LED2 (1&lt;&lt;PA1)<br />#define LED1_ON PORTA &amp;= ~LED1   //makrodefinicja włączenia diody<br />#define LED1_OFF PORTA |= LED1   //makrodefinicja wyłączenia diody<br />#define LED2_ON PORTA &amp;= ~LED2   //makrodefinicja włączenia diody<br />#define LED2_OFF PORTA |= LED2   //makrodefinicja wyłączenia diody<br /><br />#define KEY (1&lt;&lt;PD7)<br /><br />#define KEYD !(PIND &amp; KEY)<br /><br />uint8_t klawisz(void);<br />uint8_t flag;<br />void td_delay_ms(uint16_t ms);<br /><br />int main(void){<br /><br /><br />    //inicjalizacja<br /><br />    DDRA  |=LED1;            //kierunek wyjściowy PA0<br />   // PORTA |=LED1;            //wyłączenie diody<br />    DDRA  |=LED2;            //kierunek wyjściowy PA1<br />    PORTA |=LED2;            //wyłączenie diody<br />    DDRD  &amp;=~KEY;           //kierunek wejściowy PD7<br />    PORTD |= KEY;           //podciąganie klawisza do vcc(wewnętrzny rezystor)<br /><br /><br />while(1){<br /><br /><br /><br /><br /> if ( klawisz() &amp;&amp; !flag ) {<br />            LED1_OFF;<br />            LED2_ON;<br />            flag = 1;<br /><br />        } else if ( !klawisz() &amp;&amp; flag ) {<br />         LED2_OFF;<br />        td_delay_ms( 3000 );<br />            LED1_ON;<br /><br />            flag = 0;<br /><br />        }<br />}<br /><br />}<br /><br /><br /><br />//definicja funkcji<br /><br />void td_delay_ms(uint16_t ms){<br />while(ms--){<br />_delay_ms(1);<br /> if (!(PIND &amp; KEY)){<br /> break;<br /><br /> }<br />}<br /><br />}<br /><br /><br /><br /><br /><br /><br />//funkcja nie posiada argumętów zwraca 0 lub 1<br /><br />uint8_t klawisz(void){<br /><br />        if(KEYD){              //klawisz Wciśnięty ?<br />                _delay_ms(80);     //czas drgań styków<br /><br />                // jeśli wciśnięty zakończ funkcję- rezultat 1<br />                if(KEYD) return 1;<br />        }<br /><br />        return 0; // jeśli niewciśnięty zakończ funkcję- rezultat 0<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18135">Tok-Tok</a> — 26 maja 2018, o 15:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sredni]]></name></author>
<updated>2018-05-23T17:23:47+01:00</updated>
<published>2018-05-23T17:23:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208170#p208170</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208170#p208170"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208170#p208170"><![CDATA[
Zapoznaj się z tym tematem a wiele się wyjaśni.<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.co.uk/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html?m=1" >http://mirekk36.blogspot.co.uk/2012/10/ ... 2.html?m=1</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3346">sredni</a> — 23 maja 2018, o 17:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tok-Tok]]></name></author>
<updated>2018-05-23T17:11:55+01:00</updated>
<published>2018-05-23T17:11:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208167#p208167</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208167#p208167"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208167#p208167"><![CDATA[
Dobrze kombinuje że w procedurze przerwania trzeba sprawdzać przycisk?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18135">Tok-Tok</a> — 23 maja 2018, o 17:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sredni]]></name></author>
<updated>2018-05-24T12:25:36+01:00</updated>
<published>2018-05-23T16:37:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208165#p208165</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208165#p208165"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208165#p208165"><![CDATA[
Da się.  Ale na samym początku napisałeś, że oprócz przełączania tych diod i czekania  3sek nic więcej nie będzie robione.  Stąd ten delay<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3346">sredni</a> — 23 maja 2018, o 16:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tok-Tok]]></name></author>
<updated>2018-05-23T14:57:38+01:00</updated>
<published>2018-05-23T14:57:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208159#p208159</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208159#p208159"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208159#p208159"><![CDATA[
Wszystko fajnie działa sprawdziłem dzisiaj.Dziękuje za pomoc. A jeszcze nurtuje mnie jedna kwestia dotycząca blokowania się programu przez tego &quot;delay-a&quot; to znaczy że jeśli nacisnę przycisk w trakcie oczekiwania to nic się nie dzieje. Stąd moje pytanie czy ktoś może mi pomóc zrobić  tak żeby w trakcie oczekiwania na zapalenie diody pierwszej(tych 3 sekund) można było ponownie nacisnąć przycisk i zapalić ponownie 2 diodę? Wydaje mi się że trzeba by do tego wykorzystać przerwanie choć by timerek programowy tylko Jak tego dokonać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18135">Tok-Tok</a> — 23 maja 2018, o 14:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sredni]]></name></author>
<updated>2018-05-21T21:01:05+01:00</updated>
<published>2018-05-21T21:01:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208069#p208069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208069#p208069"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208069#p208069"><![CDATA[
Tu masz to co zmieniłem w pętli while<br /><br />[syntax=c]while ( 1 ) {<br />        if ( klawisz() &amp;&amp; !flag ) {<br />            LED1_OFF;<br />            LED2_ON;<br />            flag = 1;<br /><br />        } else if ( !klawisz() &amp;&amp; flag ) {<br />            _delay_ms( 3000 );<br />            LED1_ON;<br />            LED2_OFF;<br />            flag = 0;<br />        }<br />    }[/syntax]<br />Nie zapomnij przed main o <br />[syntax=c]uint8_t flag;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3346">sredni</a> — 21 maja 2018, o 21:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tok-Tok]]></name></author>
<updated>2018-05-21T18:07:39+01:00</updated>
<published>2018-05-21T18:07:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208060#p208060</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208060#p208060"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208060#p208060"><![CDATA[
No właśnie nie wiele mam do pokazania gdyż kombinuję jak ugryźć temat i nic z tego nie wychodzi po kompilacji i wgraniu do procka zaczynają się dziać różne rzeczy( czyli np. zapala się dioda zielona i program kończy pracę).Dlatego napisałem wątek w tym dziale<br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br /><br />//definicje dla preprocesora<br /><br />//Dioda<br /><br />#define LED1 (1&lt;&lt;PC5)           //definicja portu gdzie podłączona jest dioda 1<br />#define LED2 (1&lt;&lt;PC4)           //definicja portu gdzie podłączona jest dioda 2<br />#define LED1_ON PORTC &amp;= ~LED1   //makrodefinicja włączenia diody 1<br />#define LED2_ON PORTC &amp;= ~LED2   //makrodefinicja włączenia diody 2<br />#define LED1_OFF PORTC |= LED1   //makrodefinicja wyłączenia diody 1<br />#define LED2_OFF PORTC |= LED2   //makrodefinicja wyłączenia diody 2<br />#define LED1_Z PORTC ^= LED1     //makrodefinicja zmiany stanu diody 1<br />#define LED2_Z PORTC ^= LED2     //makrodefinicja zmiany stanu diody 2<br /><br />//Klawisz<br /><br />#define KEY (1&lt;&lt;PB1)          //definicja portu gdzie podłączony jest klawisz<br />#define KEYD !(PINB &amp; KEY)    //makro sprawdzające czy jest stan niski<br />#define KEYP !(PINB &amp; KEY)<br /><br />uint8_t klawisz(void);<br />uint8_t klawiszp(void);<br /><br />//początek programu<br /><br />int main(void){<br /><br /><br />//inicjalizacja<br /><br />DDRC  |=LED1;            //kierunek wyjściowy PC5<br />//PORTC |=LED1;            //wyłączenie diody<br />DDRC  |=LED2;            //kierunek wyjściowy PC4<br />PORTC |=LED2;            //wyłączenie diody<br />DDRB  &amp;=~KEY;           //kierunek wejściowy PB1<br />PORTB |= KEY;           //podciąganie klawisza do vcc(wewnętrzny rezystor)<br /><br /><br />while(1){<br /><br /><br /><br />if(klawisz()){<br /><br />    LED1_OFF;<br />    _delay_ms(50);<br />LED2_Z;<br /><br /><br />if(klawiszp()){<br /><br />LED2_OFF;<br />_delay_ms(100);<br />LED1_ON;<br /><br /><br /><br />}<br /><br /><br /><br /><br />}<br /><br /><br />}<br /><br /><br /><br /><br />}<br /><br /><br /><br /><br /><br /><br />//definicja funkcji<br />//funkcja nie posiada argumętów zwraca 0 lub 1<br /><br />uint8_t klawisz(void){<br /><br />if(KEYD){              //klawisz Wciśnięty ?<br />_delay_ms(80);     //czas drgań styków<br /><br />// jeśli wciśnięty zakończ funkcję- rezultat 1<br />if(KEYD) return 1;<br />}<br /><br />return 0; // jeśli niewciśnięty zakończ funkcję- rezultat 0<br />}<br /><br /><br /><br />uint8_t klawiszp(void){<br /><br />if(KEYP){              //klawisz puszczony ?<br />_delay_ms(50);     //czas drgań styków<br /><br />// jeśli wciśnięty zakończ funkcję- rezultat 0<br />if(KEYP) return 0;<br />}<br /><br />return 1; // jeśli nie wciśnięty zakończ funkcję- rezultat 1<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18135">Tok-Tok</a> — 21 maja 2018, o 18:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-05-21T17:42:24+01:00</updated>
<published>2018-05-21T17:42:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208058#p208058</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208058#p208058"/>
<title type="html"><![CDATA[Re: Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208058#p208058"><![CDATA[
to pokaż co do tej pory stworzyłeś?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 maja 2018, o 17:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tok-Tok]]></name></author>
<updated>2018-05-21T17:18:34+01:00</updated>
<published>2018-05-21T17:18:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208055#p208055</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208055#p208055"/>
<title type="html"><![CDATA[Sygnalizacja kierunku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20766&amp;p=208055#p208055"><![CDATA[
Witam mam nadzieje że ktoś mi pomoże bo nie potrafię tego ogarnąć.<br />Chciałbym napisać programik który w trakcie pracy nie robił by nic oprócz świecenia diodą (np. czerwona) i to niby nic ale to nie koniec. Gdyż po naciśnięciu przycisku chciał bym aby zgasił tą diodę(czerwona) i zapalił drugą (np.zielona) na tak długo jak długo będzie trzymany przycisk. I to jeszcze nie koniec udziwnień  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />gdyż po puszczeniu przycisku chcę aby program odczekał z powtórnym zapaleniem diody czerwonej 3 sekundy.Czyli reasumując pali się dioda czerwona, naciskam przycisk zapala się zielona , puszczam przycisk i po 3 sekundach z powrotem zapala się czerwona. Proszę o pomoc i z góry dziękuje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18135">Tok-Tok</a> — 21 maja 2018, o 17:18</p><hr />
]]></content>
</entry>
</feed>