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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-03T22:03:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10891&amp;mode</id>
<entry>
<author><name><![CDATA[rekon]]></name></author>
<updated>2015-03-03T22:03:45+01:00</updated>
<published>2015-03-03T22:03:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121818#p121818</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121818#p121818"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121818#p121818"><![CDATA[
jest fajna praktyka - jak ktoś Ci coś radzi a Ty nie rozumiesz zapytaj o to czego nie rozumiesz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Ty się czegoś dowiesz a pomagający Ci będzie miał jakiekolwiek podstawy do tego żeby wierzyć że czytasz ze zrozumieniem - a uwierz z tym czasem jest ciężko<br /><br />czy Ty wiesz co robi każda z Twoich linijek kodu jedna po drugiej?<br />Jest fajna metoda której mnie uczono podczas przyswajania programowania :<br />&quot;metoda gumowej kaczuszki&quot; czyli tłumaczysz kaczuszce swój kod tak długo aż ona kiwnie głową że rozumie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> chodzi o to że przy prostych programach można analizować każdą linijkę osobno i wtedy na pewno zrozumiesz gdzie masz błąd<br /><br />mokrowskiego nie jest tak łatwo urazić całe szczęście <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> przynajmniej mam taką nadzieję...<br /><br />ogólnie w momencie w którym była mowa o likwidacji zmiennych globalnych (o czym sam muszę doczytać) nie było jeszcze mowy o przerwaniu... I lepiej zrobisz jak narazie zrozumiesz kod bez przerwania - przerwanie to następny etap... na razie zrób to wszystko na delayach (to takie moje subiektywne zdanie) ja wyskoczyłem z tymi przerwaniami bo nie do końca zrozumiałem pierwszy post odpowiednio. Przerwania to nic strasznego ale najpierw ogarnij C samo w sobie a później walcz kolejno z możliwościami procka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7932">rekon</a> — 3 mar 2015, o 22:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ghann]]></name></author>
<updated>2015-03-03T20:20:02+01:00</updated>
<published>2015-03-03T20:20:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121793#p121793</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121793#p121793"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121793#p121793"><![CDATA[
Prędkość mojego MCU to 1000000 Hz. Bardzo przepraszam za nie zastosowanie Twoich rad, może to dlatego że niektórych nie rozumiem. <br /><br />1. Wstawiłem _delay_ms w funkcję  { ...}, faktycznie prędkość wykonywanej operacji spadała, ale nie rozumiem na jakiej zasadzie to działa. Jak to obliczyć, żeby przerwanie wystąpiło co 1 sek ? <br />2. Zmienną uint_t wstawiłem jako globalną, bo gdy wstawiam do funkcji main wektor przerwania nie wie co to jest ta zmienna &quot;s&quot;. <br />3. Napisałem while(1) po prostu z przyzwyczajenia.<br /><br />Przepraszam, jeśli uraziłem. To naprawdę nie chcący, błędy nie wynikają z olewczego podejścia tylko raczej z braku wiedzy. Przepraszam jeszcze raz  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6944">Ghann</a> — 3 mar 2015, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ghann]]></name></author>
<updated>2015-03-03T16:33:26+01:00</updated>
<published>2015-03-03T16:33:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121756#p121756</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121756#p121756"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121756#p121756"><![CDATA[
Witam ponownie. Jestem aktualnie po poradniku o przerwaniach Pana Mirka, no można powiedzieć nie jestem taki zielony jak poprzednio. Ale czegoś mi jeszcze brak mam nadzieję, że pomożecie <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />Chce zrobić stoper, póki co zrobiłem zmienna która liczy sekundy i chciałem aby na wyświetlaczu były wyświetlone same sekundy.O to mój kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/delay.h&gt;<br />    #include &quot;lcd44780.h&quot;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />volatile uint8_t s;<br /><br /><br /><br /><br />int main(void)<br /> {<br /><br />//----------------Deklaracja wyjsc---------------------------------------<br /><br />DDRB |= (1&lt;&lt;PB2);              // PIN PB2 jako wyjcie<br />        PORTB |= (1&lt;&lt;PB0) | (1&lt;&lt;PB1);  // podciągnięcie vcc<br /><br />//------------- Ustawienia Timera----------------------------------------<br /><br />        TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); // źródłem CLK, preskaler 1024<br />        TIMSK |= (1&lt;&lt;TOIE0);  //<br />        TCNT0 =6;<br /><br />//-------------------Powitanie----------------------------------------------------<br /><br /><br />        lcd_init();<br />        lcd_cls();<br />        lcd_locate(0,3);<br />        lcd_str(&quot;Stoper&quot;);<br /><br /><br />        sei();<br />        while(1){<br /><br />        for(s=0;s&lt;60;) {<br />        s++;<br />        lcd_locate(1,5);<br />        lcd_int(s);<br />        }<br />        }<br /> }<br /><br /><br /><br /><br /><br />ISR(TIMER0_OVF_vect)<br />{<br />s++;<br />}[/syntax]<br /><br />Ustawione PINY jako wyjścia, to po prostu tak dla testów także proszę się nie dziwić. Gdzie mój problem ?? A na w ustawieniu czasów. Bo na wyświetlaczu oczywiście wszystko się wyświetla zmienna s i zliczanie sekund jest. Tylko z taka zawrotną prędkością, jak poradzić sobie z ustawieniem czasu zliczania impulsów (przerwania) jak mam tylko takie dzielniki: 1024, 256, 64, 8. Zliczanie sekund więc częstotliwość jaka powinienem uzyskać to 1Hz. Ale nie mam pojęcia jak to ustawić. Proszę Was o rady <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=6944">Ghann</a> — 3 mar 2015, o 16:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rekon]]></name></author>
<updated>2015-03-02T19:22:51+01:00</updated>
<published>2015-03-02T19:22:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121658#p121658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121658#p121658"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121658#p121658"><![CDATA[
o kurcze, przepraszam nie zrozumiałem zamysłu projektu i &quot;timer&quot; mnie zmylił. Oczywiście rozwiązanie kolegi szymon12w na tym etapie będzie oczywiście najlepsze. Tak jak zostało wspomniane _delay_ms(1000) to funkcja która mówi procesorowi aby w danym miejscu zatrzymać wykonywanie programu na 1000 ms czyli 1 s (delay = opóźnienie), a następnie zacząć kolejną instrukcję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7932">rekon</a> — 2 mar 2015, o 19:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szymon12w]]></name></author>
<updated>2015-03-02T19:11:14+01:00</updated>
<published>2015-03-02T19:11:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121657#p121657</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121657#p121657"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121657#p121657"><![CDATA[
Funkcja _delay_ms() nie uruchamia żadnego timera, ona po prostu wprowadza procesor w stan bezczynności. Dopisz _delay_ms(1000) na końcu pętli co spowoduje, że po dodaniu i wyświetleniu liczby procesor odczeka każdorazowo 1 sekunde.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2336">szymon12w</a> — 2 mar 2015, o 19:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rekon]]></name></author>
<updated>2015-03-02T19:18:10+01:00</updated>
<published>2015-03-02T19:07:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121655#p121655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121655#p121655"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121655#p121655"><![CDATA[
Polecam poczytać o przerwaniach, co to jest i jak z tego korzystać (można też obejrzeć poradniki Mirka w tym temacie).<br />Poczytać o timerze samym w sobie i jak generować przerwania w określonych odstępach czasu. <br /><br />Jak już to zrobisz proponuję żebyś w przerwaniach generowanych mniej wiecej co sekundę (w miarę rozwijania projektu poprawiać dokładność) inkrementował swój licznik. Pamiętaj o volatile - również do przeczytania na blogu Mirka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7932">rekon</a> — 2 mar 2015, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ghann]]></name></author>
<updated>2015-03-02T19:00:44+01:00</updated>
<published>2015-03-02T19:00:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121653#p121653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121653#p121653"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121653#p121653"><![CDATA[
No racja. Ale jak się do tego zabrać ?? Jeżeli wcześniej uruchomię timer to będzie się on odnosił do pętli while??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6944">Ghann</a> — 2 mar 2015, o 19:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szymon12w]]></name></author>
<updated>2015-03-02T18:52:41+01:00</updated>
<published>2015-03-02T18:52:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121652#p121652</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121652#p121652"/>
<title type="html"><![CDATA[Re: Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121652#p121652"><![CDATA[
Jedyne opóźnienie zastosowałeś przed główną pętlą, czyli program wyświetla napis Stoper, czeka 1 sekundę i wskakuje do pętli gdzie z pełną prędkością odlicza do 60 bez opóźnień.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2336">szymon12w</a> — 2 mar 2015, o 18:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ghann]]></name></author>
<updated>2015-03-02T18:47:46+01:00</updated>
<published>2015-03-02T18:47:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121651#p121651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121651#p121651"/>
<title type="html"><![CDATA[Stoper dla początkującego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10891&amp;p=121651#p121651"><![CDATA[
Witam. jestem początkującym programistą. Z chęci nauki i zdobywania wiedzy praktycznej postanowiłem zbudować a raczej zaprogramować stoper. Zainspirowany tematem kolegi: <br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic4399.html" >topic4399.html</a><!-- l --><br /><br />Zaczołem próbować własnych sił, nie długo było trzeba czekać by napotkać na problemy. Czy po wpisaniu funkcji:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/delay.h&gt;<br />    #include &quot;lcd44780.h&quot;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />uint8_t s;<br /><br /><br />int main(void)<br /> {<br /><br />  PORTB |= (1&lt;&lt;PB0) | (1&lt;&lt;PB1);  // podciągnięcie vcc<br /><br /><br /><br /><br /><br />        lcd_init();<br />        lcd_cls();<br />        lcd_locate(0,3);<br />        lcd_str(&quot;Stoper&quot;);<br />        _delay_ms(1000);<br /><br /><br /><br />        while(1){<br /><br />        for(s=0;s&lt;60;s++);<br />        lcd_locate(1,5);<br />        lcd_int(s);<br />        }<br />}[/syntax]<br /><br />Nie powinna zmienna s, zwiększać się co jeden aż do 60??  No u mnie jest tak, że odrazu pojawia się wartość 60. O czym zapomniałem??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6944">Ghann</a> — 2 mar 2015, o 18:47</p><hr />
]]></content>
</entry>
</feed>