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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2021-01-20T11:48:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=23546&amp;mode</id>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2021-01-20T11:48:37+01:00</updated>
<published>2021-01-20T11:48:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230681#p230681</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230681#p230681"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230681#p230681"><![CDATA[
Dzięki  fofex<br /><br />Zmiana nazwy dla zmiennej   key_lock  pomogła i wszystko działa normalnie  <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=18503">miki53</a> — 20 sty 2021, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fofex]]></name></author>
<updated>2021-01-20T10:09:56+01:00</updated>
<published>2021-01-20T10:09:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230679#p230679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230679#p230679"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230679#p230679"><![CDATA[
<div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />po wciśnięciu i przytrzymaniu klawisza<br />włącza się i wyłącza a ma przy pierwszym naciśnięciu ma diodę włączyć<br />przy drugim wyłączyć<br /></div><br />Zastanów się co się dzieje gdy ta sama zmienna key_lock jest zastosowana przy różnych przyciskach.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21072">fofex</a> — 20 sty 2021, o 10:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2021-01-20T09:02:59+01:00</updated>
<published>2021-01-20T09:02:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230675#p230675</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230675#p230675"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230675#p230675"><![CDATA[
<div class="quotetitle">xentis napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent">Czy można wyeliminować wpływ interfejsu JTAG np PORT D<br /></div> Ale JTAG to nie jakiś szkodnik co to, gdy go przepędzisz z jednego miejsca idzie w drugie.</div><br /><br /> <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> Dobre  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br /><br />Pokaż cały aktualny kod, może się pomyliłeś w konfiguracji tego pinu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 20 sty 2021, o 09:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2021-01-19T20:26:09+01:00</updated>
<published>2021-01-19T20:26:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230664#p230664</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230664#p230664"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230664#p230664"><![CDATA[
<div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />Czy można wyeliminować wpływ interfejsu JTAG np PORT D<br /></div> Ale JTAG to nie jakiś szkodnik co to, gdy go przepędzisz z jednego miejsca idzie w drugie. Jeśli został wyłączony to definitywnie i na pewno nie przeniósł swoich sygnałów na inne piny. Tym bardziej na PORTD. Na pinie PD7 jedyne co jest dodatkowo to wyjście Compare Match timera2. Może przypadkowo włączyłeś ten timer w tryb, który steruje pinem PD7?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 19 sty 2021, o 20:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2021-01-19T19:16:14+01:00</updated>
<published>2021-01-19T19:16:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230661#p230661</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230661#p230661"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230661#p230661"><![CDATA[
Czy można wyeliminować wpływ interfejsu JTAG np PORT D<br />a konkretnie na pin PD7 ?<br /><br />Jeśli tak to jak ?<br /><br />Patrząc na PDF to PORT D nie powinien reagować na JTAG<br />ale jednak PD7 reaguje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 19 sty 2021, o 19:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario2015]]></name></author>
<updated>2021-01-19T15:09:51+01:00</updated>
<published>2021-01-19T15:09:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230657#p230657</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230657#p230657"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230657#p230657"><![CDATA[
A gdzie w pliku main.c masz funkcję główną programu? Powinna wyglądać tak:<br />[syntax=c]int main(void)<br />{<br />  // i tu instrukcje<br />}[/syntax]<br />U ciebie jest ale bez argumentu (void) w linii 36.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8867">mario2015</a> — 19 sty 2021, o 15:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2021-01-19T14:47:15+01:00</updated>
<published>2021-01-19T14:47:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230656#p230656</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230656#p230656"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230656#p230656"><![CDATA[
Dzięki wszystkim za pomoc i zainteresowanie się moim problemem<br /><br />Efekt wielokrotnego powtarzania wyzwalania klawisza przy jednokrotnym naciśnięciu będę <br />musiał wyeliminować  sobie w inny sposób <br /><br />Zastanawiam się dlaczego ten efekt rozszerzył  się na  PORT D<br />kiedy przed wyłączeniem interfejsu JTAG był tylko na PORCIE C<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 19 sty 2021, o 14:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2021-01-19T13:00:43+01:00</updated>
<published>2021-01-19T13:00:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230655#p230655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230655#p230655"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230655#p230655"><![CDATA[
<div class="quotetitle">fofex napisał(a):</div><div class="quotecontent"><br />Trzeba śledzić zarówno wciśnięcie jaki zwolnienie przycisku oraz dodać maszynę stanów która ma warunek uprzedniego zwolnienia przycisku. Warto też zaprowadzić jakiś porządek w KODzie, czyli przede wszystkim wydzielić funkcjonalność przycisku do odrębnego modułu i go zuniwersalizować.<br />[syntax=c]/* button.h */<br />#include &lt;stdint.h&gt;<br /><br /><br />#define DEBOUNCE_MS 10<br />#define TICKS_PER_SEC 100<br /><br />typedef struct Button {<br />        volatile uint8_t *port;<br />        uint8_t mask;<br />        void (*onFunction)(void);<br />        void (*offFunction)(void);<br /><br />        //reserved for internal use<br />        uint16_t debounceTicks_;<br />        uint8_t state_;<br />} Button;<br /><br /><br /><br />void Button_init(Button * const me);<br />void Button_service(Button * const me);<br />void Button_registerOn(Button * const me, void (*onFunction)(void));<br />void Button_registerOff(Button * const me, void (*offFunction)(void));[/syntax]<br /><br />/[syntax=c]* button.c */<br />#include &quot;button.h&quot;<br /><br />#define DEBOUNCE_TICKS ((unsigned long)TICKS_PER_SEC * DEBOUNCE_MS / 1000)<br /><br />static void doFunction(Button * const me);<br /><br />static inline uint8_t rawState(Button * const me)<br />{<br />        return *me-&gt;port &amp; me-&gt;mask;<br />}<br /><br /><br />void Button_init(Button * const me)<br />{<br />        me-&gt;debounceTicks_ = DEBOUNCE_TICKS;<br />        me-&gt;state_ = rawState(me);<br />}<br /><br /><br />void Button_service(Button * const me)<br />{<br /><br />        uint8_t tmp = rawState(me);<br /><br />        if(tmp==me-&gt;state_)<br />        {<br />                me-&gt;debounceTicks_ = DEBOUNCE_TICKS;<br />        }<br />        else<br />        {<br />                if(!me-&gt;debounceTicks_ || !--me-&gt;debounceTicks_)<br />                {<br />                        me-&gt;state_ = tmp;<br />                        doFunction(me);<br />                }<br />        }<br /><br />}<br /><br /><br />void doFunction(Button * const me)<br />{<br />        if(!me-&gt;state_) /* low depressed */<br />        {<br />                if(me-&gt;onFunction)<br />                        (*me-&gt;onFunction)();<br />        }<br />        else<br />        {<br />                if(me-&gt;offFunction)<br />                        (*me-&gt;offFunction)();<br />        }<br />}<br /><br />void Button_registerOn(Button * const me, void (*onFunction)(void))<br />{<br />me-&gt;onFunction = onFunction;<br />}<br /><br />void Button_registerOff(Button * const me, void (*offFunction)(void))<br />{<br />me-&gt;offFunction = offFunction;<br />}[/syntax]<br /><br />[syntax=c]/* main.c */<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &quot;button.h&quot;<br /><br />void klaw_1_wyj_1(void);<br />void klaw_2_wyj_2(void);<br />void klaw_3_wyj_3(void);<br /><br />void timer_init(void);<br />uint8_t timer(void);<br /><br />void gpio_init(void);<br /><br />Button b1 = {<br />&amp;PINC,<br />(1&lt;&lt;2),<br />klaw_1_wyj_1,<br />0<br />};<br /><br />Button b2 = {<br />&amp;PINC,<br />(1&lt;&lt;3),<br />klaw_2_wyj_2,<br />0<br />};<br /><br />Button b3 = {<br />&amp;PINC,<br />(1&lt;&lt;4),<br />klaw_3_wyj_3,<br />0<br />};<br /><br />int main()<br />{<br /><br />timer_init(); //system tick at TICKS_PER_SEC rate<br />gpio_init();<br />  Button_init(&amp;b1);<br />  Button_init(&amp;b2);<br />  Button_init(&amp;b3);<br /><br />//sei();<br />while(1)<br />{<br />if(timer()) {//software timer 100Hz<br />Button_service(&amp;b1);<br />Button_service(&amp;b2);<br />Button_service(&amp;b3);<br />}<br /><br />}<br /><br />}[/syntax]<br /><br />KOD podzielony na strawne kawalki. Każdy switch ma swoją, a zarazem typową konfigurację. Coś wreszcie widać.<br /></div><br /><br />Fajnie napisany kod. Podoba mi się<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 19 sty 2021, o 13:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fofex]]></name></author>
<updated>2021-01-19T11:57:13+01:00</updated>
<published>2021-01-19T11:57:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230654#p230654</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230654#p230654"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230654#p230654"><![CDATA[
Trzeba śledzić zarówno wciśnięcie jaki zwolnienie przycisku oraz dodać maszynę stanów która ma warunek uprzedniego zwolnienia przycisku. Warto też zaprowadzić jakiś porządek w KODzie, czyli przede wszystkim wydzielić funkcjonalność przycisku do odrębnego modułu i go zuniwersalizować.<br />[syntax=c]/* button.h */<br />#include &lt;stdint.h&gt;<br /><br /><br />#define DEBOUNCE_MS 10<br />#define TICKS_PER_SEC 100<br /><br />typedef struct Button {<br />        volatile uint8_t *port;<br />        uint8_t mask;<br />        void (*onFunction)(void);<br />        void (*offFunction)(void);<br /><br />        //reserved for internal use<br />        uint16_t debounceTicks_;<br />        uint8_t state_;<br />} Button;<br /><br /><br /><br />void Button_init(Button * const me);<br />void Button_service(Button * const me);<br />void Button_registerOn(Button * const me, void (*onFunction)(void));<br />void Button_registerOff(Button * const me, void (*offFunction)(void));[/syntax]<br /><br />/[syntax=c]* button.c */<br />#include &quot;button.h&quot;<br /><br />#define DEBOUNCE_TICKS ((unsigned long)TICKS_PER_SEC * DEBOUNCE_MS / 1000)<br /><br />static void doFunction(Button * const me);<br /><br />static inline uint8_t rawState(Button * const me)<br />{<br />        return *me-&gt;port &amp; me-&gt;mask;<br />}<br /><br /><br />void Button_init(Button * const me)<br />{<br />        me-&gt;debounceTicks_ = DEBOUNCE_TICKS;<br />        me-&gt;state_ = rawState(me);<br />}<br /><br /><br />void Button_service(Button * const me)<br />{<br /><br />        uint8_t tmp = rawState(me);<br /><br />        if(tmp==me-&gt;state_)<br />        {<br />                me-&gt;debounceTicks_ = DEBOUNCE_TICKS;<br />        }<br />        else<br />        {<br />                if(!me-&gt;debounceTicks_ || !--me-&gt;debounceTicks_)<br />                {<br />                        me-&gt;state_ = tmp;<br />                        doFunction(me);<br />                }<br />        }<br /><br />}<br /><br /><br />void doFunction(Button * const me)<br />{<br />        if(!me-&gt;state_) /* low depressed */<br />        {<br />                if(me-&gt;onFunction)<br />                        (*me-&gt;onFunction)();<br />        }<br />        else<br />        {<br />                if(me-&gt;offFunction)<br />                        (*me-&gt;offFunction)();<br />        }<br />}<br /><br />void Button_registerOn(Button * const me, void (*onFunction)(void))<br />{<br />me-&gt;onFunction = onFunction;<br />}<br /><br />void Button_registerOff(Button * const me, void (*offFunction)(void))<br />{<br />me-&gt;offFunction = offFunction;<br />}[/syntax]<br /><br />[syntax=c]/* main.c */<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &quot;button.h&quot;<br /><br />void klaw_1_wyj_1(void);<br />void klaw_2_wyj_2(void);<br />void klaw_3_wyj_3(void);<br /><br />void timer_init(void);<br />uint8_t timer(void);<br /><br />void gpio_init(void);<br /><br />Button b1 = {<br />&amp;PINC,<br />(1&lt;&lt;2),<br />klaw_1_wyj_1,<br />0<br />};<br /><br />Button b2 = {<br />&amp;PINC,<br />(1&lt;&lt;3),<br />klaw_2_wyj_2,<br />0<br />};<br /><br />Button b3 = {<br />&amp;PINC,<br />(1&lt;&lt;4),<br />klaw_3_wyj_3,<br />0<br />};<br /><br />int main()<br />{<br /><br />timer_init(); //system tick at TICKS_PER_SEC rate<br />gpio_init();<br />  Button_init(&amp;b1);<br />  Button_init(&amp;b2);<br />  Button_init(&amp;b3);<br /><br />//sei();<br />while(1)<br />{<br />if(timer()) {//software timer 100Hz<br />Button_service(&amp;b1);<br />Button_service(&amp;b2);<br />Button_service(&amp;b3);<br />}<br /><br />}<br /><br />}[/syntax]<br /><br />KOD podzielony na strawne kawalki. Każdy switch ma swoją, a zarazem typową konfigurację. Coś wreszcie widać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21072">fofex</a> — 19 sty 2021, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Draxter32]]></name></author>
<updated>2021-01-19T11:40:23+01:00</updated>
<published>2021-01-19T11:40:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230653#p230653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230653#p230653"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230653#p230653"><![CDATA[
<div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />Podwójne wpisanie do rejestru pomogło, klawisz zaczął działać<br /></div><br />To dobra wiadomość. Gratulacje!<br /><br /><div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />Podwójne wpisanie do rejestru pomogło, klawisz zaczął działać<br />Pojawił się nowy efekt , po wciśnięciu i przytrzymaniu klawisza<br />włącza się i wyłącza a ma przy pierwszym naciśnięciu ma diodę włączyć  <br />przy drugim wyłączyć <br />Te sekwencje odbywają się przy jednorazowym naciśnięciu<br /><br />Co najciekawsze że ten efekt przeniósł się również na port PD7<br />Macie jakieś pomysły jak z tą zarazą walczyć ?  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br />Brzmi jak <em>Switch Debouncing</em>. Nie analizowałem kodu zamieszczonego w pierwszym poście ale czy drgania styków są eliminowane w jakikolwiek sposób?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8185">Draxter32</a> — 19 sty 2021, o 11:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2021-01-19T11:31:09+01:00</updated>
<published>2021-01-19T11:31:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230652#p230652</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230652#p230652"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230652#p230652"><![CDATA[
Problem stary jak świat AVRów, wałkowany na każdym prawi forum i na naszym milion razy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> wyłącza się JEDEN fusebit w MkAvrCalculatorze w atmegach które go mają i po problemie<br /><br /><img src="https://obrazkiforum.atnel.pl/54/f2a71603efffa1594ee8eed0edb77eba.png" alt="Obrazek" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 sty 2021, o 11:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2021-01-19T08:18:05+01:00</updated>
<published>2021-01-19T08:18:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230651#p230651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230651#p230651"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230651#p230651"><![CDATA[
Podwójne wpisanie do rejestru pomogło, klawisz zaczął działać<br />Pojawił się nowy efekt , po wciśnięciu i przytrzymaniu klawisza<br />włącza się i wyłącza a ma przy pierwszym naciśnięciu ma diodę włączyć  <br />przy drugim wyłączyć <br />Te sekwencje odbywają się przy jednorazowym naciśnięciu<br /><br />Co najciekawsze że ten efekt przeniósł się również na port PD7<br />Macie jakieś pomysły jak z tą zarazą walczyć ?  <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=18503">miki53</a> — 19 sty 2021, o 08:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2021-01-18T19:54:32+01:00</updated>
<published>2021-01-18T19:54:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230650#p230650</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230650#p230650"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230650#p230650"><![CDATA[
Kiedyś dawno temu wyłączałem JTAGa przez wpis do rejestru. Tak, jak zauważył xentis, dopiero dwukrotne wpisanie tego polecenia powoduje, że to zadziała (miałem na tych pinach podłączony wyświetlacz 16x2 i działał poprawnie)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 18 sty 2021, o 19:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2021-01-18T19:27:26+01:00</updated>
<published>2021-01-18T19:27:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230649#p230649</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230649#p230649"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230649#p230649"><![CDATA[
Czytałeś ze zrozumieniem opis wyłączenia JTAGa poprzez rejestr MCUSR? Bo coś mi się wydaje że nie do końca.  Zgodnie z tym, co jest napisane na obrazku wrzuconym przez kolegę Draxter32 należy dwukrotnie zapisać bit JTD do rejestru MCUCR w przeciągu 4 cykli zegarowych. Pojedynczy zapis:<div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />[syntax=c]// -----------------------------------------------------------------<br />    MCUCSR |= (1&lt;&lt;JTD); // wyłączenie interfejsu JTAG.<br />// -----------------------------------------------------------------[/syntax]<br /></div> nie wyłączy JTAGa!<br />Wyłącz go jak pisałem wyżej w fusach i po problemie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 18 sty 2021, o 19:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2021-01-18T18:22:24+01:00</updated>
<published>2021-01-18T18:22:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230648#p230648</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230648#p230648"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230648#p230648"><![CDATA[
Niestety to nic nie daje, funkcje zawarte w obsłudze klawiszy <br />są nadal wywoływane tak jakby klawisz był wciśnięty<br /><br /><br />Tak mam ustawione ten rejestr<br />[syntax=c]// -----------------------------------------------------------------<br />    MCUCSR |= (1&lt;&lt;JTD); // wyłączenie interfejsu JTAG.<br />// -----------------------------------------------------------------[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 18 sty 2021, o 18:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2021-01-17T23:30:36+01:00</updated>
<published>2021-01-17T23:30:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230638#p230638</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230638#p230638"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230638#p230638"><![CDATA[
<div class="quotetitle">Draxter32 napisał(a):</div><div class="quotecontent"><br />Aby wyłączyć interfejs JTAG w mikrokontrolerze Atmega32A należy w rejestrze MCUCSR dla bitu JTD (bit nr 7), wpisać wartość 1.<br /></div>Lub poprostu wyłączyć go w fusebitach i z głowy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 17 sty 2021, o 23:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Draxter32]]></name></author>
<updated>2021-01-17T19:38:19+01:00</updated>
<published>2021-01-17T19:38:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230635#p230635</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230635#p230635"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230635#p230635"><![CDATA[
<div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />Procek to Atmega 32A<br /></div><br /><br />Podany mikrokontroler domyślnie ma włączony interfejs JTAG. Wyprowadzenie interfejsu JTAG znajdują się na pinach 24, 25, 26 i 27 (obudowa DIP40). Wspomniane piny korespondują odpowiednio do PC2, PC3 PC4 i PC5. Rozwiązanie to wyłączenie interfejsu JTAG.<br /><br />Aby wyłączyć interfejs JTAG w mikrokontrolerze Atmega32A należy w rejestrze <strong>MCUCSR</strong> dla bitu <strong>JTD</strong> (bit nr 7), wpisać wartość <strong>1</strong>.<br /><br /><a href="https://obrazkiforum.atnel.pl/8185/422b3f1fe3190ec1c5ea6005da0e5289.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8185/422b3f1fe3190ec1c5ea6005da0e5289.PNG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8185">Draxter32</a> — 17 sty 2021, o 19:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2021-01-17T19:16:01+01:00</updated>
<published>2021-01-17T19:16:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230632#p230632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230632#p230632"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230632#p230632"><![CDATA[
Procek to Atmega 32A<br /><br />a schemat to niema nawet co rysować zwykły mikro przełącznik    <br />jednym końcem podłączony do wyjść procka a drugim do GND<br /><br />Ten sam fragment kodu działa poprawnie na porcie D<br />Dlatego nie rozumiem  dlaczego nie działa na porcie C<br />może ma to związek z I2C na tym porcie <br />A le to by było nie logiczne<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 17 sty 2021, o 19:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Draxter32]]></name></author>
<updated>2021-01-17T18:03:00+01:00</updated>
<published>2021-01-17T18:03:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230631#p230631</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230631#p230631"/>
<title type="html"><![CDATA[Re: Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230631#p230631"><![CDATA[
Proszę pokazać schemat w jaki sposób zostały podłączone klawisze do mikrokontrolera. Jaki to mikrokontroler?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8185">Draxter32</a> — 17 sty 2021, o 18:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2021-01-17T17:58:22+01:00</updated>
<published>2021-01-17T17:58:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230630#p230630</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230630#p230630"/>
<title type="html"><![CDATA[Problem z klawiszami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23546&amp;p=230630#p230630"><![CDATA[
Witam <br /><br />Mam problem z klawiszami podłączonymi do PORTU C <br />z którego jest już sterowany wyświetlacz LCD <br />po magistrali sprzętowej I2C z pinów SDA - SCL<br />Klawisze są podłączone do pinów PC2,PC3,PC4<br />te wyjścia procka są ustawione jako wejścia dla <br />klawiszy <br />Program nie zgłasza błędów niby jest OK ale <br />mimo że klawisz nie jest wciśnięty do GND to cały czas <br />zachowuje się tak jak by był i wywołuje mi funkcję<br />zamieszczoną w obsłudze klawisza<br /><br />Czy ktoś z kolegów może podpowiedzieć dlaczego tak jest ?<br /><br />OTO KOD<br /> [syntax=c]// ** OBSŁUGA KLAWISZY JAKO WEJŚCIA DLA CZUJNIKÓW *******<br /><br />   #define KLAWISZ_1 (1&lt;&lt;PC2)<br />   #define KLAWISZ_2 (1&lt;&lt;PC3)<br />   #define KLAWISZ_3 (1&lt;&lt;PC4)<br />// *******************************************************<br /> uint8_t key_lock;<br />// ******************************************<br /><br />// ********* KLAWISZE JAKO WEJŚCIA DLA CZUJNIKÓW I KRAŃCÓWEK ***********************<br />DDRC &amp;= ~ ( 1 &lt;&lt; PC2); // Ustawiamy kierunek pinu PC2 jako WEJŚCIE<br />DDRC &amp;= ~ ( 1 &lt;&lt; PC3); // Ustawiamy kierunek pinu PC3 jako WEJŚCIE<br />DDRC &amp;= ~ ( 1 &lt;&lt; PC4); // Ustawiamy kierunek pinu PC4 jako WEJŚCIE<br /><br />PORTC |= KLAWISZ_1; // podciągamy linie klawisza do VCC KLAWISZ JAKO WEJŚCIE_1<br />PORTC |= KLAWISZ_2; // podciągamy linie klawisza do VCC KLAWISZ JAKO WEJŚCIE_2<br />PORTC |= KLAWISZ_3; // podciągamy linie klawisza do VCC KLAWISZ JAKO WEJŚCIE_3<br /><br />// *************************************************************************************<br /><br />   sei();<br />while(1) {<br /><br />// =========== STEROWANIE KLAWISZAMI JAKO WEJŚCIA  ===========================================================<br />// ***************** klawisz_1  jako wejście - 1 pin PC2 *****************************************************<br /><br />   if( !key_lock &amp;&amp; !(PINC &amp; KLAWISZ_1) ) {<br />   key_lock=1;<br /><br />   //wy_1 = 1;<br />   klaw_1_wyj_1();<br /><br />   } else if( key_lock &amp;&amp; ( PINC &amp; KLAWISZ_1 ) ) key_lock++;<br /><br /><br />// ***************** klawisz_2 jako wejście - 2 pin PC3  *****************************************************<br /><br />   if( !key_lock &amp;&amp; !(PINC &amp; KLAWISZ_2) ) {<br />    key_lock=1;<br /><br />   // wy_2 = 1;<br />    klaw_2_wyj_2();<br /><br />   } else if( key_lock &amp;&amp; ( PINC &amp; KLAWISZ_2 ) ) key_lock++;<br /><br /><br />// ***************** klawisz_3 jako wejście - 3 pin PC4 ***************************************************************<br /><br />   if( !key_lock &amp;&amp; !(PINC &amp; KLAWISZ_3) ) {<br />    key_lock=1;<br /><br />   // wy_3 = 1;<br />    klaw_3_wyj_3();<br /><br />   } else if( key_lock &amp;&amp; ( PINC &amp; KLAWISZ_3 ) ) key_lock++;<br /><br /><br />// ***********************************************************************************************************[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 17 sty 2021, o 17:58</p><hr />
]]></content>
</entry>
</feed>