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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-02-03T10:27:58+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1217&amp;mode</id>
<entry>
<author><name><![CDATA[Robson]]></name></author>
<updated>2017-02-03T10:27:58+01:00</updated>
<published>2017-02-03T10:27:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181504#p181504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181504#p181504"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181504#p181504"><![CDATA[
Tak, potwierdzam.<br />Sposób @SylwkaK jest ciekawym rozwiązaniem i sam z niego skorzystałem w moim projekciku, jak również kolegi @Malutki_27.<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6641">Robson</a> — 3 lut 2017, o 10:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-02-02T15:36:42+01:00</updated>
<published>2017-02-02T15:36:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181434#p181434</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181434#p181434"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181434#p181434"><![CDATA[
Żebyś nie szukał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/viewtopic.php?p=108922#p108922" >viewtopic.php?p=108922#p108922</a><!-- l --><br /><br />W każdym razie twój opis na pewno bardzo ułatwi sprawę początkującym.<br />Prawa jest jedna - ilu programistów tyle rozwiązań <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />W każdym razie u mnie zobaczysz jak jeszcze można pewne rzeczy uprościć <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=1922">SylwekK</a> — 2 lut 2017, o 15:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2017-02-02T14:42:49+01:00</updated>
<published>2017-02-02T14:42:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181426#p181426</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181426#p181426"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181426#p181426"><![CDATA[
@Sylewkk Ostatnio niestety, ale nie bardzo mam czas zaglądać na forum, dlatego nie śledzę na bieżąco wątków <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Ale poszperam to zobaczę <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=225">Malutki_27</a> — 2 lut 2017, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-01-31T18:47:39+01:00</updated>
<published>2017-01-31T18:47:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181346#p181346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181346#p181346"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181346#p181346"><![CDATA[
@Malutki_27, a moją wersję podobnego programu prezentowanego tu gdzieś na forum widziałeś <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=1922">SylwekK</a> — 31 sty 2017, o 18:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robson]]></name></author>
<updated>2017-01-31T16:42:33+01:00</updated>
<published>2017-01-31T16:42:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181335#p181335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181335#p181335"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181335#p181335"><![CDATA[
Dzięki wielkie.<br />Miałeś rację. Po zastosowaniu Twojej podpowiedzi programik działa zgodnie z założeniem. Nie mogę przyznać punktu za pomoc, bo nie widzę takiej opcji, ale mam<br />nadzieję, że jeszcze się spotkamy na forum i będzie taka możliwość.<br />Jeszcze raz dziękuję i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6641">Robson</a> — 31 sty 2017, o 16:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2017-01-31T14:00:00+01:00</updated>
<published>2017-01-31T14:00:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181331#p181331</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181331#p181331"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181331#p181331"><![CDATA[
Nie bardzo .... Jeżeli chcesz żeby wskaźnik reagował tylko w zakresie 0 - 850 wystarczy podzielić 850/16 co daje w przybliżeniu 53 i tą wartość wpisać zamiast 31<br /><br />czyli <br /><br />[syntax=c]if (wynik&gt;850)<br />       wynik = 850;<br />for (uint16_t i=wynik;i&gt;53;i-=53){<br />                        lcd_str(&quot;\x86&quot;);<br />                        wynik-=53;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 31 sty 2017, o 14:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robson]]></name></author>
<updated>2017-01-31T13:54:25+01:00</updated>
<published>2017-01-31T13:54:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181330#p181330</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181330#p181330"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181330#p181330"><![CDATA[
Dziękuję jeszcze raz.<br />Co do pewnego ograniczenia paska w stosunku do adc, to pomyślałem o czymś takim. Czy idę w dobrą stronę ?<br /><br />[syntax=c]for (uint16_t i=wynik;i&gt;31 &amp;&amp; &lt; 850;i-=31)[/syntax]<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6641">Robson</a> — 31 sty 2017, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2017-01-31T12:50:32+01:00</updated>
<published>2017-01-31T12:50:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181324#p181324</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181324#p181324"/>
<title type="html"><![CDATA[Re: Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=181324#p181324"><![CDATA[
@Robson - Pozwolę sobie wkleić fragment twojej wiadomości<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />... ale chciałem prosić o wyjaśnienie z jakiego rezonatora korzystałeś i czy mógłbyś wyjaśnić dokładnie<br />w komentarzach, co dokładnie oznaczają te linijki. Pytanie może bardzo banalne, ale ja stawiam pierwsze <br />kroki w C, a chciałbym zrozumieć zapis i w ogóle program.<br />[syntax=c]for (uint16_t i=wynik;i&gt;31;i-=31){<br />                        lcd_str(&quot;\x86&quot;);<br />                        wynik-=31;[/syntax]<br /><br /><br />Mirek wspomniał,że można to zrobić podobnie, ale bez przerwania. Czy jest to możliwe i jak to rozwiązać praktycznie. Gdybyś mógł mnie naprowadzić. Będę bardzo wdzięczny za wszelką pomoc.<br /><br />Dziękuję i pozdrawiam.<br /><br />@Robson.<br /></div><br /><br />Rezonator nie ma tu większego znaczenia, zawsze możesz dobrać przerwanie tak aby przerwanie było wywoływane co 10ms dla dowolnego rezonatora.<br /><br />A fragment kodu o który pytasz ma za zadanie zapalić odpowiednią ilość pól w zależności od pobranego wyniku pomiaru z ADC.<br /><br />Czyli, jeżeli Nasza maksymalna wartość pomiaru wynosi 512, to aby zapalić kolejny kwadrat (a mamy ich 16 w jednej linii), wartość musi być równa 32 (bo 512/16=32).<br /><br />Dlatego zakładając że chcemy zapalić x pól dla wartości np 244, pętla robi tak:<br /><br />Czy 244 większe od 31 (aby zapalić kwadrat musi być 32) = Tak<br />zapal kwadrat  <div class="codetitle"><b>Code:</b></div><div class="codecontent">lcd_str(&quot;\x86&quot;);</div><br />to 244 - 32 = 212<br />Czy 212 &gt; 31 = Tak<br />zapal kolejny kwadrat  <div class="codetitle"><b>Code:</b></div><div class="codecontent">lcd_str(&quot;\x86&quot;);</div><br />itd. .... aż zmienna i osiągnie wartość mniejszą niż 32, wtedy pozostała wartość jest brana do polecenia switch w którym decydujesz ile linii w kwadracie powinno być zapalonych.<br /><br />Tak na marginesie w tej pętli jest mały błąd gdyż powinna wyglądać tak:<br />[syntax=c]for (uint16_t i=wynik;i&gt;31;i-=32){<br />                        lcd_str(&quot;\x86&quot;);<br />                        wynik-=32;[/syntax]<br /><br /><br />Mam nadzieję że ci to trochę rozjaśniło sytuację <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=225">Malutki_27</a> — 31 sty 2017, o 12:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-06-30T22:44:33+01:00</updated>
<published>2012-06-30T22:44:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8837#p8837</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8837#p8837"/>
<title type="html"><![CDATA[Re: Wskaźnik]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8837#p8837"><![CDATA[
hehehe - no teraz (ja to jestem jednak wzrokowiec) ... zrozumiałem wszystko co opisałeś, dzięki temu filmikowi. Wcześniej jakoś strasznie mnie zakręcało to określenie wskaźnika - bo (hmm może to zboczenie zawodowe)... myślałem że chodzi ci o jakiś wskaźnik z języka C hyhyhy<br /><br />A tu proszę chodzi o bargraph czyli słupkowy wskaźnik posiomu/wysterowania itp <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Patrząc teraz na tą ostateczną wersję kodu - zrobiłeś to bardzo bardzo fajnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... a biorąc pod uwagę jak to było na początku z setkami IF'ów - to w całości wyszedł fajny jakby tutorial teraz prezentujący bardzo ciekawe podejście - a nie wspomnę już , że z użyciem timera programowego ładnie.<br /><br />No właśnie tylko sam tytuł wątku jest nieco albo dość mocno mylący bo dopiero (jak dla mnie filmik wszystko wyjaśnia pięknie).<br /><br />Generalnie to co opisałeś - to bardzo ale to bardzo dobry poradnik dla początkujących no i super ćwiczenie, które porusza niby w tak prostym temacie użycie kilku zagadnień. I wbrew pozorom (wspominałem wyżej) ciekawostką tu jest użycie przez ciebie timera programowego chociaż można byłby go w ogóle pominąć - ale to pokazuje przepięknie - jak bardzo dla ciebie ten mechanizm stał się hmmm niczym powietrze do oddychania i widać, że to jest proste jak mega drut .... Myślę, że nawet z tego aspektu swojego tutoriala nawet sam sobie sprawy nie zdawałeś bo to jakby tak na uboczu.<br /><br />No ale najważniejszy temat czyli realizacja programowa samego Bargraph'a i to wyjaśniona w takiej kolejności - nie od razu gotowiec, który mógłby być ciężko strawny dla początkującego ale takie pokazanie krok po kroku jak to się rozwija - jest wręcz akcja jak w kryminale <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no SUPER materiał edukacyjny.<br /><br />Dlatego ja cieszę się z dwóch powodów <br /><br />1. Że chciało ci się na naszym forum to przedstawić - dziękuję<br />2. Że tak niesamowicie fajnie startujesz i lecisz z tym C <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> jak burza .... <br /><br />jak się na takie coś patrzy - to aż się chce coś pisać dalej (mówię o książkach) bo tu już namacalnie widać, że pewnie chociaż w jakimś małym ale zawsze stopniu może okazały się te moje wypociny z pierwszej książki przydatne. <br /><br />Nie mówiąc też o tym jak fajnie przedstawiłeś także sposoby wykorzystania prezentowanej w niej biblioteki do LCD<br /><br />to tyle .... a temat przydałoby się przenieść do projektów programistycznych - coby służył jako przykład do poczytania dla potomnych. Tylko ja nie wiem jak - ale może nasz moderator SunRiver pomoże ? <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=54">mirekk36</a> — 30 cze 2012, o 22:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2012-06-30T21:58:18+01:00</updated>
<published>2012-06-30T21:58:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8836#p8836</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8836#p8836"/>
<title type="html"><![CDATA[Re: Wskaźnik]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8836#p8836"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />.... ale pewnie zdajesz sobie dobrze sprawę z tego, że to samo zadanie można wykonać na milion różnych sposobów - tyle ilu jest programistów na świecie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ....<br /></div><br /><br />Oczywiście że zdaję sobie z tego sprawę:) , dlatego napisałem przy pierwszym kodzie że nic nie mam przeciwko takiemu tasiemcowi.<br />Bardziej mi chodziło o pokazanie że do tego samego problemu można podejść na wiele róznych sposobów. Z resztą kod z tamtego tematu jest równie dobry co te które przedstawiłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />, także wcale nie twierdzę że te kody są optymalne, po prostu są krótsze <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />A nie rozpisując się jest to jedynie moja wizja jak można taki wskaźnik wykonać, więc wszelkie uwagi, sugestie, tyrady <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i tym podobne są bardzo mile widziane. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Zresztą przy kręceniu <a href="http://www.youtube.com/watch?v=QVqpn5sMGSE"  class="postlink">filmiku</a> wyłapałem kilka błedów więc od razu naniosłem poprawki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />, niestety na filmie są te starsze wersje .........<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 30 cze 2012, o 21:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-06-30T15:42:05+01:00</updated>
<published>2012-06-30T15:42:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8830#p8830</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8830#p8830"/>
<title type="html"><![CDATA[Re: Wskaźnik]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8830#p8830"><![CDATA[
<div class="quotetitle">Malutki_27 napisał(a):</div><div class="quotecontent"><br />Takie było założenie:), ale się szybko zmieniło bo wskaźnik działał jakoś tak skokowo , wiec postanowiłem pociągnąć temat troszkę &quot;dalej&quot; ......<br />Wieczorkiem postaram się dodać jakieś poglądowe filmiki:)<br /></div><br /><br />No widzisz to zdecydowanie ułatwiłoby analizę tego co opisujesz ponieważ nie każdy odtworzy sprzętowo taki układ. A jak pokażesz filmiki i do końca załapię ideę - to może jeszcze coś podpowiem - bo jak patrzę na to to chodzi mi coś po głowie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... nie mówię, że masz źle ale pewnie zdajesz sobie dobrze sprawę z tego, że to samo zadanie można wykonać na milion różnych sposobów - tyle ilu jest programistów na świecie <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=54">mirekk36</a> — 30 cze 2012, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2012-06-30T15:28:34+01:00</updated>
<published>2012-06-30T15:28:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8829#p8829</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8829#p8829"/>
<title type="html"><![CDATA[Re: Wskaźnik]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8829#p8829"><![CDATA[
Takie było założenie:), ale się szybko zmieniło bo wskaźnik działał jakoś tak skokowo , wiec postanowiłem pociągnąć temat troszkę &quot;dalej&quot; ......<br />Wieczorkiem postaram się dodać jakieś poglądowe filmiki:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 30 cze 2012, o 15:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-06-30T14:53:18+01:00</updated>
<published>2012-06-30T14:53:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8828#p8828</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8828#p8828"/>
<title type="html"><![CDATA[Re: Wskaźnik]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8828#p8828"><![CDATA[
<div class="quotetitle">Malutki_27 napisał(a):</div><div class="quotecontent"><br />Już całkowicie przeredagowałem, i solennie obiecuje że na razie odstawię niebieski pigułki bo są chyba za mocne <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />To nie sięgaj od razu po największe dawki - żeby nie przedawkować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />A na poważnie to teraz troszkę mi się rozjaśniło i widzę tak ogólnie do czego dążysz - skrócenia programu z tymi IF'ami jak dobrze myślę ???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 cze 2012, o 14:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2012-06-30T14:24:11+01:00</updated>
<published>2012-06-30T14:24:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8827#p8827</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8827#p8827"/>
<title type="html"><![CDATA[Re: Wskaźnik]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8827#p8827"><![CDATA[
Już całkowicie przeredagowałem, i solennie obiecuje że na razie odstawię niebieski pigułki bo są chyba za mocne <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=225">Malutki_27</a> — 30 cze 2012, o 14:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-06-30T07:53:27+01:00</updated>
<published>2012-06-30T07:53:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8811#p8811</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8811#p8811"/>
<title type="html"><![CDATA[Re: Wskaźnik]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8811#p8811"><![CDATA[
Zakręciłem się trochę w tym wszystkim i nie rozumiem do końca opisu ... ale uważaj robisz jeden błąd o którym pisałem już na tym forum:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />ADMUX <span style="color: #FF0000"><strong>|=</strong></span> (ADMUX &amp; 0xF8) | kanal;<br /></div><br /><br />Przy pomiarze z jednego kanału będzie to działać dobrze ale jak będziesz chciał sprawdzać i przełączać się pomiędzy kanałami to zacznie się ZONK <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> .... dlatego popraw tą linijkę tak:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />ADMUX <strong><span style="color: #008000">=</span></strong> (ADMUX &amp; 0xF8) | kanal;<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 cze 2012, o 07:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2012-07-01T21:19:28+01:00</updated>
<published>2012-06-30T00:54:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8806#p8806</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8806#p8806"/>
<title type="html"><![CDATA[Słupkowy wskaźnik poziomu lub wysterowania &quot;bargraph&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1217&amp;p=8806#p8806"><![CDATA[
Mirku spokojnie nic nie trzeba będzie tłumaczyć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, to nie chodzi o ten wskaźnik z * <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Ostatnio przeglądając forum trafiłem na temat w którym jeden z naszych kolegów napisał programik w którym był zrobiony wskaźnik<br />na &quot;naszym nieśmiertelnym&quot; wyświetlaczu 2x16 lub jak kto woli HD44780. Ale wracając do tego programu tak patrzę i patrzę ......<br />i przyszła mi do głowy pewna myśl &quot;chłopie ale ty sobie komplikujesz życie&quot;, a można przecież prościej.<br /><br />Do wszytskich przykładów został użyty zestaw ATB i znana nam biblioteka do wyświetlacza.<br />LCD podpięty jest do portu D, przetwornik natomiast podpięty jest pod PA0 i mierzy napięcie w zakresie 0-5V z dokładnością 9 bitów, czyli wartości przekazywane z przetwornika będą w zakresie od 0 do 511 nazwijmy je &quot;jednostkami&quot;<br /><br /><br />Przykład takiego programu :<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 29-06-2012<br /> *      Author: Malutki_27<br /> *      forum.atnel.pl<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br /><br />volatile uint8_t cnt_10ms;//Timer programowy zliczający do 1 sekundy<br />uint16_t wynik;<br />uint8_t piec[] =  {31,31,31,31,31,31,31,31};// Definicja fontu &quot;zamalowany kwadracik&quot;<br /><br />uint16_t pomiar(uint8_t kanal);<br />void adc_init(void);<br />void timer_init(void);<br /><br />int main (void){<br />DDRD|=(1&lt;&lt;PD7);<br />PORTD |=(1&lt;&lt;PD7);<br />adc_init();<br />lcd_init();<br />timer_init();<br />sei();<br />lcd_defchar(0x86, piec);<br />while(1){<br />if(cnt_10ms%20 == 0){// użycie Timera co 100ms<br />wynik=pomiar(0);<br />lcd_cls();<br />if (wynik&gt;0 &amp;&amp; wynik&lt;33){<br />lcd_locate(0,0);<br />lcd_str(&quot;\x86&quot;);<br />}<br />if (wynik&gt;32 &amp;&amp; wynik&lt;65) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;2;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;64 &amp;&amp; wynik&lt;97) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;3;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;96 &amp;&amp; wynik&lt;129) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;4;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;128 &amp;&amp; wynik&lt;161) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;5;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;160 &amp;&amp; wynik&lt;193) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;6;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;192 &amp;&amp; wynik&lt;225) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;7;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;224 &amp;&amp; wynik&lt;257) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;8;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;256 &amp;&amp; wynik&lt;289) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;9;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;288 &amp;&amp; wynik&lt;321) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;10;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;320 &amp;&amp; wynik&lt;353) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;11;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;352 &amp;&amp; wynik&lt;385) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;12;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;384 &amp;&amp; wynik&lt;417) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;13;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;416 &amp;&amp; wynik&lt;449) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;14;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;448 &amp;&amp; wynik&lt;481) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;15;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />if (wynik&gt;480) {<br />lcd_locate(0,0);<br />for( uint8_t i=0;i&lt;16;i++){<br />lcd_str(&quot;\x86&quot;);<br />}<br />}<br />lcd_locate(1,13);<br />lcd_int(wynik);<br />}<br />}<br />}<br /><br />void adc_init(void){<br />ADMUX|= (1&lt;&lt;REFS0);<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1);<br /><br />}<br />void timer_init(void){<br />TCCR0 |=(1&lt;&lt;WGM01);<br />TCCR0 |=(1&lt;&lt;CS02)|(1&lt;&lt;CS02);<br />OCR0=108;<br />TIMSK|=(1&lt;&lt;OCIE0);<br />}<br />uint16_t pomiar(uint8_t kanal){<br />ADMUX =(ADMUX &amp; 0xF8) | kanal;<br />ADCSRA|=(1&lt;&lt;ADSC);<br />while((ADCSRA &amp; (1&lt;&lt;ADSC)));<br />return ADCW;<br />}<br />ISR(TIMER0_COMP_vect){<br />if (cnt_10ms&gt;100) cnt_10ms = 0;<br />else cnt_10ms++;<br />}<br />[/syntax]<br /><br />Osobiście nie mam nic przeciwko takiej wersji wykonania wskaźnika na wyświetlaczu, bo przecież działa,a to jest najważniejsze <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tylko tak jakoś nie wyraźnie mi się zrobiło bo tak dużo pisania do tak prostego efektu , hmmmm......<br />Postanowiłem więc pokazać wam że można prościej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Na początek troszkę matematyki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Jak wszyscy wiemy wyświetlacz ten składa się z dwóch linii ( my zajmiemy się jedną ), każda linia składa się z 16 znaków, natomiast każdy znak składa się z 5-ciu pionowych linii. Te informacje okażą się dosyć ważne przy późniejszych wersjach naszego wskaźnika.<br /><br />Na początek zabierzmy się za przeróbkę pierwszej wersji kodu.<br />Żeby opracować taki wskaźnik musimy się dowiedzieć przy jakich wartościach ADC powinien zapalać się kolejny segment naszego wyświetlacza, dlatego dzielimy wartość maksymalną ADC przez ilośc segmentów.<br />512/16=32<br />Z tego wynika że każdy segment wyświetlacza powienien zapalać się po przekroczeniu kolejnych 32 jednostek z naszego ADC<br />Ja do wykonania tej czynności użłem pętli for i małej pseudo sztuczki. Sztuczka polega na tym że nie będę inicjalizował zmiennej dla pętli for wartością stałą,a zmienną w której mamy wartość pomiaru z ADC. Dlatego napisałem że to pseudo sztuczka ponieważ nie wiele osób wie lub zdaje sobie sprawę że też tak można.<br /><br />Nie przedłużając przedstawiam kod programu który robi to samo ale jest o niebo krótszy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 29-06-2012<br /> *      Author: Malutki_27<br /> *      forum.atnel.pl<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br /><br />volatile uint8_t cnt_10ms;<br />uint16_t wynik;<br />uint8_t piec[] =  {31,31,31,31,31,31,31,31};// 5<br /><br />uint16_t pomiar(uint8_t kanal);<br />void adc_init(void);<br />void timer_init(void);<br /><br />int main (void){<br />DDRD|=(1&lt;&lt;PD7);<br />PORTD |=(1&lt;&lt;PD7);<br />adc_init();<br />lcd_init();<br />timer_init();<br />sei();<br />lcd_defchar(0x86, piec);<br />while(1){<br />if(cnt_10ms%20 == 0){<br />wynik=pomiar(0);<br /><br />lcd_cls();<br />lcd_locate(0,0);<br />for (uint16_t i=wynik;i&gt;31;i-=31){<br />lcd_str(&quot;\x86&quot;);<br />}<br />lcd_locate(1,13);<br />lcd_int(wynik);<br />}<br />}<br />}<br /><br />void adc_init(void){<br />ADMUX|= (1&lt;&lt;REFS0);<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1);<br /><br />}<br />void timer_init(void){<br />TCCR0 |=(1&lt;&lt;WGM01);<br />TCCR0 |=(1&lt;&lt;CS02)|(1&lt;&lt;CS02);<br />OCR0=108;<br />TIMSK|=(1&lt;&lt;OCIE0);<br />}<br />uint16_t pomiar(uint8_t kanal){<br />ADMUX =(ADMUX &amp; 0xF8) | kanal;<br />ADCSRA|=(1&lt;&lt;ADSC);<br />while((ADCSRA &amp; (1&lt;&lt;ADSC)));<br />return ADCW;<br />}<br />ISR(TIMER0_COMP_vect){<br />if (cnt_10ms&gt;100) cnt_10ms = 0;<br />else cnt_10ms++;<br />}<br />[/syntax]<br /><br />No dobrze, wszytsko działa, tylko ale jak się dokładniej przyjrzymy to przecież taki wskaźnik ma bardzo dużą tolerancję.<br />Więc sprawdźmy to jak się sprawa ma przy 5 V, w ziązku stym musimy obliczyć jakie napięcie przypada nam na jedną jednostkę ADC ponieważ ta wartość będzie nam potrzebna do obliczenia co jaką wartość będzie nam się zapalał kolejny segment i równocześnie będzie to nasz rozdzielczość wskaźnika ( tolerancja)<br />5V /512=0,009765625V        &lt;--- obliczenie napięcia przypadającego dla jednej jednostki z ADC<br />0,009765625V*32=0,3125V  &lt;--- obliczenie napięcia dla całego segmentu<br /><br />Okazuje się że każdy następny segment wyświetlacza będzie się zapalał przy zwiększaniu się napięcia o 0,3125V.<br />Niby nie wiele, ale jak troszkę policzymy to się nagle okazuje że to jest aż 6,25% z naszych pięciu volt, jak dla mnie to już jest dużo.<br />Dlatego zacząłem się zastanawiać jak zmniejszyć błąd naszego wskaźnika, i w końcu znalazłem .............<br />Przecież wskaźnik nie składa się tylko z 16 segmentów, ale także z pięciu pionowych linii w każdym z segmentów, a to już daje nam aż 80 pionowych linii które możemy wykorzystać w celu zwiększenia precyzji wskaźnika.<br />Co by nam dało błąd o wartości 5V/80=0,0625V czyli jakieś 1,25%, według mnie to już naprawdę nie jest źle biorąc pod uwagę na jakim wyświetlaczu pracujemy.<br /><br />Taaak...., tylko jak się za to zabrać .........<br />Otóż nic trudnego <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />, sami wiecie Kto, nie będę wymawiał Jego imienia głośno <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nauczył nas jak wgrać dodatkowe fonty do tego LCD.<br />W związku z tym musimy opracować pięć dodatkowych fontów które będą nam zapełniać 1,2,3,4 lub 5 linii określonego segmentu i zostaną załadowane do pamięci CGRAM wyświetlacza<br /><br />Pozostaje nam jeszcze przeliczenie jaka wartość z naszego ADC przypada na jedną linię z tych 80.<br />512/80=6,4<br />I mały klops, wyszła wartość z miejscami po przecinku, ale to nie jest nic aż tak strasznego poniewąz częściowo ominiemy tą niedogodność poprzez zapalanie całych segmentów zamiast linii dlatego że jeden segment ma przecież wartość 6,4*5=32 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Kolejny przykładzik wskaźnika na podtswie przemyśleń<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 29-06-2012<br /> *      Author: Malutki_27<br /> *      forum.atnel.pl<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />volatile uint8_t cnt_10ms;<br />uint16_t wynik,wynik1;<br />// definicje fontów<br />uint8_t jeden[] = {16,16,16,16,16,16,16,16};// 1<br />uint8_tdwa[] =   {24,24,24,24,24,24,24,24};// 2<br />uint8_t trzy[] =  {28,28,28,28,28,28,28,28};// 3<br />uint8_t cztery[] ={30,30,30,30,30,30,30,30};// 4<br />uint8_t piec[] =  {31,31,31,31,31,31,31,31};// 5<br /><br />uint16_t pomiar(uint8_t kanal);<br />void adc_init(void);<br />void timer_init(void);<br /><br />int main (void){<br />DDRD|=(1&lt;&lt;PD7);<br />PORTD |=(1&lt;&lt;PD7);<br />adc_init();<br />lcd_init();<br />timer_init();<br />sei();<br />lcd_defchar(0x82, jeden);<br />lcd_defchar(0x83, dwa);<br />lcd_defchar(0x84, trzy);<br />lcd_defchar(0x85, cztery);<br />lcd_defchar(0x86, piec);<br />while(1){<br />if(cnt_10ms%20 == 0){<br />wynik=pomiar(0);<br /><br />wynik1=wynik;<br />lcd_cls();<br />lcd_locate(0,0);<br />for (uint16_t i=wynik;i&gt;31;i-=31){<br />lcd_str(&quot;\x86&quot;);<br />wynik-=31;<br />}<br />switch(wynik/7){<br />case 1: lcd_str(&quot;\x82&quot;); break;<br />case 2: lcd_str(&quot;\x83&quot;); break;<br />case 3: lcd_str(&quot;\x84&quot;); break;<br />case 4: lcd_str(&quot;\x85&quot;); break;<br />}<br />lcd_locate(1,13);<br />lcd_int(wynik1);<br />}<br />}<br />}<br /><br />void adc_init(void){<br />ADMUX|= (1&lt;&lt;REFS0);<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1);<br /><br />}<br />void timer_init(void){<br />TCCR0 |=(1&lt;&lt;WGM01);<br />TCCR0 |=(1&lt;&lt;CS02)|(1&lt;&lt;CS02);<br />OCR0=108;<br />TIMSK|=(1&lt;&lt;OCIE0);<br />}<br />uint16_t pomiar(uint8_t kanal){<br />ADMUX =(ADMUX &amp; 0xF8) | kanal;<br />ADCSRA|=(1&lt;&lt;ADSC);<br />while((ADCSRA &amp; (1&lt;&lt;ADSC)));<br />return ADCW;<br />}<br />ISR(TIMER0_COMP_vect){<br />if (cnt_10ms&gt;100) cnt_10ms = 0;<br />else cnt_10ms++;<br />}<br />[/syntax]<br /><br />Dodatko zamieszczam lekko zmodyfikowany kod, który pozwala na wskaźniku obserwować zmiany wartośći w zakresie 4-5V i którego nie będę już opisywał ponieważ rózni się od poprzedniego jedynie dodatkowym warunkiem IF.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 29-06-2012<br /> *      Author: Malutki_27<br /> *      forum.atnel.pl<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />volatile uint8_t cnt_10ms;<br />uint16_t wynik,wynik1;<br />uint8_t jeden[] = {16,16,16,16,16,16,16,16};// 1<br />uint8_tdwa[] =   {24,24,24,24,24,24,24,24};// 2<br />uint8_t trzy[] =  {28,28,28,28,28,28,28,28};// 3<br />uint8_t cztery[] ={30,30,30,30,30,30,30,30};// 4<br />uint8_t piec[] =  {31,31,31,31,31,31,31,31};// 5<br /><br />uint16_t pomiar(uint8_t kanal);<br />void adc_init(void);<br />void timer_init(void);<br /><br />int main (void){<br />DDRD|=(1&lt;&lt;PD7);<br />PORTD |=(1&lt;&lt;PD7);<br />adc_init();<br />lcd_init();<br />timer_init();<br />sei();<br />lcd_defchar(0x82, jeden);<br />lcd_defchar(0x83, dwa);<br />lcd_defchar(0x84, trzy);<br />lcd_defchar(0x85, cztery);<br />lcd_defchar(0x86, piec);<br />while(1){<br />if(cnt_10ms%20 == 0){<br />wynik=pomiar(0);<br />wynik1=wynik;<br />lcd_cls();<br />lcd_locate(0,0);<br />if (wynik&gt;409){<br />wynik-=409;<br />wynik*=10;<br />for (uint16_t i=wynik;i&gt;64;i-=64){<br />lcd_str(&quot;\x86&quot;);<br />wynik-=64;<br />}<br />switch(wynik/13){<br />case 1: lcd_str(&quot;\x82&quot;); break;<br />case 2: lcd_str(&quot;\x83&quot;); break;<br />case 3: lcd_str(&quot;\x84&quot;); break;<br />case 4: lcd_str(&quot;\x85&quot;); break;<br />}<br />}<br />lcd_locate(1,0);<br />lcd_int(wynik1);<br />}<br />}<br />}<br /><br />void adc_init(void){<br />ADMUX|= (1&lt;&lt;REFS0);<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1);<br /><br />}<br />void timer_init(void){<br />TCCR0 |=(1&lt;&lt;WGM01);<br />TCCR0 |=(1&lt;&lt;CS02)|(1&lt;&lt;CS02);<br />OCR0=108;<br />TIMSK|=(1&lt;&lt;OCIE0);<br />}<br />uint16_t pomiar(uint8_t kanal){<br />ADMUX =(ADMUX &amp; 0xF8) | kanal;<br />ADCSRA|=(1&lt;&lt;ADSC);<br />while((ADCSRA &amp; (1&lt;&lt;ADSC)));<br />return ADCW;<br />}<br />ISR(TIMER0_COMP_vect){<br />if (cnt_10ms&gt;100) cnt_10ms = 0;<br />else cnt_10ms++;<br />}<br /><br />[/syntax]<br /><br />Mam nadzieję że się komuś przydadzą te moje wywody <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Dla tych co nie mają ochoty sprawdzić łopatologicznie tych kodów załączam <a href="http://www.youtube.com/watch?v=QVqpn5sMGSE"  class="postlink">filmik</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 30 cze 2012, o 00:54</p><hr />
]]></content>
</entry>
</feed>