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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-07-24T17:30:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=22437&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-07-24T17:30:10+01:00</updated>
<published>2019-07-24T17:30:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220656#p220656</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220656#p220656"/>
<title type="html"><![CDATA[Re: Drgania styków w przerwaniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220656#p220656"><![CDATA[
<div class="quotetitle">mateusz186 napisał(a):</div><div class="quotecontent"><br />Która lekcja w książce jest o przerwaniach zewnętrznych i flagach bo właśnie zakończyłem przerwania wewnętrzne<br /></div><br />Zajrzyj chociażby do przykładu o RTC gdzie pokazuję ogólnie mechanizm flagi<br /><br />A przy okazji ustaw sobie na forum (w ustawieniach swojego profilu ikonkę - że masz już BB) <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=54">mirekk36</a> — 24 lip 2019, o 17:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz186]]></name></author>
<updated>2019-07-24T17:27:28+01:00</updated>
<published>2019-07-24T17:27:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220655#p220655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220655#p220655"/>
<title type="html"><![CDATA[Re: Drgania styków w przerwaniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220655#p220655"><![CDATA[
Która lekcja w książce jest o przerwaniach zewnętrznych i flagach bo właśnie zakończyłem przerwania wewnętrzne<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20768">mateusz186</a> — 24 lip 2019, o 17:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2019-07-24T17:10:26+01:00</updated>
<published>2019-07-24T17:10:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220654#p220654</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220654#p220654"/>
<title type="html"><![CDATA[Re: Drgania styków w przerwaniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220654#p220654"><![CDATA[
Bezsensowne są te warunki w zewnętrznych przerwaniach. Tam tylko flagę ustawiaj. Poza tym odliczenie do 40 w pętli głównej bez żadnego opóźnienia to tak jak by od razu było tam 40 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Proponuję zaopatrzyć się w BB na początek i liznąć postaw.<br />Aha, czy naprawdę przyciski muszą być z przerwań obsługiwane. Ja nie twierdzę, że czasem jest taka potrzeba (np. wybudzenie procka), ale stosowanie ich ot tak, bo są to proszenie się o problemy, zwłaszcza początkujący. Trzeba wiedzieć, że to strasznie czułe wejścia i nawet ich konfiguracja w złej kolejności może mieć wpływ na spodziewane działanie (o czym się chyba właśnie przekonałeś).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 24 lip 2019, o 17:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz186]]></name></author>
<updated>2019-07-24T17:13:43+01:00</updated>
<published>2019-07-24T16:52:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220653#p220653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220653#p220653"/>
<title type="html"><![CDATA[Re: Drgania styków w przerwaniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220653#p220653"><![CDATA[
Wymyśliłem coś takiego działa ale nwm dlaczego na początku pokazuje mi się wartość 1 i automatycznie przeskakuje na zero zamiast 0 na początku<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />//definicje cyfr wyświetlanch na wyśw.<br />#define ZERO (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB5)<br />#define JEDEN ( 1&lt;&lt;PB1 | 1&lt;&lt;PB2 )<br />#define DWA (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB6)<br />#define TRZY (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB6)<br />#define CZTERY (1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define PIEC (1&lt;&lt;PB0 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define SZESC (1&lt;&lt;PB0 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define SIEDEM (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2)<br />#define OSIEM (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define DZIEWIEC (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define KANAL_PIERWSZY PORTC &amp;= ~(1&lt;&lt;PC0)<br />#define KANAL_DRUGI PORTC &amp;= ~(1&lt;&lt;PC1)<br />#define KANAL_TRZECI PORTC &amp;= ~(1&lt;&lt;PC2)<br />#define KANAL_CZWARTY PORTC &amp;= ~(1&lt;&lt;PC3)<br /><br />//zmienne przerywające<br />volatile uint8_t WYSWIETL_CYFRE = 0;<br />volatile uint8_t TAB&#91;4&#93;;<br />volatile uint16_t PRZYCISK;<br />volatile uint8_t KTORA_CYFRA = 0;<br />volatile uint8_t BLOKADA_1 = 0;<br />volatile uint8_t BLOKADA = 0;<br /><br />int main(void){<br /><br />DDRB = 0xff;//ustawienie pinów B jako wyjścia<br />DDRC = 0xff;//ustawienie pinów C jako wyjścia<br />DDRD = 0x00;//ustawienie pinów D jako wejścia<br />PORTB = 0xff;//ustawienie stanu wysokiego na pinach B<br />PORTC = 0xff;//ustawienie stanu wysokiego na pinach C<br />PIND = 0xff;<br /><br />EICRA |= ( 1&lt;&lt;ISC01 | 1&lt;&lt;ISC00 | 1&lt;&lt;ISC11 | 1&lt;&lt;ISC10 );//ustawienie wyzwolenia na zbocze narastające<br />EIMSK |= (1&lt;&lt;INT1 | 1&lt;&lt;INT0);//zezwolenie na przerwanie INT0 oraz INT1<br /><br />TCCR0A |= (1&lt;&lt;WGM01);//ustawienie timera w tryb CTC<br />TCCR0B |= (1&lt;&lt;CS00) | (1&lt;&lt;CS02);//ustawienie preskalera na CRL/1024<br />OCR0A = 27;//podzielenie wartości po preskalerze przez 27<br />TIMSK0 |= (1&lt;&lt;OCIE0A);//zezwolenie na przerwanie timera<br /><br />sei();//globalne zezwolenie na wszystkie przerwania<br /><br />while(1){//na przykładzie liczby 1342<br /><br />WYSWIETL_CYFRE = 0;//cyfra 1...<br />TAB&#91;WYSWIETL_CYFRE&#93; = (PRZYCISK / 1000);//C0=1342/1000 =&gt; C1=1, r=342<br />WYSWIETL_CYFRE = 1;//cyfra 2...<br />TAB&#91;WYSWIETL_CYFRE&#93; = ((PRZYCISK % 1000)/100);//C1=(1342%1000)/100 =&gt; C2=342/100 =&gt; C2=3, r=42<br />WYSWIETL_CYFRE = 2;//cyfra 3...<br />TAB&#91;WYSWIETL_CYFRE&#93; = ((PRZYCISK % 100)/10);//C2=(1342%100)/10 =&gt; C3=42/10 =&gt; C3=4, r=2<br />WYSWIETL_CYFRE = 3;//cyfra 4...<br />TAB&#91;WYSWIETL_CYFRE&#93; = (PRZYCISK %10);//C3=1342%10 =&gt; C4=2<br /><br />}<br />}<br /><br />ISR( INT0_vect ){<br />if(PRZYCISK &lt; 9999) BLOKADA_1 = 1;<br /><br />}<br /><br />ISR( INT1_vect ){<br />if(PRZYCISK &gt; 0) BLOKADA_1 = 2;<br />}<br /><br />ISR( TIMER0_COMPA_vect ){//instrukcja przerwania TIMER0_COMPA<br />if(KTORA_CYFRA == 4) KTORA_CYFRA = 0;//po wyświetleniu 4 cyfry wraca do 1<br />PORTB = 0xff;//ustawienie stanu 1 na katodach<br />PORTC = 0xff;//ustawienie stanu 1 na anodach<br />if(KTORA_CYFRA == 0) {KANAL_PIERWSZY; WYSWIETL_CYFRE = 0;}//ustawienie stanu 0 na anodzie pierwszej<br />if(KTORA_CYFRA == 1) {KANAL_DRUGI; WYSWIETL_CYFRE = 1;}//ustawienie stanu 0 na anodzie drugiej<br />if(KTORA_CYFRA == 2) {KANAL_TRZECI; WYSWIETL_CYFRE = 2;}//ustawienie stanu 0 na anodzie trzeciej<br />if(KTORA_CYFRA == 3) {KANAL_CZWARTY;WYSWIETL_CYFRE = 3;}//ustawienie stanu 0 na anodzie czwartej<br />switch(TAB&#91;WYSWIETL_CYFRE&#93;){//wybieranie cyfry jaka ma być wyświetlona<br />    case 0 : {PORTB &amp;= ~ZERO; break;}//ustawienie anod na stan 0 (cyfra 0)<br />case 1 : {PORTB &amp;= ~JEDEN; break;}//ustawienie anod na stan 0 (cyfra 1)<br />case 2 : {PORTB &amp;= ~DWA; break;}//ustawienie anod na stan 0 (cyfra 2)<br />case 3 : {PORTB &amp;= ~TRZY; break;}//ustawienie anod na stan 0 (cyfra 3)<br />case 4 : {PORTB &amp;= ~CZTERY; break;}//ustawienie anod na stan 0 (cyfra 4)<br />case 5 : {PORTB &amp;= ~PIEC; break;}//ustawienie anod na stan 0 (cyfra 5)<br />case 6 : {PORTB &amp;= ~SZESC; break;}//ustawienie anod na stan 0 (cyfra 6)<br />case 7 : {PORTB &amp;= ~SIEDEM; break;}//ustawienie anod na stan 0 (cyfra 7)<br />case 8 : {PORTB &amp;= ~OSIEM; break;}//ustawienie anod na stan 0 (cyfra 8)<br />case 9 : {PORTB &amp;= ~DZIEWIEC; break;}//ustawienie anod na stan 0 (cyfra 9)<br />}<br />KTORA_CYFRA++;//zmiana modułu +1<br /><br />if(BLOKADA_1 == 1){<br />BLOKADA++;<br />if(BLOKADA == 40){<br />PRZYCISK++;<br />BLOKADA_1 = 0;<br />BLOKADA = 0;<br />}<br />}<br />if(BLOKADA_1 == 2){<br />BLOKADA++;<br />if(BLOKADA == 40){<br />PRZYCISK--;<br />BLOKADA_1 = 0;<br />BLOKADA = 0;<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20768">mateusz186</a> — 24 lip 2019, o 16:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2019-07-24T05:59:19+01:00</updated>
<published>2019-07-24T05:59:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220630#p220630</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220630#p220630"/>
<title type="html"><![CDATA[Re: Drgania styków w przerwaniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220630#p220630"><![CDATA[
Po wciśnięciu przycisku przerwanie się uaktywni, ale w jego obsłudze ustawiasz tylko flagę, która będzie widoczna w pętli głównej i to tam dalej robisz kontrolę przycisku z filtrem debounce. Jeśli przycisk okaże się zatwierdzony wykonujesz co tam miałeś wykonać, a wcześniej (lub po tym fakcie - w zależności od potrzeb) kasujesz flagę, która przyszła z przerwania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 24 lip 2019, o 05:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz186]]></name></author>
<updated>2019-07-23T21:30:17+01:00</updated>
<published>2019-07-23T21:30:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220620#p220620</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220620#p220620"/>
<title type="html"><![CDATA[Drgania styków w przerwaniach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22437&amp;p=220620#p220620"><![CDATA[
Witam mam problem:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />//definicje cyfr wyświetlanch na wyśw.<br />#define ZERO (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB5)<br />#define JEDEN ( 1&lt;&lt;PB1 | 1&lt;&lt;PB2 )<br />#define DWA (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB6)<br />#define TRZY (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB6)<br />#define CZTERY (1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define PIEC (1&lt;&lt;PB0 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define SZESC (1&lt;&lt;PB0 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define SIEDEM (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2)<br />#define OSIEM (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB4 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define DZIEWIEC (1&lt;&lt;PB0 | 1&lt;&lt;PB1 | 1&lt;&lt;PB2 | 1&lt;&lt;PB3 | 1&lt;&lt;PB5 | 1&lt;&lt;PB6)<br />#define KANAL_PIERWSZY PORTC &amp;= ~(1&lt;&lt;PC0)<br />#define KANAL_DRUGI PORTC &amp;= ~(1&lt;&lt;PC1)<br />#define KANAL_TRZECI PORTC &amp;= ~(1&lt;&lt;PC2)<br />#define KANAL_CZWARTY PORTC &amp;= ~(1&lt;&lt;PC3)<br /><br />//zmienne przerywające<br />volatile uint8_t WYSWIETL_CYFRE = 0;<br />volatile uint8_t TAB&#91;4&#93;;<br />volatile uint16_t PRZYCISK;<br />volatile uint8_t KTORA_CYFRA = 0;<br />volatile uint8_t BLOKADA = 0;<br /><br />int main(void){<br /><br />DDRB = 0xff;//ustawienie pinów B jako wyjścia<br />DDRC = 0xff;//ustawienie pinów C jako wyjścia<br />DDRD = 0x00;//ustawienie pinów D jako wejścia<br />PORTB = 0xff;//ustawienie stanu wysokiego na pinach B<br />PORTC = 0xff;//ustawienie stanu wysokiego na pinach C<br />PIND = 0xff;<br /><br />EICRA |= ( 1&lt;&lt;ISC01 | 1&lt;&lt;ISC00 | 1&lt;&lt;ISC11 | 1&lt;&lt;ISC10 );//ustawienie wyzwolenia na zbocze narastające<br />EIMSK |= (1&lt;&lt;INT1 | 1&lt;&lt;INT0);//zezwolenie na przerwanie INT0 oraz INT1<br /><br />TCCR0A |= (1&lt;&lt;WGM01);//ustawienie timera w tryb CTC<br />TCCR0B |= (1&lt;&lt;CS00) | (1&lt;&lt;CS02);//ustawienie preskalera na CRL/1024<br />OCR0A = 27;//podzielenie wartości po preskalerze przez 27<br />TIMSK0 |= (1&lt;&lt;OCIE0A);//zezwolenie na przerwanie timera<br /><br />sei();//globalne zezwolenie na wszystkie przerwania<br /><br />while(1){//na przykładzie liczby 1342<br /><br />WYSWIETL_CYFRE = 0;//cyfra 1...<br />TAB&#91;WYSWIETL_CYFRE&#93; = (PRZYCISK / 1000);//C0=1342/1000 =&gt; C1=1, r=342<br />WYSWIETL_CYFRE = 1;//cyfra 2...<br />TAB&#91;WYSWIETL_CYFRE&#93; = ((PRZYCISK % 1000)/100);//C1=(1342%1000)/100 =&gt; C2=342/100 =&gt; C2=3, r=42<br />WYSWIETL_CYFRE = 2;//cyfra 3...<br />TAB&#91;WYSWIETL_CYFRE&#93; = ((PRZYCISK % 100)/10);//C2=(1342%100)/10 =&gt; C3=42/10 =&gt; C3=4, r=2<br />WYSWIETL_CYFRE = 3;//cyfra 4...<br />TAB&#91;WYSWIETL_CYFRE&#93; = (PRZYCISK %10);//C3=1342%10 =&gt; C4=2<br /><br />}<br />}<br /><br />ISR( INT0_vect ){//po paciśnięciu przycisku <br />if(BLOKADA == 100 &amp;&amp; PRZYCISK &gt; 0){//jeżeli BLOKADA = 100 (przycisk ma cały czas stan wysoki) <br />PRZYCISK++;<br />BLOKADA = 0;<br />}<br />}<br /><br />ISR( INT1_vect ){<br />if(BLOKADA == 100 &amp;&amp; PRZYCISK &lt; 9999){<br />PRZYCISK++;<br />BLOKADA = 0;<br />}<br />}<br /><br />ISR( TIMER0_COMPA_vect ){//instrukcja przerwania TIMER0_COMPA<br />if(KTORA_CYFRA == 4) KTORA_CYFRA = 0;//po wyświetleniu 4 cyfry wraca do 1<br />PORTB = 0xff;//ustawienie stanu 1 na katodach<br />PORTC = 0xff;//ustawienie stanu 1 na anodach<br />if(KTORA_CYFRA == 0) {KANAL_PIERWSZY; WYSWIETL_CYFRE = 0;}//ustawienie stanu 0 na anodzie pierwszej<br />if(KTORA_CYFRA == 1) {KANAL_DRUGI; WYSWIETL_CYFRE = 1;}//ustawienie stanu 0 na anodzie drugiej<br />if(KTORA_CYFRA == 2) {KANAL_TRZECI; WYSWIETL_CYFRE = 2;}//ustawienie stanu 0 na anodzie trzeciej<br />if(KTORA_CYFRA == 3) {KANAL_CZWARTY;WYSWIETL_CYFRE = 3;}//ustawienie stanu 0 na anodzie czwartej<br />switch(TAB&#91;WYSWIETL_CYFRE&#93;){//wybieranie cyfry jaka ma być wyświetlona<br />    case 0 : {PORTB &amp;= ~ZERO; break;}//ustawienie anod na stan 0 (cyfra 0)<br />case 1 : {PORTB &amp;= ~JEDEN; break;}//ustawienie anod na stan 0 (cyfra 1)<br />case 2 : {PORTB &amp;= ~DWA; break;}//ustawienie anod na stan 0 (cyfra 2)<br />case 3 : {PORTB &amp;= ~TRZY; break;}//ustawienie anod na stan 0 (cyfra 3)<br />case 4 : {PORTB &amp;= ~CZTERY; break;}//ustawienie anod na stan 0 (cyfra 4)<br />case 5 : {PORTB &amp;= ~PIEC; break;}//ustawienie anod na stan 0 (cyfra 5)<br />case 6 : {PORTB &amp;= ~SZESC; break;}//ustawienie anod na stan 0 (cyfra 6)<br />case 7 : {PORTB &amp;= ~SIEDEM; break;}//ustawienie anod na stan 0 (cyfra 7)<br />case 8 : {PORTB &amp;= ~OSIEM; break;}//ustawienie anod na stan 0 (cyfra 8)<br />case 9 : {PORTB &amp;= ~DZIEWIEC; break;}//ustawienie anod na stan 0 (cyfra 9)<br />}<br />KTORA_CYFRA++;//zmiana modułu +1<br />if(!(PIND &amp; (1&lt;&lt;PD2))) BLOKADA++;//po naciśnięciu przycisku dodaje do BLOKADA +1<br />if(PIND &amp; (1&lt;&lt;PD2)) BLOKADA = 0;//jeżeli występuje drganie styków (chwilowy stan wysoki) lub przycisk zostanie puszczony BLOKADA 0<br />if(!(PIND &amp; (1&lt;&lt;PD3))) BLOKADA++;<br />if(PIND &amp; (1&lt;&lt;PD3)) BLOKADA = 0;<br />}[/syntax]<br /><br />Na początku program ma pokazywać na wyświetlaczu 7 segmentowym x4 &quot;0000&quot; po naciśnięciu przycisku nr 1 (przerwanie int0) wartość ma wzrastać o jeden tz.&quot;0001&quot; jeżeli wciśniemy przycisk nr 2 (przerwanie int 1) ma odejmować o jeden. Program działa w przedziałach od 0 do 9999. Do tych przycisków chciałem zrobić &quot;wygaszanie&quot; drgań styków podobnie jak jest to wytłumaczone w tym temacie : forum.atnel.pl/topic6956.html niestety nieskutecznie. Czy wie ktoś co mam zrobione nieprawidłowo oraz w jaki sposób zrobić tak żeby działało ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20768">mateusz186</a> — 23 lip 2019, o 21:30</p><hr />
]]></content>
</entry>
</feed>