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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-05-29T21:37:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7238&amp;mode</id>
<entry>
<author><name><![CDATA[Pontar]]></name></author>
<updated>2014-05-29T21:37:13+01:00</updated>
<published>2014-05-29T21:37:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82788#p82788</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82788#p82788"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82788#p82788"><![CDATA[
Zrozumiałem, delay odpada, mój błąd.<br /> Dekrementacja niestety nie pomaga. Poczytam więc w blue booku i poszukam rozwiązania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4577">Pontar</a> — 29 maja 2014, o 21:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-05-29T21:25:14+01:00</updated>
<published>2014-05-29T21:25:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82787#p82787</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82787#p82787"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82787#p82787"><![CDATA[
<div class="quotetitle">Zaba napisał(a):</div><div class="quotecontent"><br />i to na całe dziewięć sekund<br /></div><br /><br />ja tylko dodam - że nawet to nie będzie żadne 9 sekund .... tylko dużo dużo mniej<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">Pontar napisał(a):</div><div class="quotecontent"><br />Tylko tu chodzi o obsługę tranzystora typu mosfet<br /></div><br /><br />Tylko kolega musi zrozumieć, że nie ważne o co tu chodzi czy o tranzystor czy o przekaźnik czy o gaźnik czy nie wiadomo co jeszcze - TAK SIĘ NIGDY NIE pisze programów na procki .... <br /><br /><div class="quotetitle">Pontar napisał(a):</div><div class="quotecontent"><br />W jaki inny sposób tego dokonać?<br /></div><br /><br />Polecam jednak na spokojnie zaopatrzyć się w Bluebooka ...<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />w niej po kolei ... krok po kroku wprowadzam czytelnika - jak właśnie sobie radzić żeby nie programować LINIOWO .... tak tak ... a takie delaje w przerwaniach to coś jeszcze gorszego niż programowanie liniowe<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 maja 2014, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-05-29T21:25:59+01:00</updated>
<published>2014-05-29T21:20:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82786#p82786</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82786#p82786"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82786#p82786"><![CDATA[
taka mała uwaga <br />blokujesz nie tylko mosfet ale także cały procek<br />wstawiając delay do przerwania i to na całe dziewięć sekund  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" /> <br /><br />moim zdanie lepiej wstawić zmienną i ją dekrementować w przerwaniu<br />a ifem sprawdzać czy minął czas<br />tak na szybko :<br />[syntax=c]ISR(TIMER0_COMPA_vect);//obsługa przepełnienia licznika<br />  {<br />  static uint32_t blokada=4294967294;// tą wartość trzeba obliczyć według częstotliwości wykonywaniaprzerwania<br />  <br />   blokada--<br />   PORTB &amp;= ~(1&lt;&lt;PB0);<br />   if (!blokada)   //9 sekund zablokowania mosfetu<br />         PORTB|=(1&lt;&lt;PB0);<br />  }[/syntax]<br /><br />jeśli okaże się że zakres jednej zmiennej jest nie wystarczający to można to robić na dwóch<br />lub oddzielnym timerem programowym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 29 maja 2014, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pontar]]></name></author>
<updated>2014-05-29T21:20:37+01:00</updated>
<published>2014-05-29T21:16:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82785#p82785</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82785#p82785"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82785#p82785"><![CDATA[
Tylko tu chodzi o obsługę tranzystora typu mosfet, który przez ok 9 sekund ma być zablokowany i ma to nastąpić po zliczeniu 30 strzałów. Buduję laser tag'a w oparciu o replikę ASG.  Uderzenie tłoka gazowego w głowice cylindra zwiera do masy. Jako, że w spoczynkowym położeniu tłok dotyka do głowicy cylindra chcę by wyzwolenie następowało wraz z jego ruchem po &quot;rozwarciu&quot;. W jaki inny sposób tego dokonać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4577">Pontar</a> — 29 maja 2014, o 21:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-05-29T21:12:33+01:00</updated>
<published>2014-05-29T21:12:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82784#p82784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82784#p82784"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82784#p82784"><![CDATA[
<div class="quotetitle">Pontar napisał(a):</div><div class="quotecontent"><br /><span style="color: #FF0000"><em>_delay_ms(9000)</em></span>;<br /></div><br /><br />coś takiego w przerwaniu - przeczy w ogóle zdrowemu rozsądkowi .... <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><br />PODSTAWA to NIGDY nie używać opóźnień ani nawet żadnych długotrwałych operacji w przerwaniach ...<br /><br />program warto pisać w pętli głównej programu a nie zostawiać jej pustej i korzystać z flag i ew timerów programowych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 maja 2014, o 21:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pontar]]></name></author>
<updated>2014-05-29T20:45:05+01:00</updated>
<published>2014-05-29T20:45:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82781#p82781</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82781#p82781"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82781#p82781"><![CDATA[
Mam jeszcze taki program do skonsultowania. Wyjście PB1 steruje odtykaniem zatykaniem Mosfetu, a PB0 wyzwala generator częstotliwości widziany powyżej.<br />PB2 jest podłączony do mechanicznego coś w stylu microswitcha.<br />Chcę zliczać 30 zwarć po czym na 9 sekund zablokować mosfet.<br />Proszę o konsultację programu<br /><br />[syntax=c]#include &lt;avr/io.h&gt; //dołączenie podstawowej biblioteki<br /><br />#include &lt;avr/interrupt.h&gt; //dołączenie biblioteki z przerwaniami<br /><br />#include &lt;util/delay.h&gt; //dołączenie biblioteki z opóźnieniami<br /><br />#define WYZW_PIN (1&lt;&lt;PB1)<br />#define WYZW2_PIN (1&lt;&lt;PB0)<br />#define WYZW_ON PORTB&amp;=~WYZW_PIN<br />#define WYZW_OFF PORTB|=WYZW_PIN<br /><br />int main()<br /><br />{<br /><br />     DDRB = WYZW_PIN; //konfiguracja portu jako wyjścia<br /> <br /> DDRB = WYZW2_PIN; //konfiguracja portu jako wyjścia<br /><br />     DDRB &amp;= ~(1&lt;&lt;PORTB2); //konfiguracja 2 pinu portu B jako wejście<br /><br />     PORTB |= (1&lt;&lt;PB1);<br />     PORTB |= (1&lt;&lt;PB2); //ustawienie rezystora podciągającego<br /><br />     MCUCR |= (1&lt;&lt;ISC01)|(1&lt;&lt;ISC00); //konfiguracja przerwania INT0<br /><br />     GIMSK |= 1&lt;&lt;INT0; //włączenie przerwania INT0<br /><br />     sei(); //globalne włączenie przerwań<br /><br />     while(1) //pusta pętla<br /><br />    {<br /><br />    }<br /><br />}<br /><br />ISR(INT0_vect) //początek funkcji obsługi przerwania<br /><br />{<br />PORTB|=!(1&lt;&lt;PB1);<br />TCCR0A|=(1&lt;&lt;WGM01);<br />TCCR0B|=(1&lt;&lt;CS01)|(1&lt;&lt;CS02)|(1&lt;&lt;CS00);<br />OCR0A=30;<br />TIMSK|=(1&lt;&lt;OCIE0A);<br /><br />ISR(TIMER0_COMPA_vect);//obsługa przepełnienia licznika<br />  {<br />  PORTB|=!(1&lt;&lt;PB0);<br />  _delay_ms(9000); //9 sekund zablokowania mosfetu<br />  PORTB|=(1&lt;&lt;PB0);<br />  }    <br /><br />}[/syntax]<br /><br />Dobra widzę, że całkowicie przerwanie INT0 nie działa. Może ktoś widzi dlaczego może nie działać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4577">Pontar</a> — 29 maja 2014, o 20:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-05-29T20:30:08+01:00</updated>
<published>2014-05-29T20:30:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82780#p82780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82780#p82780"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82780#p82780"><![CDATA[
Jeśli chcesz tylko &quot;migać&quot; diodą to zamiast zmieniać jej stan w przerwaniu możesz wykorzystać do tego jedno z wyjść OCx np. OC0A. Ma to tę zaletę, że przebieg jest generowany w sposób czysto sprzętowy. Program ulegnie tylko nieznacznej modyfikacji.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />#define LED (1&lt;&lt;PB0)<br /><br />#define KEY1 (1&lt;&lt;PB2)<br /><br />#define LED_TOG_ON           TCCR0A |= (1&lt;&lt;COM0A0)<br />#define LED_TOG_OFF          TCCR0A &amp;=~(1&lt;&lt;COM0A0)<br /><br />int main(void)<br />{<br /> PORTB |= KEY1;<br /> DDRB |= LED;<br /><br /> //konfuguracja timera<br /> TCCR0A |= (1&lt;&lt;WGM01);<br /> TCCR0B |= (1&lt;&lt;CS01);<br /> OCR0A = 4;<br /><br /> _delay_ms(10);<br /><br />  while(1)<br />  {<br /> if( !(PINB &amp; KEY1 ) )<br /> {<br /> LED_TOG_ON;<br /> } <br />                else if( PINB &amp; KEY1 )<br /> {<br /> LED_TOG_OFF;<br /> }<br /><br /> }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 29 maja 2014, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pontar]]></name></author>
<updated>2014-05-29T18:10:15+01:00</updated>
<published>2014-05-29T18:10:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82773#p82773</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82773#p82773"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82773#p82773"><![CDATA[
Dzięki, zaraz przetestuję. Odpalam na attiny85 , mruganie jest dostosowane do częstotliwości odbiornika ir, ktory domyślnie ma odbierać sygnał.<br /><br />Dzięki Panowie, Jacek Twój program działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4577">Pontar</a> — 29 maja 2014, o 18:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-05-29T17:53:15+01:00</updated>
<published>2014-05-29T17:53:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82771#p82771</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82771#p82771"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82771#p82771"><![CDATA[
Nie za szybki ten timer? Obawiam się, że migania nie zauważysz. <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=1589">sq8dsr</a> — 29 maja 2014, o 17:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2014-05-29T17:38:47+01:00</updated>
<published>2014-05-29T17:38:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82770#p82770</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82770#p82770"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82770#p82770"><![CDATA[
Jeśli przycisk wciśnięty to dioda mruga, jeśli nie to nie mruga <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br />Pozdrawiam <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    #define LED (1&lt;&lt;PB0)<br />    #define KEY1 (1&lt;&lt;PB2)<br />    #define LED_TOG PORTB ^=LED<br /><br />uint8_t flaga;<br /><br /><br />     ISR(TIMER0_COMPA_vect)<br />    {<br />     if(flaga==1){<br />     LED_TOG;<br />     }<br />    }<br />    int main(void) {<br />    <br />        TCCR0A |= (1&lt;&lt;WGM01);<br />        TCCR0B |= (1&lt;&lt;CS01);<br />        OCR0A = 4;<br />        TIMSK |= (1&lt;&lt;OCIE0A);<br /><br />     PORTB |= KEY1;<br />     DDRB |= LED;<br /><br /><br />     _delay_ms(10);<br />     sei();<br /><br /><br />     while(1) {<br /><br />      if( !(PINB &amp; KEY1 ) ) {<br />      flaga=1;<br />      }<br />      else {<br />      flaga=0;<br />     }<br /><br />    }<br /> }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 29 maja 2014, o 17:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-05-29T17:34:10+01:00</updated>
<published>2014-05-29T17:34:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82769#p82769</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82769#p82769"/>
<title type="html"><![CDATA[Re: Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82769#p82769"><![CDATA[
A czy ten generator ma pracować tylko wtedy gdy przycisk jest wciąż wciśnięty? Czy jedno wciśnięcie włącza a drugie wyłącza? <br /><br />Jeśli ta pierwsza opcja to wypróbuj poniższy programik<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />#define LED (1&lt;&lt;PB0)<br />#define LED_TOG PORTB ^= LED<br /><br />#define KEY1 (1&lt;&lt;PB2)<br /><br /><br />#define START_TIMER TCCR0B |= (1&lt;&lt;CS01) <br />#define STOP_TIMER TCCR0B &amp;=~( (1&lt;&lt;CS02) | (1&lt;&lt;CS01) | (1&lt;&lt;CS00) )<br /> <br />int main(void) <br />{<br /> PORTB |= KEY1;  <br /> DDRB |= LED; <br /> <br /> //konfuguracja timera<br />         //nie włączamy preskalera<br /> TCCR0A |= (1&lt;&lt;WGM01); <br /> OCR0A = 4;<br /> TIMSK |= (1&lt;&lt;OCIE0A);<br /> <br /> _delay_ms(10);<br />  <br />  sei();<br />  while(1) <br />  {<br /> if( !(PINB &amp; KEY1 ) ) <br /> {<br />  //ustawiamy preskaler - timer zaczyna liczyć<br />   START_TIMER;        <br />   <br /> } else if( PINB &amp; KEY1 )<br /> {<br /> //zerujemy preskaler - timer przestaje liczyć<br /> STOP_TIMER;<br /> }<br /> <br /> }<br />}<br /><br />ISR(TIMER0_COMPA_vect)<br />{<br /> LED_TOG;<br />}[/syntax]<br /><br />Programu nie testowałem więc nie wiem czy działa dobrze.<br /><br />Napisz jeszcze na jakim procku to uruchamiasz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 29 maja 2014, o 17:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pontar]]></name></author>
<updated>2014-05-29T16:59:36+01:00</updated>
<published>2014-05-29T16:59:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82762#p82762</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82762#p82762"/>
<title type="html"><![CDATA[Timer w przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7238&amp;p=82762#p82762"><![CDATA[
Witam,<br /><br />Uczę się programować mikrokontrolery AVR i w ramach pewnego projektu muszę wyzwolić generator częstotliwości w momencie otrzymania stanu niskiego na wejściu. Czytałem poradniki Pana Mirosława i testowałem z płytką stykową. Problem w tym, że program ze zmianą stanu diody jest ok, natomiast potrzebuję w obsługę klawisza wrzucić timer generatora i  tu powstaje problem: po włączeniu przycisku generator pracuje cały czas. Napisałem taki program na podstawie programów z książki i poradników:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt; <br />#define LED (1&lt;&lt;PB0)<br />#define KEY1 (1&lt;&lt;PB2)<br />#define LED_TOG PORTB ^=LED<br /> <br /> <br /> ISR(TIMER0_COMPA_vect) <br />{<br />LED_TOG;<br />} <br />int main(void) {<br /> <br /> sei();<br /> PORTB |= KEY1;  <br /> DDRB |= LED;   <br /> <br /><br /> _delay_ms(10); <br /> <br /><br /><br /> while(1) {<br /> <br />  if( !(PINB &amp; KEY1 ) ) {<br />  <br /> <br /> <br />    TCCR0A |= (1&lt;&lt;WGM01);<br />TCCR0B |= (1&lt;&lt;CS01);<br />OCR0A = 4;<br />TIMSK |= (1&lt;&lt;OCIE0A);<br /><br /> <br />  } else if( PINB &amp; KEY1 ) ;<br /> <br /> }<br /><br />}[/syntax]<br /><br />Ew jest jeszcze takie coś na obsłudze przerwań i po jednym ustaleniu do 0 wykonuje się cały czas<br />[syntax=c]#include &lt;avr/io.h&gt; //dołączenie podstawowej biblioteki<br /><br />#include &lt;avr/interrupt.h&gt; //dołączenie biblioteki z przerwaniami<br /><br />#include &lt;util/delay.h&gt; //dołączenie biblioteki z opóźnieniami<br /><br /><br />#define LED_PIN (1&lt;&lt;PB0)<br />#define LED_TOG PORTB ^= LED_PIN<br />#define SYGN_PIN (1&lt;&lt;PB2)<br /><br /><br /><br />int main()<br /><br />{<br />     PORTB|= SYGN_PIN;<br />     DDRB = LED_PIN; //konfiguracja portu jako wyjścia<br /><br />     DDRB &amp;= ~(1&lt;&lt;PORTB2); //konfiguracja 2 pinu portu B jako wejście<br /><br /><br />      //konfiguracja przerwania INT0<br /><br />     GIMSK |= 1&lt;&lt;INT0; //włączenie przerwania INT0<br /><br />     sei(); //globalne włączenie przerwań<br /><br />     while(1) //pusta pętla<br /><br />    {<br /><br />    }<br /><br />}<br /><br />ISR(INT0_vect) //początek funkcji obsługi przerwania<br /><br />{<br /><br />    TCCR0A |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0B |= (1&lt;&lt;CS01);// preskaler = 8<br />OCR0A = 4;<br />TIMSK |= (1&lt;&lt;OCIE0A);<br /><br /><br />}<br />ISR(TIMER0_COMPA_vect) // obsługa przerwania compare match<br />{<br />LED_TOG;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4577">Pontar</a> — 29 maja 2014, o 16:59</p><hr />
]]></content>
</entry>
</feed>