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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2022-03-24T11:10:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=24187&amp;mode</id>
<entry>
<author><name><![CDATA[Acade]]></name></author>
<updated>2022-03-24T11:10:16+01:00</updated>
<published>2022-03-24T11:10:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235262#p235262</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235262#p235262"/>
<title type="html"><![CDATA[Re: Obsługa klawisza + buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235262#p235262"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Podejrzewam, że buzer cały czas pitoli. Flaga nie powinna być zerowana po odliczeniu 100ms tylko po puszczeniu klawisza. To tak na szybko co mi się w oczy rzuciło, a sam buzer uruchamiany nie flagą tylko zatwierdzeniem przycisku. Flaga ma być dodatkiem blokującym start buzera jeśli key nadal wyciśnięty. Cała konstrukcja programu do poprawki.<br /></div><br /><br />Dokładnie tak się zachowywał układ. Poszedłem za Twoimi wskazówkami i teraz działa jak należy. Dziękuję  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21799">Acade</a> — 24 mar 2022, o 11:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2022-03-19T12:03:26+01:00</updated>
<published>2022-03-19T12:03:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235248#p235248</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235248#p235248"/>
<title type="html"><![CDATA[Re: Obsługa klawisza + buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235248#p235248"><![CDATA[
Podejrzewam, że buzer cały czas pitoli. Flaga nie powinna być zerowana po odliczeniu 100ms tylko po puszczeniu klawisza. To tak na szybko co mi się w oczy rzuciło, a sam buzer uruchamiany nie flagą tylko zatwierdzeniem przycisku. Flaga ma być dodatkiem blokującym start buzera jeśli key nadal wyciśnięty. Cała konstrukcja programu do poprawki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 19 mar 2022, o 12:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2022-03-18T18:47:16+01:00</updated>
<published>2022-03-18T18:47:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235246#p235246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235246#p235246"/>
<title type="html"><![CDATA[Re: Obsługa klawisza + buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235246#p235246"><![CDATA[
A jaki jest problem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 18 mar 2022, o 18:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Acade]]></name></author>
<updated>2022-03-18T10:25:36+01:00</updated>
<published>2022-03-18T10:25:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235241#p235241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235241#p235241"/>
<title type="html"><![CDATA[Obsługa klawisza + buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24187&amp;p=235241#p235241"><![CDATA[
Panowie i Panie,<br /><br />chciałem zrobić sobie na swoim zestawie uruchomieniowym efekt gdy nacisnę klawisz KEY1 to Buzzer załączy się na 100ms nie zależnie od tego czy klawisz trzymam czy będzie to szybkie kliknięcie. Założenie jest takie, że zawsze ma być to 100ms. <br />Do tego celu zastosowałem obsługę przycisku z bloga Pana Mirka, dodatkowo Timer2 który będzie miał za zadanie odliczać czas.<br /><br />Wszystko ładnie pięknie, jak tak analizuje cały kod to wydaje się, że powinno działać. Ale jednak nie, gdzieś mam błąd i już mi ręce opadają. Możecie zerknąć na kod, gdzie jest widoczny błąd ?? Wydaje mi się, że coś z obsługą przerwani może być problem.<br /><br />Może ktoś ma swoje rozwiązania, żeby uzyskać taki efekt ?? <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;lcd.h&quot;<br /><br /><br />#define KEY1 (1&lt;&lt;PB3)<br />#define KEY2 (1&lt;&lt;PB2)<br />#define KEY3 (1&lt;&lt;PB1)<br /><br />#define LED1 (1&lt;&lt;PB0)<br /><br />#define BUZZ (1&lt;&lt;PB7)<br /><br /><br /><br />#define BACKLIGHT (1&lt;&lt;PD7)<br /><br />#define BUZZ_ON PORTB |= BUZZ<br />#define BUZZ_OFF PORTB &amp;= ~BUZZ<br /><br />#define LED1_ON PORTB &amp;=  ~LED1<br />#define LED1_OFF PORTB |=  LED1<br />#define LED1_TOG PORTB ^= LED1<br />#define BACKLIGHT_ON PORTD |= BACKLIGHT<br /><br /><br /><br />volatile uint8_t counter;<br />volatile uint8_t flag_key ;<br />uint16_t key_lock;<br /><br /><br /><br /><br />int main(void)<br />{<br /><br />// Inicjalizacja wyświetlacza<br /> <br />lcd_init();  <br /><br />// Ustawienie pinów jako wyjścia/wejscia<br /><br />DDRB |= LED1;<br />DDRB |= BUZZ;  <br />DDRD |= BACKLIGHT;<br /><br />DDRB &amp;= ~KEY1;<br />DDRB &amp;= ~KEY2;<br />DDRB &amp;= ~KEY3;<br /><br />// Podciągnięcie pod VCC<br /><br />PORTB |= LED1;<br />PORTB |= KEY1;<br />PORTB |= KEY2;<br />PORTB |= KEY3;<br /><br />// Stan startowy urządzenia<br /><br />BACKLIGHT_ON;<br />LED1_OFF;<br /><br />// Inicjalizacja Timera<br /><br />TCCR2 |= (1&lt;&lt;WGM21); // TRYB CTC<br />TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS20); // Preskaler 1024<br />TIMSK |= (1&lt;&lt;OCIE2); // zezwolenie na przerwanie Compare Match<br />OCR2 = 55;<br /><br /><br /><br /><br />// oczekiwanie na ustalenie się stanu wysokiego na wejściu klawisza<br />/*_delay_ms(100);*/<br />  <br />sei();  <br />    while (1) <br />    {<br /><br />lcd_locate(0,0);<br />lcd_str(&quot;flag_key:  &quot;);<br />lcd_int(flag_key);<br />lcd_locate(1,0);<br />lcd_str(&quot;counter:  &quot;);<br />lcd_int(counter);<br />lcd_str(&quot;   &quot;);<br /><br /><br /><br /><br /><br />if( !key_lock &amp;&amp; !(PINB &amp; KEY1 ) ) {<br />key_lock=1;<br /><br /><br />flag_key =1;<br />LED1_TOG;<br /><br /><br />} else if( key_lock &amp;&amp; (PINB &amp; KEY1 ) ) key_lock++;<br /><br />if (flag_key) BUZZ_ON;<br />else BUZZ_OFF;<br /><br /><br /><br />}<br />}<br /><br />ISR (TIMER2_COMP_vect){<br /><br /><br />if (flag_key){<br /><br /><br />counter ++;<br />}<br /><br />if (counter == 10 ){<br /><br />flag_key = 0;<br /><br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21799">Acade</a> — 18 mar 2022, o 10:25</p><hr />
]]></content>
</entry>
</feed>