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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-02-01T10:33:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=19961&amp;mode</id>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-02-01T10:33:52+01:00</updated>
<published>2018-02-01T10:33:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203072#p203072</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203072#p203072"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203072#p203072"><![CDATA[
Dzięki Daro69.<br />Pomyślę. Problem tkwi w tym, ze umiem sam tworzyć jakieś podstawowe funkcje, gdzie są 2-3 argumenty, ale kiedy widzę coś<br />bardziej skomplikowanego, gdzie jest kilka zmiennych, kilka nawiasów okrągłych, a w nich jeszcze kwadratowe i tam jeszcze argumenty,<br />to po prostu nie potrafię na tym etapie rozklinić takiej linijki  kodu, a wiec dokonywać modyfikacji również.<br />Owszem, wiem co robi cała funkcja i potrafię ja użyć, ale jak działa, co się w niej dzieje itd...to już nie pojmuję (no powiedzmy jakieś<br />części tej funkcji, czy innej, bo trochę rozumiem).<br />Ja wiem, że trzeba się uczyć i samo nie przyjdzie, a więc to czynię pomału.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 1 lut 2018, o 10:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-02-01T09:49:58+01:00</updated>
<published>2018-02-01T09:49:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203066#p203066</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203066#p203066"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203066#p203066"><![CDATA[
hejo,<br /><div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />...następuje nadpisywanie tekstem tej linijki i być może<br />przykrycie kursora.<br /></div><br />chyba bym kombinował umieścić podmianę znaku<br />wewnątrz funkcji, na końcu po zapełnieniu buf.<br />Co określony czas nadpisywać znak swoim &quot;_&quot;.<br /><br />void buf_refresh(void){<br />           if( !.......){<br /><br /><br />           .&lt;.......o tu.<br />           }<br />}<br />przyznam się że biblioteki nie przestudiowałem. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />możliwe że błądzę we mgle. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 1 lut 2018, o 09:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-02-01T09:05:49+01:00</updated>
<published>2018-02-01T09:05:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203065#p203065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203065#p203065"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203065#p203065"><![CDATA[
Temat ogarnąłem.<br />To znaczy pozostałem przy kodzie z _ms_delay(X); , ale w funkcji obsługi przycisków zmieniłem zmienną odpowiedzialną za <br />eliminację drgań styków z uint16_t na uint8_t i teraz zmiany literek następują bardzo szybko jakby nie zależnie od częstotliwości<br />migotania i odświeżania kursora. Trochę mnie to dziwi, że jest ok, no ale wreszcie koniec.<br />Mimo wszystko pozostaje niesmak, ponieważ nadal nie pozbyłem się delaya.....Dziękuję kolego za chęć pomocy. Może jeszcze ktoś<br />ma jednak jakiś bardziej poprawny sposób. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 1 lut 2018, o 09:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-02-01T07:18:29+01:00</updated>
<published>2018-02-01T07:18:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203064#p203064</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203064#p203064"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203064#p203064"><![CDATA[
Witaj Daro69<br />Same zmiany na lcd wykonuje od czasu do czasu, a potem jest tylko wyświetlanie zapisanych wcześniej danych. Co do <br />odświeżania, to robię to w main.c w pętli głównej cały czas, kiedy jest włączone urządzenie. korzystam z Mirkowej funkcji<br />z lekcji L19 <span style="color: #00FF00">GB</span>, gdzie mam tak (tylko fragment, wiadomo, czemu):<br /><br />[syntax=c]void buf_refresh(void)<br />{<br />if( !(ms10_cnt%(LCD_REFRESH_MS/10)) )<br />{<br />for(y=0;----------;y++)<br />{ // wykona sie tyle razy, ile jest linii-ROWS<br />lcd_locate(y,0);<br />----------- lcd_char( hd_buf&#91;AT(y,x)&#93; );// wykona sie tyle razy, ile jest kolumn-COLS<br />}<br />}<br />lms10 = ms10_cnt;<br />}[/syntax]<br /><br />W main mam buf_refresh();<br /><br />Działa dobrze. No ale przetestuję, co wczoraj napisałeś no i pomęczę się trochę  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br />Pozdrawiam.<br /><br /><span style="color: #00BF40">Dodane po czasie</span><br /><br />Nie chce to niestety działać. Myślę Daro69, że to chyba koncepcja jest zła od samego początku. Tzn. do momentu, kiedy nie<br />postanowiłem wykombinować ten kursor, to program robił, co miał robić i było ok, ale akurat teraz w tym zastosowaniu chyba lipa.<br /><br />Chodzi o to, że zaraz po użyciu tych instrukcji do wyświetlenia kursora następuje nadpisywanie tekstem tej linijki i być może<br />przykrycie kursora. Jeśli było po staremu:<br /><br />[syntax=c]if( !Timer1 )<br />{<br />Timer1=50;<br />lcd_locate(1,pozycja);<br />lcd_str(&quot;_&quot;);<br />_delay_ms(150);<br />}<br />}[/syntax]<br /><br />to kiedy kursor poszedł na wyświetlacz, to następowało zatrzymanie programu na chwilę i mokłem zauważyć migotanie kursora i <br />przy okazji znaku, jeśli takowy był wcześniej wpisany. No niestety metoda ta ma zasadniczą wadę opóźniania całej reszty. To znaczy<br />potem,kiedy dokonam zmian i tylko wyświetlam tekst, to nie ma to żadnego znaczenia, ale właśnie w momencie kiedy przyciskiem<br />zmieniam dane, to ten delay mi przeszkadza. Oczywiście mogę zmieniać tekst naciskając powoli, no ale nie tak ma być i nie tak miałem się uczyć z babolami.<br />Może dziwić, że podałem kod z lcd_locate; , a nie buf_locate;, ale ja mam ten programik w dwóch wersjach z buforowaniem i bez.<br />Testuję i tu i tu, dlatego taki kod.....<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 1 lut 2018, o 07:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-01-31T22:23:15+01:00</updated>
<published>2018-01-31T22:23:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203059#p203059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203059#p203059"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203059#p203059"><![CDATA[
hejka,<br />jeszcze jedna istotna sprawa,<br />odświeżanie ekranu z bufora(jeżeli korzystasz),<br />musi być po każdej aktualizacji zmian. np. jeżeli do bufora wpisujesz zmianę co 1sek,<br />to i odświeżanie ekranu z bufora też co 1sek. nie rzadziej.<br />żeby nie było takiej sytuacji że w buforze się zmienia,<br />a na ekranie nie widać zmian bo wyświetla co drugą - czyli ciągle tę samą.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 31 sty 2018, o 22:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-31T20:52:27+01:00</updated>
<published>2018-01-31T20:52:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203056#p203056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203056#p203056"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203056#p203056"><![CDATA[
Witam Daro69<br />Dziękuję bardzo za włączenie się do tematu. Jutro rano będę miał dostęp do kompa z atb, to przetestuję.<br />&quot;Zmiana&quot;. to jest pozycja w wierszu, gdzie edytuję i zmieniam znak w kolumnie. Chcę ją jakoś podkreślić <br />i po to chcę zastosować czy to mruganie, czy też kursor na tej pozycji.<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 31 sty 2018, o 20:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-01-31T17:13:46+01:00</updated>
<published>2018-01-31T17:13:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203048#p203048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203048#p203048"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203048#p203048"><![CDATA[
witam,<br /><div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br /> [syntax=c]      if( !Timer1 )<br />        {<br />                Timer1=20;<br />                lcd_locate(0,pozycja);<br />                lcd_str(&quot;_&quot;);<br />        }[/syntax]<br /></div><br />może spróbuj coś w tym kierunku - może w tym teście się sprawdzi.<br />[syntax=c]if( !Timer1 ) {        <br />                Timer1=20;<br />                static uint8_t zmiana;<br />                lcd_locate(0,pozycja);<br /><br />                if(zmiana){   lcd_str(&quot;_&quot;);   zmiana=0; }   <br />                else      {   lcd_str(&quot; &quot;);   zmiana=1; }<br />        }[/syntax]<br />może nie najlepsze, ale zawsze jakieś rozwiązanie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br />pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 31 sty 2018, o 17:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-31T14:55:22+01:00</updated>
<published>2018-01-31T14:55:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203046#p203046</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203046#p203046"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203046#p203046"><![CDATA[
Mam kwarc 16MHz. Nigdzie więcej nie używam przerwań, poza próbą uzyskania migającego kursora programowego. Samo przerwanie<br />jest co około 10ms. Wszystko wyświetla się statycznie, do momentu kiedy wejdę do menu i chcę pozmieniać trochę teksty. Do tego<br />chciałem zrobić sobie taki kursor. Ja myślę, aczkolwiek mogę być w błędzie, że tak, jak napisałem wcześniej, to te ify się wykonują<br />prawidłowo i oba przerwania się wykonują, kursor jest wysłany i wyświetlony, ale pętla nie czeka, tylko idzie dalej, a więc nie widzę<br />nic.  Ale z drugiej strony przy wyświetlaniu napisów ALARM w innym projekcie jest ok, a więc chyba sam sobie przeczę  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br />Może trzeba trochę odpocząć, porzucić temat na jakiś czas.... Dzięki mimo wszystko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 31 sty 2018, o 14:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-01-31T14:37:04+01:00</updated>
<published>2018-01-31T14:37:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203044#p203044</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203044#p203044"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203044#p203044"><![CDATA[
No cóż, z takich fragmentów ciężko coś wywnioskować. Bardzo możliwe, że problem jest w tym, że wyświetla się coś innego. Jak często zmieniasz dane wysyłane do wyświetlacza?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 31 sty 2018, o 14:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-31T14:28:55+01:00</updated>
<published>2018-01-31T14:28:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203041#p203041</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203041#p203041"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203041#p203041"><![CDATA[
Witaj Matchef<br />ja próbowałem, ale nie idzie. Przy tym sposobie z mruganiem napisu ALARM było ok, ale kod był w main.c i tylko wyświetlałem i mrugałem<br />różnymi tekstami na lcd w związku z testami na buforze. Tutaj ten kawałek kodu jest umieszczony w czymś w rodzaju prostego menu<br />na case, break....i do wyświetlacza z różnych plików źródłowych są wysyłane dane, które, nie wiem, może przysłaniają ten kursor.<br />Z delay jest ok, ponieważ zatrzymuję wszystko na moment, a w przerwaniach nie widzę kursora. Tak np. pisałem i nie chodzi:<br /><br />[syntax=c]void cursor_blink_line_1(void)<br />{<br />if( !Timer1 )<br />{<br />Timer1=20;<br />lcd_locate(0,pozycja);<br />lcd_str(&quot;_&quot;);<br />}<br /><br />if( !Timer2 )<br />{<br />Timer2=40;<br />lcd_locate(0,pozycja);<br />lcd_str(&quot; &quot;);<br />}<br />}[/syntax]<br /><br />Ja rozumiem. Pętla idzie tysiące, czy miliony razy na sekundę i być może kursor jest, ale oko nie widzi, a delay zatrzymywał i było<br />widać, ale dla innych rzeczy psuje sprawę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 31 sty 2018, o 14:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-01-31T14:03:51+01:00</updated>
<published>2018-01-31T14:03:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203037#p203037</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203037#p203037"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203037#p203037"><![CDATA[
<div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />Im dłużej siedzę, tym gorzej  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" />  Muszę w jakiś sposób przytrzymać chwilę kreskę w kolumnie wiersza i doskonale robi to delay, no ale potem kaszana, jak chcę szybko<br />edytować znak w kolumnie przyciskiem, no bo przecież cały program czeka te nieszczęsne 150ms. proszę o jakieś pomysły.<br /></div>A może po prostu dodaj sobie dodatkową zmienną (Timer2?), która będzie dekrementowana w funkcji obsługi przerwania i co 150 ms będzie zmieniało wyświetlanie z &quot;_&quot; na znak, który ma być wyświetlany.<br />Co jaki czas masz Timer1 = 0? Bo może nawet tylko na tej zmiennej się uda.<br /><br />EDIT:<br />Widzę, że coś dopisałeś. Przecież tu też możesz zrobić w ten sam sposób.<br /><br />Albo (teraz mi przyszło do głowy) timerem odmierzasz 150 ms i toglujesz flagę. I później, jeśli flaga jest równa 0, to wyświetlasz &quot;_&quot;, a jeśli 1, to wyświetlasz znak, jaki potrzebujesz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 31 sty 2018, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-31T13:59:45+01:00</updated>
<published>2018-01-31T13:59:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203035#p203035</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203035#p203035"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203035#p203035"><![CDATA[
Chodzi o to, że muszę jakoś zamrozić ten marker na powiedzmy 300-500ms, co teraz robi delay_ms. Mogę zastosować np. Timer2<br />(no nie wiem-głośno myślę), ale nie mam pomysłu, jak to ugryźć. W innym programiku, gdzie testowałem sobie sterowanie buforowe,<br />to rozwiązałem to tak:<br /><br />[syntax=c]if( !Timer3 )<br />{<br />Timer3=12;<br />buf_locate(2,1);<br />buf_str(&quot;&#91;ALARM&#93;&quot;);<br />// instrukcje<br />}<br /><br />if( !Timer4 )<br />{<br />Timer4=24;<br />buf_locate(2,1);<br />buf_str(&quot;&#91;     &#93;&quot;);<br />// instrukcje<br />}[/syntax]<br /><br />Nie wiem, czy to też nie zawiera baboli z punktu poprawności kodu, ale chciałem sobie pomrugać w przerwaniach powiedzmy<br />nieblokująco i pomrugałem, ale tu jest trochę inny przypadek i nie mam pomysła  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 31 sty 2018, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2018-01-31T13:48:38+01:00</updated>
<published>2018-01-31T13:48:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203033#p203033</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203033#p203033"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203033#p203033"><![CDATA[
no dałem ci sugestię korzystasz z delayów i dlatego ci to źle chodzi .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 31 sty 2018, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-31T13:42:00+01:00</updated>
<published>2018-01-31T13:42:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203032#p203032</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203032#p203032"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203032#p203032"><![CDATA[
Dzięki tonygryps.<br />Nie obraź się proszę na początku mojej odpowiedzi, ale gdybym wiedział jak prawidłowo napisać, to tego postu i innych przeze mnie<br />napisanych by tu nie było. No chyba że za wyjątkiem tych pomocnych dla innych początkujących  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br />Ja rozumiem dobrodziejstwa timerów i nieudolność _ms_delay(x); przy pewnych zastosowaniach, tylko po prostu jestem jeszcze na<br />takim etapie, że nie potrafię za wiele sam wymyślić. Kiedy spoglądam na inne kody i je analizuję, to nieraz sobie myślę, jak to fajnie<br />i prosto ktoś napisał, ale sam ciężko wpadam na coś nowego, ot i tak. Mam nadzieje, że się to z czasem zmieni, a na razie jest <br />pod górkę. Poprzedni mój post jest niepełny. Coś się pomyliłem przy wysyłaniu, ale ja wiem, że to głupota, co spłodziłem. Napisałem, że<br />to funkcjonuje, tylko źle, nieudolnie, bo przy okazji spowalnia cały program i poprosiłem o jakieś sugestie.Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 31 sty 2018, o 13:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2018-01-31T13:20:36+01:00</updated>
<published>2018-01-31T13:20:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203030#p203030</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203030#p203030"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203030#p203030"><![CDATA[
skoro korzystasz z takiego dobrodziejstwa jak timer programowy to po co stosujesz jeszcze dylaje?<br />[syntax=c]_delay_ms(150);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 31 sty 2018, o 13:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-31T12:26:44+01:00</updated>
<published>2018-01-31T12:26:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203018#p203018</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203018#p203018"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=203018#p203018"><![CDATA[
Chciałem poprosić o pomoc.<br />Otóż zrobiłem migający kursor w pozycji, gdzie akurat chcę edytować znak na ekranie lcd. Niestety jest to najgorsza chyba z <br />możliwych opcji i proszę o jakieś pomysły. To działa z punktu widzenia samej idei, ale niestety wprowadza spowolnienie, które<br />przeszkadza chociażby przy obsłudze przycisków, czy innych funkcji w programie. Kod wygląda następująco:<br /><br />[syntax=c]void cursor_blink_line_1(void)<br />{<br />if( !Timer1 )<br />{<br />Timer1=50;<br />lcd_locate(0,pozycja);<br />lcd_str(&quot;_&quot;);<br />_delay_ms(150);<br />}<br />}<br /><br />Im dłużej siedzę, tym gorzej  :shock:  Muszę w jakiś sposób przytrzymać chwilę kreskę w kolumnie wiersza i doskonale robi to delay, no ale potem kaszana, jak chcę szybko<br />edytować znak w kolumnie przyciskiem, no bo przecież cały program czeka te nieszczęsne 150ms. proszę o jakieś pomysły.[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 31 sty 2018, o 12:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-25T07:22:53+01:00</updated>
<published>2018-01-25T07:22:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202645#p202645</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202645#p202645"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202645#p202645"><![CDATA[
Witam ponownie.<br />Jakoś nie ma nikogo, kto mógłby się wypowiedzieć i ew. wyjaśnić, jak to jest w tym przypadku. Wklejam kod do przemyśleń.<br />Używam kwarcu 16MHz i atmega16.<br /><br />[syntax=c]while(1)<br />{<br />buf_refresh();<br /><br />if( !Timer1 )<br />{<br />Timer1=100;<br />buf_locate(0,1);<br />buf_str(&quot;Buforowanie textu&quot;);<br />// instrukcje<br />}<br /><br />if( !Timer2 )<br />{<br />Timer2=100;<br />buf_locate(1,0);<br />buf_str_P(PSTR(&quot;Napis we FLASH&quot;));<br />// instrukcje<br />}<br /><br />if( !Timer3 )<br />{<br />Timer3=25;<br />buf_locate(2,1);<br />buf_str(&quot;&#91;ALARM&#93;&quot;);<br />// instrukcje<br />}<br /><br />if( !Timer4 )<br />{<br />Timer4=50;<br />buf_locate(2,1);<br />buf_str(&quot;&#91;     &#93;&quot;);<br />// instrukcje<br />}<br /><br />if( !Timer5 )<br />{<br />Timer5=25;<br />buf_locate(3,10);<br />buf_str(&quot;&#91;ALARM2&#93;&quot;);<br />// instrukcje<br />}<br /><br />if( !Timer6 )<br />{<br />Timer6=50;<br />buf_locate(3,10);<br />buf_str(&quot;&#91;      &#93;&quot;);<br />// instrukcje<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 25 sty 2018, o 07:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-24T18:33:27+01:00</updated>
<published>2018-01-24T18:33:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202616#p202616</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202616#p202616"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202616#p202616"><![CDATA[
No więc wykonałem małe ćwiczenie w związku z tym tematem. <br />Utworzyłem kilka timerów z pierwszego postu, tzn.<br /><br />[syntax=c]if<br />( !Timer1 )                 <br />                 {<br />                         Timer1=100;<br />                         // instrukcje<br />                 }<br /> <br />                 if( !Timer2 )                 <br />                 {<br />                         Timer2=100;<br />                         // instrukcje<br />                 }<br /> <br />                 if( !Timer3 )                 <br />                 {<br />                         Timer3=100;<br />                         // instrukcje<br />                 }<br /> <br />                 if( !Timer4 )                 <br />                 {<br />                         Timer4=100;<br />                         // instrukcje<br />                 }<br />        }[/syntax]<br /><br />Ponieważ na dany moment nie miałem przygotowanych ledów, to wykorzystałem wyświetlacz lcd.Wyświetlałem teksty w czterech linijkach, migotałem na<br />różne sposoby tymi tekstami. Wiem, że w przerwaniach nie należy wyświetlać tekstów na lcd ze względu na spowolnienie całości, ale ja zastosowałem<br />sterowanie buforowe i funkcje Mirka z projektu warstw na lcd. Jednym słowem kosmos do tradycyjnego sterowania  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> . Teraz nie wstawię kodu, ponieważ<br />jestem na innym kompie, ale wyglądało to tak, że migałem dwoma tekstami w dwóch linijkach. Dwa teksty migały około 2 razy na sekundę. Pozostałe wyświetlały<br />się statycznie. Miganie zrobiłem tak, że jeden timer zapalał napis, a drugi timer gasił (czyścił).<br />Dla drugiego napisu tak samo. Jeden timer zapalał napis, a drugi gasił. Czyli razem cztery timery dla dwóch mrugających napisów. I teraz najważniejsze.<br />W obu przypadkach ustawiłem takie same czasy dla dwóch linijek (czas świecenia i czas nieświecenia). I co zauważyłem:<br />Oba napisy zapalają się dokładnie i gaszą w tych samych momentach (pomijam bezwładność wzroku i co tam jeszcze). I teraz na pierwszy rzut oka doszedłem<br />do wniosku, że dwa (czy może 4) niezależne timery robią zupełnie niezależne , choć takie same procesy i być może dokładnie, a może prawie dokładnie w tym<br />samym czasie (nie wiem, jak Mirek by to nazwał) i właśnie o to mi chodzi. Jeżeli program jest napisany liniowo, to czy tak utworzone timery ich czasy są<br />prawidłowo ustawione (wpisane w programie, np timerX=100;). Może się ktoś śmiać, że tak rozkładam takie rzeczy na czynniki pierwsze, tak drobiazgowo, ale<br />mi naprawdę zależy na zrozumieniu tematu. Tu jest tylko miganie napisami, a jak będą jakieś szybkie instrukcje w kilku przerwaniach i źle to zrobię, to pozamiatane  <img src="https://forum.atnel.pl/images/smilies/icon_cry.gif" alt=":cry:" title="Płacze" /> . Można to jeszcze powtórzyć z kilkoma diodami i mruganiem co sekundę, czy nawet dwie i wtedy widać dokładnie co się dzieje. Mi się wydaje, że przy liniowym programowaniu może się wykonać tylko jedno zadanie i jeśli wykonuje się w danym momencie obsługa przerwania i kod związany z<br />tą obsługą, to nie może w tym samym czasie wykonywać się obsługa drugiego przerwania, no chyba, ze nie mam racji, albo pomimo, że są wpisane takie same liczby, to ten czas tak na prawdę jest różny z perspektywy procesora, bo oczy mogą kłamać. A żeby dalej nie zamęczać tym tematem proszę o konkretną<br />odpowiedź kolegów, którzy znają tą materię. Z góry dzięki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 24 sty 2018, o 18:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-24T12:08:52+01:00</updated>
<published>2018-01-24T12:08:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202582#p202582</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202582#p202582"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202582#p202582"><![CDATA[
Dzięki robespierre.<br />Co do czcionki, to zmieniłem na bodajże Lucida Console w Winie. Jeszcze popróbuję inne w wolnej chwili. To, co napisałeś o timerach<br />muszę sobie przetrawić i może jeszcze gdzieś doczytać. Może jeszcze ktoś się wypowie. Jeśli chodzi o ścisłość, to czy jeśli kod<br />jest napisany  tak, jak zamieściłem (pomijam już sam fakt, czy to jest uint8_t timer1; czy też uint16_t timer1;), to czy jest prawidłowo<br />z punktu widzenia logiki. Pytam, ponieważ na tym etapie mojej skromnej wiedzy nie mam pewności. <br />Ponad to używam innego sposobu z użyciem timerów z <span style="color: #0040FF">BB</span> i <span style="color: #00FF40">GB</span>, gdzie-tak mi się wydaje<br />mam większą możliwość wpływania na wykonujący się program, to znaczy, kiedy, w którym momencie, czy po jakim czasie ma się<br />wykonać kolejne przerwanie, cz instrukcja w przerwaniu. Chociażby taki przykład:<br /><br />[syntax=c]if(ls1 != s1_cnt)<br />{// pierwszy wariant<br />if(0==(s1_cnt % 2))// np. ROZKAZ_POMIARU_DO_DS18B20pierwsza-zerowa sekunda wysyłamy rozkaz pomiaru do czujnika<br />if(1==(s1_cnt % 2))// np. ROZKAZ_POMIARU_Z_DS18B20druga sekunda wysyłamy rozkaz odczytu do czujnika<br /><br />ls1 = s1_cnt;<br /><br />}[/syntax]<br /><br />Czy inny przykład:<br /><br />[syntax=c]// drugi timer programowy co 1s<br />if(ls1 != s1_cnt)<br />{<br />// instrukcja<br />if(!(s1_cnt % 3))<br />{<br />// instrukcja...wykonuje się co 3s, przy czym zawsze w trakcie pierwszej z 3 sekund<br />ls1 = s1_cnt;<br />}<br />}[/syntax]<br /><br />W poprzednim przykładzie mogłem tylko zmienić wartość np. timer1 = 100; na inną wartość, a tutaj możliwości jest więcej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 24 sty 2018, o 12:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-24T10:15:41+01:00</updated>
<published>2018-01-24T10:15:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202576#p202576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202576#p202576"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202576#p202576"><![CDATA[
Dziękuję koledze.<br />Widzę, że jednak muszę zmienić te czcionki. Pytałem, co jest nie tak, ponieważ to był pierwszy taki przypadek. Gdyby kolega mógł<br />podpowiedzieć, jak i gdzie te czcionki zmienić w małym skrócie, ponieważ na co dzień tego nie robię.<br />No i jakby ktoś odniósł się do mojego pytania odnoście kodu zamieszczonego, to będę wdzięczny.<br /><br />Ps.<br />Czy chodzi o zmianę czcionki w Windows konkretnie ?. Poszukam w google.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 24 sty 2018, o 10:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-01-24T10:04:03+01:00</updated>
<published>2018-01-24T10:04:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202575#p202575</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202575#p202575"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202575#p202575"><![CDATA[
<div class="quotetitle">robespierre napisał(a):</div><div class="quotecontent"><br />Taki mały &quot;pro-tips&quot;. Ustaw czcionkę która nadaje się do pracy z kodem. Sprawdź w której widać różnicę między: el a jeden, przecinkiem i kropką, zero i Oooo. Ja z wolnych czcionek polecam Inconsolata . W MS Win. jest Lucida Console. Ew. Monaco.. zesztą sam dopasujesz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /></div><br />Qurczę a ja ostatnio piszę kod - mam sporo zmiennych typu a1, n1 itp ... w Delphi i się wkurzam bo ciągle wygląda to jak al nl itp <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i tak zapomniałem w ogóle o tym, żeby sobie w końcu czcionkę zmienić ... dobrze, że trafiłem na ten post ... dzięki, zaraz pozmieniam sobie czcionki ... Lucida Console fajnie wygląda pod tym względem. Dzięki!<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />a wracając do wątku to oczywiście, że nie można rozpoczynać nazw zmiennych od cyfr i to są te błędy na górze<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 24 sty 2018, o 10:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-24T09:57:06+01:00</updated>
<published>2018-01-24T09:57:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202573#p202573</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202573#p202573"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202573#p202573"><![CDATA[
Witaj.<br />A co jest nie tak z moją czcionką ?. Ja wszystko widzę prawidłowo i jak do tej pory nikt nic nie zgłaszał.<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 24 sty 2018, o 09:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-24T09:31:58+01:00</updated>
<published>2018-01-24T09:31:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202570#p202570</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202570#p202570"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=202570#p202570"><![CDATA[
Mam pytanie do szanownych kolegów.<br />Czytałem w <span style="color: #0000FF">BB</span> i  <span style="color: #00FF00">GB</span> odnośnie timerów. Pan Mirek ładnie to wszystko opisał i omawiał<br />sposób postrzegania czasu, co to jest czas, jak rozumieć w tym samym czasie itd. Niby wszystko jest zrozumiałe, ale chciałem<br />doprecyzować, czy taki kod jest prawidłowy. Wiadomo, że każdy kolejny if jest, jakby po czasie poprzedniego, ale operacje na <br />mikro kontrolerze odbywają się tak szybko i nie wiem, czy w każdym ifie nie powinienem zastosować innej wartości czasowej,<br />ponieważ, program może działać źle. Zdaję sobie sprawę, że moje pytanie jest związane z niepełnym, jak na razie zrozumieniem<br />zagadnienia, dla tego dopytuję. Robiłem do ćwiczeń proste programiki z użyciem timerów, ale do końca nie wiem, czy dobrze to<br />robię.<br /><br />Oto przykładowy kod:<br /><br />[syntax=c]while(1)<br />{<br /> if( !Timer1 )<br /> {<br /> Timer1=100;<br /> // instrukcje<br /> }<br /><br /> if( !Timer2 )<br /> {<br /> Timer2=100;<br /> // instrukcje<br /> }<br /><br /> if( !Timer3 )<br /> {<br /> Timer3=100;<br /> // instrukcje<br /> }<br /><br /> if( !Timer4 )<br /> {<br /> Timer4=100;<br /> // instrukcje<br /> }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 24 sty 2018, o 09:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-11T08:39:57+01:00</updated>
<published>2018-01-11T08:39:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=201820#p201820</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=201820#p201820"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=201820#p201820"><![CDATA[
Dziękuję koledze za odpowiedź.<br />Widzę teraz, jakiego babola popełniłem tym pytaniem. Fakt, że wzrok mam już nie najlepszy i używam okularów. Teraz widzę, że to<br />małe l z klawiatury, a nie cyfra 1. No ale temat się przyda, ponieważ pewnie będę miał jeszcze jakieś zapytania, co do przerwań.<br />Dzięki i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 11 sty 2018, o 08:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-01-11T08:20:32+01:00</updated>
<published>2018-01-11T08:20:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=201819#p201819</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=201819#p201819"/>
<title type="html"><![CDATA[Re: Przerwania Atmega16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19961&amp;p=201819#p201819"><![CDATA[
Standard języka C nie pozwala na używanie zmiennych zaczynających się od cyfr<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 11 sty 2018, o 08:20</p><hr />
]]></content>
</entry>
</feed>