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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2023-07-17T18:26:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=24516&amp;mode</id>
<entry>
<author><name><![CDATA[Eposas]]></name></author>
<updated>2023-07-17T18:26:56+01:00</updated>
<published>2023-07-17T18:26:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237190#p237190</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237190#p237190"/>
<title type="html"><![CDATA[Re: Problem z buzzerem podczas kręcenia encoderem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237190#p237190"><![CDATA[
Działa  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Mario miał rację.<br />Kodu nie będę wklejał bo komentarze są zrozumiałe jak poradzić sobie z tym problemem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17799">Eposas</a> — 17 lip 2023, o 18:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mario17]]></name></author>
<updated>2023-07-16T14:09:38+01:00</updated>
<published>2023-07-16T14:09:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237188#p237188</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237188#p237188"/>
<title type="html"><![CDATA[Re: Problem z buzzerem podczas kręcenia encoderem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237188#p237188"><![CDATA[
Podczas wywołania callbacka my_encoder, timery <strong>tmr[0]</strong> i <strong>tmr[1]</strong> są zresetowane, czyli <strong>tmr[0].cnt == 0</strong> i <strong> tmr[1].cnt == 0</strong>. Oznacza to, że BUZZ_OFF ustawia port praktycznie w tym samym momencie co BUZZ_ON. Efektem jest brak dźwięku. <br />[syntax=c]void my_encoder( int8_t edir, int value ) {<br /> <br />// !tmr&#91;0&#93;.cnt == true<br />if( tmr&#91;0&#93;.enabled &amp;&amp; !tmr&#91;0&#93;.cnt ) {<br />tmr&#91;0&#93;.cnt = tmr&#91;0&#93;.interval;<br />BUZZ_ON;<br />}<br /><br />// !tmr&#91;1&#93;.cnt == true<br />if( tmr&#91;1&#93;.enabled &amp;&amp; !tmr&#91;1&#93;.cnt ) {<br />tmr&#91;1&#93;.cnt = tmr&#91;1&#93;.interval;<br />BUZZ_OFF;<br />}[/syntax]<br /><br />Oczekiwany efekt możesz uzyskać np. włączając buzzer w callbacku my_encoder, a wyłączać go w callbacku timera.<br /><strong>my_encoder:</strong><br />[syntax=c]void my_encoder( int8_t edir, int value ) {<br /><br />if( tmr&#91;0&#93;.enabled &amp;&amp; !tmr&#91;0&#93;.cnt ) {<br />tmr&#91;0&#93;.cnt = tmr&#91;0&#93;.interval;<br />BUZZ_ON;<br />}[/syntax]<br /><br /><strong>on_tmr0_timeout:</strong><br />[syntax=c]void on_tmr0_timeout( void * tm ){<br />BUZZ_OFF;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3695">Mario17</a> — 16 lip 2023, o 14:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Eposas]]></name></author>
<updated>2023-07-14T20:30:54+01:00</updated>
<published>2023-07-14T20:30:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237187#p237187</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237187#p237187"/>
<title type="html"><![CDATA[Problem z buzzerem podczas kręcenia encoderem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24516&amp;p=237187#p237187"><![CDATA[
Cześć wszystkim mam taki problem ze nie wydaje mi dzwięku buzzer podczas kręcenia encoderem. Chciałem się pozbyć &quot;delayow&quot; więc zaporzyczyłem się z poradnika kursy C o programowani na temat timerów i moj program wygląda tak w właściwie wycinek który nas interesuje:<br />[syntax=c]/ encoder switch pressed - callback<br />void enc_switch( void ) {<br /><br />    mk_menu_click();<br />}<br /><br />// encoder rotate left/right<br />void my_encoder( int8_t edir, int value ) {<br /><br />if( tmr&#91;0&#93;.enabled &amp;&amp; !tmr&#91;0&#93;.cnt ) {<br />        tmr&#91;0&#93;.cnt = tmr&#91;0&#93;.interval;<br />        BUZZ_ON;<br />}<br />if( tmr&#91;1&#93;.enabled &amp;&amp; !tmr&#91;1&#93;.cnt ) {<br />        tmr&#91;1&#93;.cnt = tmr&#91;1&#93;.interval;<br />        BUZZ_OFF;<br />        }<br />//beep(&amp;tmr&#91;0&#93;);<br />//beep_delay();<br />    if( ENC_LEFT == edir ) {<br />        mk_menu_inc();<br />    } else {<br />        mk_menu_dec();<br />    }<br />}[/syntax] <br /><br />te dwie zakomentowane linie beep były do testów, beep_delay działa okej ale jest blokuąca<br /><br />[syntax=c]void soft_timers_init( void ) {<br /><br />/*<br />lcd_defchar_P(0, tmperature);<br />lcd_defchar_P(1, celsius);<br />*/<br /><br /><br />/* napęd timerów programowych */ // 10mS //<br /><br />    TCCR0A |= (1&lt;&lt;WGM01); // tryb CTC<br />    TCCR0B |= (1&lt;&lt;CS00)|(1&lt;&lt;CS02); // ustawiam prescaler na 1024<br />    TIMSK0 |= (1&lt;&lt;OCIE0A); // zezwolenie na przerwania<br />    OCR0A = 107;<br /><br /><br /><br />/* konfigurujemy timer o indeksie = 0*/<br />tmr&#91;0&#93;.interval = 1;<br />tmr&#91;0&#93;.enabled = 1;<br /><br />/* konfigurujemy timer o indeksie = 1*/<br />tmr&#91;1&#93;.interval = 1;<br />tmr&#91;1&#93;.enabled = 1;}[/syntax]<br /><br />[syntax=c]typedef void (*ON_EXECUTE)( void * tm );<br /><br /><br />typedef struct {<br />volatile uint8_tcnt;<br />uint8_t interval;<br />uint8_t enabled;<br />ON_EXECUTE on_execute;<br />} TTIMER;<br /><br /><br /><br />extern TTIMER tmr&#91;4&#93;;[/syntax]<br /><br />czy widzi ktoś jakiegoś babola? timery działają bo sprawdzałem na diodzie led miga sobie co sekundę z odpowiednim interwałem czasowym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17799">Eposas</a> — 14 lip 2023, o 20:30</p><hr />
]]></content>
</entry>
</feed>