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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-04-03T20:35:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15024&amp;mode</id>
<entry>
<author><name><![CDATA[lukasz94w]]></name></author>
<updated>2016-04-03T20:35:19+01:00</updated>
<published>2016-04-03T20:35:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157693#p157693</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157693#p157693"/>
<title type="html"><![CDATA[Re: ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157693#p157693"><![CDATA[
Teraz rozumiem, rzeczywiście nie zwróciłem na to uwagi. Dziękuje za odpowiedzi. Temat do zamknięcia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13539">lukasz94w</a> — 3 kwi 2016, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-04-03T19:07:46+01:00</updated>
<published>2016-04-03T19:07:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157668#p157668</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157668#p157668"/>
<title type="html"><![CDATA[Re: ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157668#p157668"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Jeśli chodzi o drugi program nie rozumiem dlaczego zaczynam od 2. Zmienna licznik na samym początku ma wartość 1, binarnie ...01. Czy o to chodzi? Kod ma za zadanie zmieniać stan poszczególnych pinów portu C na 1, 2, 4, 8 w pętli.<br /></div>Twoja pętla wystawia na port C w pętli stan na piny 2, 4, 8, 1. Zaczynasz od wartości 2 a nie jeden, bo najpierw inkrementujesz a potem wystawiasz. Ma to tylko znaczenie przy pierwszym wystawieniu o ile coś to u Ciebie zmienia. Jak to będzie sterowanie segmentami LED, to na nic nie wpłynie. Ale jakby to było sekwencyjne wyzwalanie jakiś zależnych zdarzeń to mogło by mieć znaczenie. Chodzi o to byś wiedział i to robił świadomie.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 3 kwi 2016, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2016-04-03T18:45:50+01:00</updated>
<published>2016-04-03T18:45:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157665#p157665</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157665#p157665"/>
<title type="html"><![CDATA[Re: ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157665#p157665"><![CDATA[
Nie tylko z bluebooka się ucz, ale także masz blog Mirka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10617">Bartek123</a> — 3 kwi 2016, o 18:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukasz94w]]></name></author>
<updated>2016-04-03T18:04:21+01:00</updated>
<published>2016-04-03T18:04:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157655#p157655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157655#p157655"/>
<title type="html"><![CDATA[Re: ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157655#p157655"><![CDATA[
Skorzystałem właśnie z jego przykładu na eliminację drgań. Nie znalazłem w bluebooku innych przykładów.. Jeśli chodzi o drugi program nie rozumiem dlaczego zaczynam od 2. Zmienna licznik na samym początku ma wartość 1, binarnie ...01. Czy o to chodzi? Kod ma za zadanie zmieniać stan poszczególnych pinów portu C na 1, 2, 4, 8 w pętli.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13539">lukasz94w</a> — 3 kwi 2016, o 18:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-04-03T17:20:55+01:00</updated>
<published>2016-04-03T17:20:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157652#p157652</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157652#p157652"/>
<title type="html"><![CDATA[Re: ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157652#p157652"><![CDATA[
Eliminację drgań styków powinieneś zrobić. Mirek na swoim blogu i video poradnikach o tym pisze.<br /><br />W drugim programie w przerwaniu sterujesz 4 pinami, ale do modyfikujesz cały port C. Jak robisz to świadome, to OK. Ale możesz się na tym kiedyś przejechać, jak coś podłączysz na dalsze piny.<br />Dodatkowo przy starcie programu zaczynasz sekwencję nie od 1 tylko od 2. Także nie wpływa to na działanie, ale do czasu jak będziesz musiał przelatywać po starcie po kolei od 1 do 8 (zależnie do czego ma służyć ten kod).<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 3 kwi 2016, o 17:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukasz94w]]></name></author>
<updated>2016-04-03T17:03:24+01:00</updated>
<published>2016-04-03T17:03:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157648#p157648</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157648#p157648"/>
<title type="html"><![CDATA[Re: ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157648#p157648"><![CDATA[
Czyli ta wersja bez uwzględnienia tego zjawiska jest ok? Jak drugi program?<br /><br />Zauważyłem, że nie zadeklarowałem pinów portu jako wyjścia (w pliku d_led.c), a także nie wygasiłem ich (w domyśle diod LED) na starcie programu w związku z tym w należało by jeszcze dołączyć następujący kod:<br />[syntax=c]PORTC|=0xFF;<br />DDRC|=0xFF;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13539">lukasz94w</a> — 3 kwi 2016, o 17:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-04-03T17:02:02+01:00</updated>
<published>2016-04-03T17:02:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157647#p157647</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157647#p157647"/>
<title type="html"><![CDATA[Re: ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157647#p157647"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />nie jestem pewny czy dobrze robię umieszczając w przerwaniu &quot;_delay&quot;<br /></div><br />Źle, a nawet bardzo źle robisz. Procedura przerwania powinna trwać maksymalnie krótko, bo w tym czasie wstrzymywane są inne działania kodu.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 3 kwi 2016, o 17:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukasz94w]]></name></author>
<updated>2016-04-03T16:53:47+01:00</updated>
<published>2016-04-03T16:53:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157646#p157646</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157646#p157646"/>
<title type="html"><![CDATA[ATmega16 - sprawdzenie poprawności kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15024&amp;p=157646#p157646"><![CDATA[
Witam. Jestem nowym użytkownikiem tego forum, założyłem ten wątek ponieważ chciałbym prosić Was o sprawdzenie dwóch programów opartych o przerwania. Jeden ma za zadanie przy wciśniętym klawiszu PD3 mikrokontrolera ATmega16 zmienić stan diody PB6. Wklejam dwie wersje jedną z &quot;eliminacją&quot; zjawiska drgań styków, drugą bez tego rozwiązania (nie jestem pewny czy dobrze robię umieszczając w przerwaniu &quot;_delay&quot;). Drugi program ma za zadanie &quot;przesuwać&quot; diody w lewą stronę (w pętli). Zdaje sobie z tego sprawę, że dobrana przeze mnie częstotliwość będzie wynosić około 25Hz, jednak chodzi mi o sprawdzenie poprawności kodu tego programu (dołączam oba pliki tego programu: main.c oraz d_led.c).<br /><br />Program pierwszy (eliminacja drgań styków): <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br />int main( void ) <br />{<br /><br /><br />GICR = (1&lt;&lt;INT1); // zezwolenie na przerwanie od INT1<br />MCUCR |= (1&lt;&lt;ISC01);    //przerwanie od jakiegokolwiek zbocza (narastajace i opadajace)<br /><br /><br />//konfiguracja diody LED (jako wyjscie)<br />DDRB |= (1&lt;&lt;PB6); <br />//stan wysoki na diodzie (poczatkowo wylaczona)<br />PORTB|=(1&lt;&lt;PB6);<br /><br />//ustawienie klawisza jako wejscie<br />DDRD &amp;=~(1&lt;&lt;PD3);<br />//podciagniecie klawisza pod VCC<br />PORTD |= (1&lt;&lt;PD3);<br /><br />sei();<br />while(1) {<br /><br /><br />              }<br /><br />ISR(INT0_vect){<br />if (     !(    (PIND) &amp; (1&lt;&lt;PD3)  )   ) //sprawdzenie czy wcisniety klawisz<br />{<br />_delay_ms(80); // odczekanie (eliminacja drgan stykow)<br />if (!(    (PIND) &amp; (1&lt;&lt;PD3)  )) // ponowne sprawdzenie czy klawisz wcisniety<br />{<br />PORTB ^= (1&lt;&lt;PB6); // zmiana stanu diody na przeciwny<br />_delay_ms(200);<br />}<br />}<br />}[/syntax]<br /><br /><br />Program pierwszy (bez &quot;eliminacji&quot; drgań):<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br />int main( void ) <br />{<br /><br /><br />GICR = (1&lt;&lt;INT1); // zezwolenie na przerwanie od INT1<br />MCUCR |= (1&lt;&lt;ISC01);    //przerwanie od jakiegokolwiek zbocza (narastajace i opadajace)<br /><br /><br />//konfiguracja diody LED (jako wyjscie)<br />DDRB |= (1&lt;&lt;PB6); <br />//stan wysoki na diodzie (poczatkowo wylaczona)<br />PORTB|=(1&lt;&lt;PB6);<br /><br />//ustawienie klawisza jako wejscie<br />DDRD &amp;=~(1&lt;&lt;PD3);<br />//podciagniecie klawisza pod VCC<br />PORTD |= (1&lt;&lt;PD3);<br /><br />sei();<br />while(1) {<br /><br /><br />              }<br /><br />ISR(INT0_vect){<br />if (     !(    (PIND) &amp; (1&lt;&lt;PD3)  )   ) //sprawdzenie czy wcisniety klawisz<br />{<br /><br />PORTB ^= (1&lt;&lt;PB6); //zmiana stanu<br /><br />}<br />        }<br />}[/syntax]<br /><br />Program drugi (main.c):<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />int main (void)<br />{<br /><br />d_led_init();<br /><br />sei();<br />while(1)<br />{<br /><br />}<br /><br /><br /><br /><br />}[/syntax]<br /><br />Program drugi(d_led.c):<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;d_led.h&quot;<br /><br /><br />void d_led_init(void)<br />{<br /><br />TCCR0|=(1&lt;&lt;WGM01);<br />TCCR0|=(1&lt;&lt;CS01)|(1&lt;&lt;CS00);<br />OCR0=254; // okolo 25 Hz<br />TIMSK|=(1&lt;&lt;OCIE0);<br />}<br /><br />ISR(TIMER0_COMP_vect)<br /><br />{<br />static uint8_t licznik=1;<br />licznik&lt;&lt;=1;<br />if(licznik&gt;8) licznik = 1;<br />PORTC=licznik;<br />}[/syntax]<br /><br />Pozdrawiam i czekam na odpowiedzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13539">lukasz94w</a> — 3 kwi 2016, o 16:53</p><hr />
]]></content>
</entry>
</feed>