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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-07T10:08:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20364&amp;mode</id>
<entry>
<author><name><![CDATA[Wójcik Robert]]></name></author>
<updated>2018-03-07T10:08:38+01:00</updated>
<published>2018-03-07T10:08:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=205087#p205087</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=205087#p205087"/>
<title type="html"><![CDATA[Re: Sterowanie wyjściem z użyciem TIMER0 i klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=205087#p205087"><![CDATA[
Dziękuję za słowa krytyki, uznałem że wiem już wszystko i wyszło &quot;jak zwykle&quot;<br /><br />Co do obsługi drgań, specjalnie nie wpisałem delaya<br /><br />Wracam do BB.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1099">Wójcik Robert</a> — 7 mar 2018, o 10:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jaca_76]]></name></author>
<updated>2018-03-05T21:31:29+01:00</updated>
<published>2018-03-05T21:31:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=204991#p204991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=204991#p204991"/>
<title type="html"><![CDATA[Re: Sterowanie wyjściem z użyciem TIMER0 i klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=204991#p204991"><![CDATA[
Chyba cały pomysł jest zły.<br />Brak obsługi drgań styków.<br />funkcja klawisz co ma zwracać ? przecież tylko startuje i zatrzymuje timer i to natychmiast po jego wystartowaniu .<br />W BB jest rozdział o timerach i jak obsłużyć przyciski, proponuje zacząć od początku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2479">jaca_76</a> — 5 mar 2018, o 21:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wójcik Robert]]></name></author>
<updated>2018-03-05T21:10:47+01:00</updated>
<published>2018-03-05T21:10:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=204990#p204990</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=204990#p204990"/>
<title type="html"><![CDATA[Sterowanie wyjściem z użyciem TIMER0 i klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20364&amp;p=204990#p204990"><![CDATA[
Idea - naciskam klawisz, załącza się dioda (na razie, docelowo zjeżdża roleta w dół przez określony czas) i koniec pracy, czekamy na następne polecenie / naciśnięcie klawisza.<br /><br />Umęczyłem coś poniżej:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define LED    (1&lt;&lt;PB4)<br />#define KEY(1&lt;&lt;PD0)<br />#define KEY_DOWN !(PIND &amp; KEY)<br /><br /><br />volatile uint8_t licznik;// powołuje zmienną licznik<br /><br />uint8_t klawisz (void);// deklaracja funkcji<br />uint8_t klawisz (void);<br /><br />int main(void)<br />{<br />// ustawienia TIMER 0 - przerwanie 200Hz<br />        TCCR0 |= (1&lt;&lt;WGM01);                  //CTC<br />#define START_LICZNIK TCCR0 |= (1&lt;&lt;CS02) | (0&lt;&lt;CS01) | (1&lt;&lt;CS00);        //preskaler 1024<br />#define STOP_LICZNIK TCCR0 |= 0;        // licznik zatrzymany, CS0, CS01, CS02 = 0<br /><br />        OCR0 = 39;// dodatkowy podział przez 39 - rejest przepełnienia<br />        TIMSK |= (1&lt;&lt;OCIE0);// zezwolenie na przerwanie Compare Match<br /><br />        //PC0 i PC1 jako wyjścia - LED1 i LED2<br />        DDRB |= LED;// port B jako wyjście<br />        PORTB |= LED;// wygaszenie diód - podciągnięcie pinów do VCC<br /><br />        DDRD &amp;= ~KEY;// kierunek podrtu PD0 - wejściowy<br />        PORTD |= KEY;// podciągnięcie PD0 do VCC<br /><br />        sei();<br /><br /><br />        while(1)<br />        {<br />        if (klawisz())// jeśli klawisz wciśnęty<br />        {<br />        if (KEY_DOWN) START_LICZNIK;<br />        }<br />        }<br />}<br /><br />// definicja funkcji<br />uint8_t klawisz(void)<br />{<br />if( KEY_DOWN )// klawisz wciśnięty ?<br />{<br />if( KEY_DOWN ) START_LICZNIK;   // jeśli wciśnięty?  licznik startuje<br />}<br /><br />STOP_LICZNIK;// jeśli nie wciśnięty klawisz, zlicznik stoi<br />}<br /><br /><br /><br />ISR(TIMER0_COMP_vect)<br />{<br /><br />licznik++;<br />if (licznik &gt;= 200)<br />{<br />PORTB ^= LED;<br />licznik=1;<br />}<br /><br />}[/syntax]<br /><br />Gada do pierwszego naciśnięcia klawisza, potem doda mryga co sekundę. Dlaczego? Po resecie czeka na wyzwolenie i dopiero mryga.<br />Dodatkowo, nie reaguje na klawisz jak już się uruchomi licznik (nie wyłącza TIMER0).<br /><br />Co poknociłem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1099">Wójcik Robert</a> — 5 mar 2018, o 21:10</p><hr />
]]></content>
</entry>
</feed>