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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-12-13T13:46:59+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=16978&amp;mode</id>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-13T13:46:59+01:00</updated>
<published>2016-12-13T13:46:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177371#p177371</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177371#p177371"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177371#p177371"><![CDATA[
Mam jeszcze takie pytanie do Szanownych Kolegów, czy można badać/mierzyć napięcie na wyjściu z PWM w celu jego stabilizacji w zależności od zmiennego obciążenia tego wyjścia po filtrze RC. Coś na zasadzie stabilizacji napięcia <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> .<br />Założenie moje jest takie, aby do wejścia ADC0 podać napięcie z potencjometru w zakresie od 0V do 1V a na wyjściu PWM (256) uzyskujemy napięcie po filtrze RC odpowiednio od 0V do 5V, czyli proporcjonalne do przekręcenia potencjometru. Obciążenie na wyjściu z PWM będzie zmienne związku z tym wartość napięcia na wyjściu będzie się zmieniać. Aby temu zapobiec do wejścia ADC1 przez odpowiedni dzielnik napięcia podałbym napięcie z wyjścia PWM a zmierzone napięcie na ADC1 porównał z napięciem (wartością) ADC0 i dzięki zastosowaniu warunku <strong> if (ADC1 &lt;ADC0) OCRx ++;</strong><br />                                                                                                                  <strong>else OCRx --;</strong>  // uzyskałbym stabilizacje napięcia, oczywiście stabilizacja ta dotyczyłaby napięć niższych od 5V na wyjściu.<br />Czy moja teoria jest słuszna i możliwa do zastosowania w praktyce <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br />Czy jest jeszcze jakiś inny sposób programowy, aby osiągnąć ten sam cel <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 13 gru 2016, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-12T16:25:25+01:00</updated>
<published>2016-12-12T16:25:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177239#p177239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177239#p177239"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177239#p177239"><![CDATA[
Aa…..a! Złapałem wreszcie byka za rogi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . A mówiąc szczerze, to znalazłem rozwiązanie mojego problemu, długo szperając w necie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> . Nie przypuszczałem, że to takie proste.<br />Aby kompilator poprawnie wykonywał działania matematyczne, mnożenie, dzielenie itp. na liczbach całkowitych ze znakiem i bez, większych od typu <strong>int</strong>, w tym konkretnym przykładzie, o który pytałem wcześniej, czyli: <strong>OCR1A = 160  +  ADC*100/335;</strong> to jest oczywiście błędna składnia a mimo to kompilator nie wywala błędów, ale jego wyliczenia są błędne. Mimo wielu prób nie udało mi się prawidłowo przypisać zmiennej o wyższej wartości (np. <strong>long</strong>).<br />A prawidłowa składnia powinna być zapisana w ten sposób:<br /> <strong>OCR1A = 160 + ADC*100L/335;</strong> lub<br /> <strong>OCR1A = 160 + ADC*100UL/335;</strong> lub<br /> <strong>OCR1A = 160 + ADC*(long)100/335;</strong> itd. To się nazywa jawnym rzutowaniem, chyba <img src="https://forum.atnel.pl/images/smilies/icon_exclaim.gif" alt=":!:" title="Wykrzyknik" /> <br />Znowu uczyniłem jakiś malutki kroczek do przodu <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 12 gru 2016, o 16:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-11T18:23:35+01:00</updated>
<published>2016-12-11T18:23:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177150#p177150</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177150#p177150"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177150#p177150"><![CDATA[
Mimo usilnych prób zdefiniowania zmiennej typu „<strong>uint32_t</strong>” o nazwie „pomiar” ustawiając ją, jako zmienna lokalna, czyli po głównej funkcji programu int main, lub w nawiasach klamrowych w pętli <strong>for(;;)</strong> , lub przed tą funkcją, jako zmienna globalna.  Kompilator nadal błędnie wykonuje zadanie matematyczne typu <strong>ADC*100/330;. </strong>Bez przypisywania tego typu zmiennej kompilator dobrze wykonuje takie obliczenie np. <strong>ADC*10/33;</strong> lub <strong>ADC/3.30;</strong><br />Wniosek z tego z tego taki, że źle definiuję zmienną typu <strong>uni32_t</strong>  pomiar. <img src="https://forum.atnel.pl/images/smilies/icon_cry.gif" alt=":cry:" title="Płacze" /> <br />Mógłbym liczyć na Waszą pomoc, jak prawidłowo zdefiniować/przypisać zmienną innego typu, reprezentującą liczbę typu całkowitego bez znaku o wyższej wartości, tak, aby kompilator bez problemu dokonał wyliczenia w takiej formie <strong>ADC*100/330;</strong> w kodzie, który znajduje się na początku tego wątku. <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><br />Co prawda, na obecnym etapie mojej wiedzy dzięki pomocy Kol.<strong> kicajek</strong> oraz <strong>sq8dsr</strong> mogę to obliczyć w inny sposób, który już podałem np. taką metodą aby nie przekroczyć max wartości liczby 65535 2-bajty. Oto przykład: <strong>OCR1A = 160 + ADC*62/199; = 479</strong> ale można też tak  <strong>OCR1A = 160 + ADC/3.21;     =  479</strong>  Czyli pełny zakres obrotowy potencjometru mieści się w zakresie 160 do 479 punktów dyskretnych PWM przy jego rozdzielczości <strong>1024</strong> a to z kolei przy napięciu odniesienia 5V daje nam napięcie w zakresie 0,78V do 2,3V.<br /><br /> Ale w dalszym ciągu nie wiem jak  zmusić kompilator do działania na liczbach o większych wartościach 4-bajtowych z większą dokładnością.<br /><br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 11 gru 2016, o 18:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-12-09T22:54:33+01:00</updated>
<published>2016-12-09T22:54:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177004#p177004</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177004#p177004"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177004#p177004"><![CDATA[
Witam<br />Nie bardzo łapię, ale chociaż to:<br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />bo w tym programie w nagłówku nie ma zadeklarowanego innego typu zmiennej,<br /></div><br />Musisz sobie taką zmienną powołać (uint32_t pomiar; ), a później przypisać ją do OCR1x - te skoki wartości biorą się  stąd że OCR1 jest 16bit a ty na samym początku mnożąc ADC przez 100 ( np.: ADC =700 i to *100 ) daje 70.000 i już jesteś poza 16bit. tzn. dalej w 16bit tylko już raz &quot;przekręconym&quot;.<br />[syntax=c]pomiar = (ADC*100)/335;<br />OCR1x = pomiar; // chyba :)[/syntax]<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 9 gru 2016, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-09T22:07:35+01:00</updated>
<published>2016-12-09T22:07:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177000#p177000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177000#p177000"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=177000#p177000"><![CDATA[
Nie, nie bawiłem się jeszcze transmisją danych przez łącze szeregowe RS232. To zostawiam sobie na później, wcześniej muszę nabyć jeszcze moduł BT do obsługi tego połączenia.<br />Wracając do obliczeń, mnożenia i dzielenia, wykonywanych przez program, to dokonywałem jeszcze różnych prób konwersji programu w różnej konfiguracji podstawiania danych. Doszedłem do takich wniosków, że w tym układzie t.j. <strong>OCR1A = 158 + ADC/3.20;</strong> program prawidłowo definiuje wypełnienie pwm a na jego wyjściu napięcie wynosiło odpowiednio ok. 0,8V do 2.16V pisze około bo mam płytkę stykową i napięcia trochę skaczą.<br /> Na każdą nawet najmniejszą zmianę dzielnika np. 3.19 lub 3.21 zmienia się wypełnienie pwm.<br />Przy wstawieniu przecinka zamiast kropki(3,20/3.20)kompilator nie bierze pod uwagę liczb po przecinku cokolwiek tam wpiszemy tylko zaokrągla, czyli w tym przypadku nie uzyskamy precyzyjnego/dowolnego wypełnienia pwm.<br />Gdy użyjemy takiej składni: <strong>OCR1A = 158 + (ADC*10)/32;</strong> to też kompilator przekształcił to prawidłowo i następuje prawidłowe wypełnienie pwm.<br />Natomiast, gdy wstawimy taką kombinację: <strong>OCR1A = (ADC*100)/320;</strong> to wychodzą kompletne bzdury, napięcia z sufitu. Przekręcając potencjometrem od 0 w pełnym jego zakresie napięcie po pwm z poziomu 0,8V zaczyna rosnąć do 1,65V, po czym błyskawicznie spada do 0,8V i znowu zaczyna rosnąć. <br />Teraz mam pytanie, czy „<strong>int</strong>” poprzedzające „<strong>main</strong>” w głównej funkcji [b<span style="color: #FF0000">]&quot;int main()&quot;[/</span>b] określa dodatkowo typ zmiennej, wielkość liczbową w zakresie od -32768 do 32767, bo w tym programie w nagłówku nie ma zadeklarowanego innego typu zmiennej, chyba, że jak w nagłówku nic nie zadeklarowaliśmy, to obowiązuje typ <strong>unit_t</strong>. <br />Nie czuję jeszcze tego tematu.<br />Szukam przyczyny wadliwego działania programu przy tym ustawieniu: <strong>OCR1A = (ADC*100)/320;</strong> Bo przy wyliczeniach matematycznych powinno wszystko się zgadzać, a tak nie jest. Wynik mnożenia dalece przekracza wartość 32767 i może to jest powód, że program nie działa prawidłowo.<br />Ciekaw jestem Waszej opinii.<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 9 gru 2016, o 22:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-12-09T08:50:49+01:00</updated>
<published>2016-12-09T08:50:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176948#p176948</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176948#p176948"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176948#p176948"><![CDATA[
Witam<br />Jak masz na czym ( uC + LCD ) to zrób takie &quot;doświadczenie&quot; - każ wyświetlać wynik dla tych dwóch działań ADC/ 3.35 oraz (ADC*100)/335.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 9 gru 2016, o 08:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-08T20:32:54+01:00</updated>
<published>2016-12-08T20:32:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176906#p176906</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176906#p176906"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176906#p176906"><![CDATA[
Właśnie sprawdzałem to dokładnie przy różnych ustawieniach. Wypełnienie/napięcie zmienia się proporcjonalnie do tego dzielnika i reaguje z dokładnością do 1/100. Chyba, że kompilator w ten sposób to oblicza jak Kol. podał &quot;(ADC*100)/335.&quot;<br />Jeden ważny szczegół, że dzieląc przez 3,35 zamiast przecinka trzeba dać kropkę czyli 3.35 z przecinkiem wywala błąd.<br /><br />Promocje liczb, a co to takiego <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" /> <br /><br />Pozdrawiam.<br /><br />BTW<br /><br />Już wiem, chodzi o promocje typów liczb, rzutowanie itp. Przez moment pomyślałem, że chodzi zupełnie o coś innego o czym jeszcze nie wiem  <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=15135">barus</a> — 8 gru 2016, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-12-08T19:14:27+01:00</updated>
<published>2016-12-08T19:14:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176897#p176897</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176897#p176897"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176897#p176897"><![CDATA[
Witam<br />Po prostu zamiast 3,35 podstawia 3,00 i powstaje &quot;niedokładność&quot; z zaokrąglenia.<br />Aby działanie było bezbłędne musiało by być (ADC*100)/335.<br />Poczytaj o promocjach liczb.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 8 gru 2016, o 19:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-08T18:46:21+01:00</updated>
<published>2016-12-08T18:46:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176894#p176894</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176894#p176894"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176894#p176894"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Aby uzyskać dokładniejszy wynik nie posiłkując się zmiennoprzecinkowymi musiałbyś &quot;pożonglować&quot;operacjami RAZY i PODZIELONE ale to już inna bajka; chodziło mi o przybliżenie idei ustalenia zakresu gdzie dolna wartość jest &gt;0.<br /></div><br />Okazuje się, że w tym kodzie do uzyskania dokładnego dowolnego zakresu wypełnienia na PWM mogę posługiwać się liczbami zmiennoprzecinkowymi i kompilator to łyka bez wywalania błędów. <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /> <br /><br />Przykład:  OCR1A = 561 + ( ADC/3.35 );  Przy wartości IRC1=1023; <br />Przy odwróconej polaryzacji napięcia po PWM w stosunku do wejścia ADC [TCCR1A |= (1&lt;&lt;COM1A1)|(1&lt;&lt;COM1A0)] napięcie to w zależności od położenia potencjometru mieści się w zakresie około 0,88V do 2,15V dokładnie takie, jakie chciałem.<br />Kompilator wykonuje działanie według tej instrukcji, mimo, że w kodzie nie zadeklarowaliśmy, iż będziemy używać wartości zmiennoprzecinkowych <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br />Możecie mi to wytłumaczyć <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 8 gru 2016, o 18:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-06T09:45:16+01:00</updated>
<published>2016-12-06T09:45:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176642#p176642</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176642#p176642"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176642#p176642"><![CDATA[
Przyznam, że jestem trochę zaskoczony tą odpowiedzią, bo jeśli tak jest jak Kol. pisze to byłoby cudownie, bo prawie zerowe odchyłki częstotliwości od normy kompletnie w moim projekcie nie mają znaczenia.  Chodziło mi też o stałość wewnętrznego napięcia odniesienia. Czy przy temperaturze otoczenia od np. -20°C do +30°C nie robi żadnego wrażenia na tym napięciu <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /> . Niezmienny poziom tego napięcia będzie  miał kapitalne znaczenie na wyjściowe napięcie. Tak na marginesie, to ciekaw jestem jak w procku jest dokonywana redukcja napięcia zasilania do poziomu wewnętrznego napięcia odniesienia (2,6V, 1,1V), czy podobnie jak w zasilaczu stratnym, czy przez PWM?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 6 gru 2016, o 09:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2016-12-06T00:22:11+01:00</updated>
<published>2016-12-06T00:22:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176629#p176629</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176629#p176629"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176629#p176629"><![CDATA[
<div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Związku z tym mam pytanie do Was jak jest ze stabilnością napięć w ATmegach względem zmiany temperatury otoczenia.? Czy mają w sobie kompensację temperaturową? To na razie tyle pytań. Jeśli pozwolicie to będę miał jeszcze sporo pytań.<br />Pozdrawiam.<br /></div><br /><br />Temperatura będzie miała pewien wpływ na częstotliwość wbudowanego geneartora RC. Ale to będą niewielkie zmiany, zreszta przy PWM to nie ma znaczenia. PWM będzie miał nieco inną częstotliwość np. różniąca się o 0,01 Hz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 6 gru 2016, o 00:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-05T22:39:19+01:00</updated>
<published>2016-12-05T22:39:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176619#p176619</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176619#p176619"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176619#p176619"><![CDATA[
Teraz może zdradzę, dlaczego drążę te akurat szczegóły dotyczące ADC PWM, a szczególnie chodzi mi o uzyskanie dosyć stabilnego napięcie na wyjściu PWM, którego wartość będzie wprost proporcjonalna do napięcia sterującego ADC i do tego w odwrotnej polaryzacji do wejścia.<br />Obecnie mam w samochodzie zainstalowany taki oto moduł :<br /> <a href="https://obrazkiforum.atnel.pl/15135/86629d3e5ffbae968677912a9da9431b.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/15135/86629d3e5ffbae968677912a9da9431b.jpg" alt="Obrazek" /></a><br />Jak się zapewne domyślacie jest to moduł, który przy zainstalowanej instalacji LPG w samochodzie(BRC) w momencie przełączenia się silnika z PB na LPG pokazuje nam poziom LPG na wskaźniku benzyny. To nie jedyna zaleta tego modułu. Tak mój samochód (Chevrolet Cruze) jak i francuskie samochody, japońskie i jeszcze inne nowe samochody dotyka plaga błędu wskaźnika benzyny przy jeździe na LPG. Polega to na tym, że wskaźnik benzyny podczas jazdy na LPG nagle opada do zera, generuje błąd w postaci świecenia się żółtej ikonki, a na wskaźniku paliwa pojawia się napis natychmiast zatankuj paliwo. Co gorsze w niektórych samochodach nie da się tego skasować. Tak też było w moim przypadku dopóki nie zrobiłem i nie zamontowałem tego modułu, bo ASO rozłożyło bezradnie ręce. U mnie w samochodzie wszystkim rządzi komputer a komunikuje się prawie ze wszystkimi urządzeniami przez magistralę CAN. Komputer(ECM) od wskaźnika benzyny podczas jazdy na LPG się buntuje/głupieje, bo nie ubywa benzyny, aż w pewnym momencie wskaźnik opada do zera. Mój moduł przy jeździe na LPG podaje do komputera poziom ze zbiornika LPG dodatkowo na wskaźniku benzyny widzimy dokładny poziom LPG, w ten sposób oszukuje komputer, bo ten myśli, że jest to poziom benzyny, skoro poziom opada w trakcie jazdy to komputer się nie buntuje, nie wywala błędów.  Czyli mamy dwa w jednym. Jest to mój autorski patent, który sprawdza się świetnie i precyzyjnie wskazuje poziom gazu. Kosztował mnie wiele pracy, aby to wszystko ogarnąć, ale warto było. Jest pewien drobny mankament. Otóż minimalna niestabilność wskazań w zależności od temperatury otoczenia. Wpływ na taki stan rzeczy ma dryf cieplny łącza pn tranzystora, który zmienia jego punkt pracy w zależności od temperatury otoczenia. Aby to zminimalizować musiałem metodą prób i błędów dobrać odpowiedni termistor w obwodzie bazy tranzystora, którego przykleiłem do metalowej obudowy (BC211). Nie udało mi się całkowicie wyeliminować tej przypadłości, ale znacznie ją ograniczyłem. Wbrew pozorom wskaźnik potrzebuje dosyć stabilne i precyzyjne napięcie.<br />Jeszcze dodatkowo musiałem popracować nad liniowością a właściwie nad nieliniowością wskazań LPG (zb. w kształcie walca), którą też wyeliminowałem.  Jak widać włożyłem w to sporo pracy.<br />Jestem z natury perfekcjonistą i pomyślałem sobie, że na te małe niedomagania najlepszym lekarstwem będzie ATmega, a tymi prockami zainteresowałem się dopiero 2 miesiące temu. W ogóle w dziedzinie procesorów jestem 100 lat za murzynami. Tak, że proszę o wyrozumiałość.<br /> Związku z tym mam pytanie do Was jak jest ze stabilnością napięć w ATmegach względem zmiany temperatury otoczenia.? Czy mają w sobie kompensację temperaturową? To na razie tyle pytań. Jeśli pozwolicie to będę miał jeszcze sporo pytań.<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 5 gru 2016, o 22:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2016-12-05T18:51:04+01:00</updated>
<published>2016-12-05T18:51:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176602#p176602</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176602#p176602"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176602#p176602"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Co do właściwych oznaczeń TOP i MAX przy licznikach, to nie myliłem się, tylko był błąd w tłumaczeniu w opisie tych liczników.<br /></div><br />Dlatego najlepiej jest używać noty ściągniętej z Atmela <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=1589">sq8dsr</a> — 5 gru 2016, o 18:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-05T18:35:00+01:00</updated>
<published>2016-12-05T18:35:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176600#p176600</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176600#p176600"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176600#p176600"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />A jaki problem podzielić wartość z ADC przez 2 ?<br /></div><br /><br />Faktycznie. Przetestowałem i działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Co do właściwych oznaczeń TOP i MAX przy licznikach, to nie myliłem się, tylko był błąd w tłumaczeniu w opisie tych liczników.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 5 gru 2016, o 18:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2016-12-05T16:48:29+01:00</updated>
<published>2016-12-05T16:48:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176591#p176591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176591#p176591"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176591#p176591"><![CDATA[
<div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Ale wpisanie do ICR1 np. 512 powoduje zmniejszenie rozdzielczości tego rejestru o połowę i równocześnie zakres sterowania potencjometrem na wejściu ADC zmniejszył się o połowę, czyli do 2,5V, przy wartości IRC1 1023 zakres pełnego obrotu potencjometru wynosił 5V.<br /></div><br /><br />A jaki problem podzielić wartość z ADC przez 2 ?<br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Czyli niezależnie od tego czy użyjemy licznika 0 czy 1 i w obydwu jest ustawiony tryb Normal, czyli według mojej wiedzy w tym trybie nie odczytuje się porównania w rejestrach, (no chyba, że jestem w błędzie) tylko liczniki zliczają aż się przepełnią i następuje reset.<br /></div><br />W trybie normal nie ma porównania sprzętowego. Jest tylko przepełnienie i flaga informująca o tym.<br /><br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />To, dlaczego w nocie katalogowej przy opisie licznika0 jest TOP a przy liczniku 1 jest MAX skoro obydwa pracują w trybie Noramal?<br /></div><br />W nocie, w sekcji dotyczącej licznika0 (Atmega8) nie ma pojęcia TOP. Bo ten licznik nie obsługuje ani PWM ani CTC wiec nie jest mu t o potrzebne.<br />Co do licznika1 (Timer1) on ma bardzo duzo trybów pracy. W trybie normal jest jest tam określone, że przepełnienie następuje przy wartości MAX = 0xFFFF.<br />Jest to dokładnie to samo co timerze0, tryb normal to normal.<br /><br /><a href="https://obrazkiforum.atnel.pl/1589/e686943b0cc75fda0a17337f71f417c9.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/1589/e686943b0cc75fda0a17337f71f417c9.PNG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 5 gru 2016, o 16:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-05T16:16:34+01:00</updated>
<published>2016-12-05T16:16:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176588#p176588</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176588#p176588"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176588#p176588"><![CDATA[
Kol. sq8dsr dzięki za odpowiedź i cenne wskazówki.<br /><div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />Można, to obliczenie zwykłej matematycznej proporcji. Używając ADC w 10 bitowej rozdzielczości masz 1024 dyskretne stany reprezentujące położenie potencjometru. Czyli masz liczbę z przedziału od 0 do 1023, Te liczbę trzeba przeskalować proporcjonalnie w zakres np. od 200 do 512 i te liczbę wpisywać do rejestru OCR1A/B.<br /></div><br /><br />To świetna informacja dla mnie. A jednak da się przez odpowiedni wpis w rejestrze OCR1A/B tak formować wypełnienie PWM aby na jego wyjściu uzyskać dowolny zakres napięcia różnego od zera. <br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Przecież moduł ADC jest niezależny od Timera1. Niezależnie od napięcia odniesienia otrzymasz wartość z ADC, która będzie liczbą od 0 do 1023. W zależności od napięcia odniesienia zmienia się tylko to, co reprezentuje ta liczba.<br /></div><br /><br />Wiem, że wpisanie pewnej wartości do rejestru wejściowego licznika 1 nie ma wpływu na moduł ADC. Ale wpisanie do ICR1 np. 512 powoduje zmniejszenie rozdzielczości tego rejestru o połowę i równocześnie zakres sterowania potencjometrem na wejściu ADC zmniejszył się o połowę, czyli do 2,5V, przy wartości IRC1 1023 zakres pełnego obrotu potencjometru wynosił 5V. Gdybym do IRC1 wpisał 255 i ustawił ADC na tryb 8 bit (ADLAR=1) to napięcie sterowania na wejściu ADC nadal by wynosiło 5V.<br />Pisząc to jeszcze nie wiedziałem, że można to rozwiązać w inny sposób, czyli programowo.<br /><br />Wracając do wątku związanego z prawidłowym użyciem skrótów TOP i MAX, to przepraszam bardzo, ale nadal tego nie rozumiem albo jest błąd w opisie.<br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Pytałeś o tryb pracy normal który nie ma wiele wspólnego z PWM. i skąd bierze się wartość 0xff i 0xffff.<br /></div><br />Nie chodziło mi o PWM tylko o sam tryb Normal w liczniku 0 i 1 w ATmedze 16 i nie pytałem o to skąd się bierze wartość 0xFF i 0xFFFF, bo to wiem.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Z tego, co pamiętam akurat Atmega8 ma bardzo ubogi Timer0 np. nie ma trybu CTC i nie ma trybów PWM tylko Normal.<br /></div><br />Tak, to wiedziałem.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />MAX to jest maksymalna wartość do której jest w stanie zliczać timer.<br /></div><br />Właśnie dochodzimy do sedna sprawy. Ja rozumiem to tak. MAX jest wtedy, gdy licznik zliczy do momentu przepełnienia się np. wartość 0xFF lub 0xFFFF itp. Nie występuje w tym trybie odczyt porównania/zrównanie licznika z rejestrem. Ouput Compare odłączone.<br /><div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />TOP to wartość do której zlicza wartość przy trybie PWM, w przypadku Timera1 może być ustawiana.<br /></div><br />Przypomnę, że nie pytałem o tryb PWM, tylko o tryb Normal, analogiczna sytuacja jak wyżej. Czyli niezależnie od tego czy użyjemy licznika 0 czy 1 i w obydwu jest ustawiony tryb Normal, czyli według mojej wiedzy w tym trybie nie odczytuje się porównania w rejestrach, (no chyba, że jestem w błędzie) tylko liczniki zliczają aż się przepełnią i następuje reset. Czyli obydwa liczniki przy MAX. <br />To, dlaczego w nocie katalogowej przy opisie licznika0 jest TOP a przy liczniku 1 jest MAX skoro obydwa pracują w trybie Noramal? <br />==================================================================================<br /> Kol. kicajek  Dziękuje  za wsparcie. <br />Kol. kicajek to był strzał w dziesiątke. Z wypiekami na twarzy natychmiast zabrałem się do uzupełnienia mojego kodu. I kod dokładnie tak  jak sugerowałeś zadziałał.<br /><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Aby uzyskać dokładniejszy wynik nie posiłkując się zmiennoprzecinkowymi musiałbyś &quot;pożonglować&quot;operacjami RAZY i PODZIELONE ale to już inna bajka; chodziło mi o przybliżenie idei ustalenia zakresu gdzie dolna wartość jest &gt;0.<br /></div><br /><br />Jak inna bajka. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  Posiłkując się rejestrem IRC1 wpisując do niego wartości większe od 1023 i odpowiednio zmieniając wartość rejestru OCR1A i dobierając odpowiedni dzielnik ADC mogę dowolnie kształtować zakres wypełnienia PWM z dużą dokładnością. Brawo Panowie  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /> .  Znów się czegoś nowego dowiedziałem, a szperałem po necie za tym, niestety bez skutku. Taka, zdawałoby się, mała rzecz a tak cieszy <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  Jeszcze musi trochę wody upłynąć abym był w stanie sam to wymyślić. <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 5 gru 2016, o 16:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-12-05T00:36:01+01:00</updated>
<published>2016-12-05T00:36:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176557#p176557</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176557#p176557"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176557#p176557"><![CDATA[
Witam<br /><div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />Można, to obliczenie zwykłej matematycznej proporcji. Używając ADC w 10 bitowej rozdzielczości masz 1024 dyskretne stany reprezentujące położenie potencjometru. Czyli masz liczbę z przedziału od 0 do 1023, Te liczbę trzeba przeskalować proporcjonalnie w zakres np. od 200 do 512 i te liczbę wpisywać do rejestru OCR1A/B.<br /></div><br />Ja tylko uzupełnię, a właściwie pokażę kol.<strong>barus</strong> jeden ze sposobów.<br />Tak jak kol.<strong>sq8dsr</strong> pokazał interesuje Cię przedział OCR1x 200/512.<br />Więc na początek wiesz, że OCR... nie może być mniejsze od 200 a tylko &gt;=.<br />[syntax=c]OCR... =200 + // coś z zakresu 0 - 312 bo 200 już masz[/syntax]<br />ADC przyjmuje wartości 0 - 1023 a ciebie interesuje max 312 więc obliczasz &quot;zakres&quot; ADC ( najprościej ale najmniej dokładnie 1023/312 =  3)<br />i teraz podstawiasz<br />[syntax=c]OCR... = 200 + ( ADC/3);[/syntax]<br />Aby uzyskać dokładniejszy wynik nie posiłkując się zmiennoprzecinkowymi musiałbyś &quot;pożonglować&quot;<br />operacjami RAZY i PODZIELONE ale to już inna bajka; chodziło mi o przybliżenie idei ustalenia zakresu gdzie dolna wartość jest &gt;0.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 5 gru 2016, o 00:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2016-12-04T23:41:04+01:00</updated>
<published>2016-12-04T23:41:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176552#p176552</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176552#p176552"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176552#p176552"><![CDATA[
<div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Czy można za pomocą odpowiedniego kodu tak sterować wypełnieniem PWM za pomocą potencjometru wpiętego do jednego z pinów ADC, z którego będzie podawane napięcie sterujące na wejście ADC o wartości od 0V do 5V, aby wypełnienie PWM mieściło się w granicach od 20% do 50% nie używając tablicowania wyników w kodzie programu. Napięcie odniesienia w obydwu przypadkach wynosi 5V. Na obecnym etapie mojej wiedzy nie da się, ale może się mylę.<br /></div><br /><br />Można, to obliczenie zwykłej matematycznej proporcji. Używając ADC w 10 bitowej rozdzielczości masz 1024 dyskretne stany reprezentujące położenie potencjometru. Czyli masz liczbę z przedziału od 0 do 1023, Te liczbę trzeba przeskalować proporcjonalnie w zakres np. od 200 do 512 i te liczbę wpisywać do rejestru OCR1A/B.<br /><br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />że wraz ze zmianą wartości liczbowej wpisywanej do rejestru mniejszej od 1023 trzeba zmieniać wartość dzielnika napięcia przy wykorzystywaniu wejścia ADC np. do sterowania wypełnieniem PWM.<br /></div><br /><br />Przecież moduł ADC jest niezależny od Timera1. Niezależnie od napięcia odniesienia otrzymasz wartość z ADC któa będzie liczbą od 0 do 1023. W zależności od napięcia odniesienia zmienia się tylko to co reprezentuje ta liczba. <br /><br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Przecież w tym konkretnym przypadku nie chodziło mi o to, do jakiej wartości obydwa liczniki zliczają, bo to dla mnie jest oczywiste, ile mają bitów itp.<br /></div><br /><br />Pytałeś o tryb pracy normal który nie ma wiele wspólnego z PWM. i skąd bierze się wartość 0xff i 0xffff. <br />Z tego co pamiętam akurat Atmega8 ma bardzo ubogi Timer0 np. nie ma trybu CTC i nie ma trybów PWM tylko Normal.<br />MAX to jest maksymalna wartość do której jest w stanie zliczać timer. <br />TOP to wartość do której zlicza wartość przy trybie PWM, w przypadku Timera1 może być ustawiana.<br /><br /><a href="https://obrazkiforum.atnel.pl/1589/0cf5ff37cba9af407faf0d9e2ae7e587.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/1589/0cf5ff37cba9af407faf0d9e2ae7e587.PNG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 4 gru 2016, o 23:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-04T23:02:56+01:00</updated>
<published>2016-12-04T23:02:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176550#p176550</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176550#p176550"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176550#p176550"><![CDATA[
Dzięki za szybka odpowiedź<br /><br />Doskonale wiem, na czym polega wypełnienie impulsów w PWM. Przyznaję, że niepotrzebnie użyłem swoich skrótów myślowych, aby nie rozpisywać się zbytnio, mówiąc, że napięcie na wyjściu PWM ma się zawierać w zakresie 1V do 3V miałem na myśli wypełnienie PWM na poziomie między 20% a 60% a po przepuszczeniu przez filtr RC żeby się zawierało właśnie miedzy 1V a 3V. <br />Jeśli do rejestru OCR1A lub B (10 bit) wpiszę wartość 512 to wiadomo, że wypełnienie będzie wynosić 50%, czyli przy napięciu odniesienia 5V napięcie po PWM będzie wynosić 2,5V. Przyznaję, że nie fortunnie zabrzmiało to zdanie i źle zostało sformułowane o ograniczaniu napięcia od góry i od dołu na wyjściu po PWM. Nie to miałem na myśli. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />  Wycofuje to pytanie, bo zmniejszając wartość OCR1A/B zawsze na wyjściu PWM będzie napięcie niższe proporcjonalnie do tej wartości w rejestrze i zawsze będzie się zaczynać od 0V pod warunkiem, że ustawiony będzie tryb Fast PWM a w rejestrze TCCR1A  mamy ustawiony pin w COM1A1 lub COM1B1.<br />Ale może jednak zadam jeszcze raz to pytanie, mam nadzieję, że tym razem poprawnie: Czy można za pomocą odpowiedniego kodu tak sterować wypełnieniem PWM za pomocą potencjometru wpiętego do jednego z pinów ADC, z którego będzie podawane napięcie sterujące na wejście ADC o wartości od 0V do 5V, aby wypełnienie PWM mieściło się w granicach od 20% do 50% nie używając tablicowania wyników w kodzie programu. Napięcie odniesienia w obydwu przypadkach wynosi 5V. Na obecnym etapie mojej wiedzy nie da się, ale może się mylę.<br /> <br />Jeśli chodzi o ICR1 to jego funkcje są dla mnie zrozumiałe, te, które nie wymieniłem też. Dla mnie dziwne jest tylko to, że wraz ze zmianą wartości liczbowej wpisywanej do rejestru mniejszej od 1023 trzeba zmieniać wartość dzielnika napięcia przy wykorzystywaniu wejścia ADC np. do sterowania wypełnieniem PWM.<br /><br />Jeśli chodzi o liczniki to chyba znowu nieporozumienie. Przecież w tym konkretnym przypadku nie chodziło mi o to, do jakiej wartości obydwa liczniki zliczają, bo to dla mnie jest oczywiste, ile mają bitów itp. Problem polega na tym, że obydwa liczniki w zależności od rozdzielczości zliczają od zera do górnej granicy, a kiedy ją osiągną to się przekręcają/resetują. Moje pytanie brzmi, czemu w przypadku licznika, 0 gdy ten zliczy do końca to ta pozycja nazywa się TOP a w analogicznej sytuacji licznika 1 ta pozycja licznika nazywa się MAX <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" />  Tyle i tylko tyle.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 4 gru 2016, o 23:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2016-12-04T19:29:18+01:00</updated>
<published>2016-12-04T19:29:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176531#p176531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176531#p176531"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176531#p176531"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Z kolei w liczniku 1 czytamy:<br />„ Najprostszy sposób pracy to tzw. Tryb Normal, przy ustawieniu WGM013:0 = 0. W tym trybie licznik zawsze zlicza przez inkrementowanie, a po osiągnięciu maksymalnej wartości MAX = 0xFFFF licznik „przekręca się” i resetuje od 0.”<br /></div><br /><br />Dokładnie tak jak jest to napisane. Tryb NORMAL służy np. do generowania przerwań w jakichś odstępach czasu. Choć lepszy jest tutaj tryb CTC. Ale wracając do trybu normal. Timer8 bitowy ma rejestr swojego licznika np. TCNT0 rejestr ten jest 8 bitowy. Timer zlicza swoje impulsy i inkrementuje wartość zapisaną w rejestrze TCNT0 (na początku jest ona równa 0). Licznik TCNT0 zwiększa się aż osiąga wartość 255 (maxymalna wartość dla liczny 8 bitowej inaczej 0xFF) następnie się &quot;przekręca&quot; czyli wraca do wartości 0 i dalej kontynuuje zliczanie. Cały cykl się powtarza. Co jest tutaj najważniejsze to to, że fakt &quot;przekręcenia się&quot; licznika inaczej jego przepełnienia, sygnalizowany jest pojawienie się odpowiedniej flagi przerwania. I ten fakt można do czegoś wykorzystać. Możemy np. w procedurze obsługi przerwania załadować do rejestru TCNT0 wartość większą od zera. Wtedy licznik będzie zliczał krócej do momentu przepełnienia się, więc będziemy otrzymywali przerwania częściej.<br /><br />W przypadku Timera16 bitowego jest dokładnie tak samo tyle że rejestr licznikowy (w tym przypadku TCNT1) jest 16 bitowy a nie 8 bitowy. Dzięki temu jedgo najwyższa wartość to 65535 czyli właśnie 0xFFFF.<br /><br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Reasumując to wartość liczbowa wpisana do ICR1 w zależności od rozdzielczości bitowej licznika ma wpływ na płynną zmianę rozdzielczości tego rejestru od TOP do BOTTOM, oraz jego częstotliwości. Natomiast wartość rejestru OCR1A ma wpływ tylko i wyłącznie na wypełnienie PWM i jego rozdzielczość.<br /></div>  <br /><br />Rejestr ICR (ICR1) występuje tylko w timerach 16 bitowych. One mają kilkanaście trybów pracy. Rejestr ten jest używany generalnie do 2 rzeczy. Do pracy w trybie Input Capture. Którym się teraz nie zajmujemy. Oraz do określania rozdzielczości bitowej i pośrednio długości okresu dla PWMa. Dzięki niemu możemy generować bardzo precyzyjne przebiegi PWM. Ponieważ możemy regulować, z dużą rozdzielczością, wartość szczytową do której zlicza licznik. Przykładowo w procesorach ARM chyba wszystkie timery mają te właściwość. Przy czym jest to jeszcze bardziej rozbudowane.<br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Teraz mam następne pytanie, czy da się za pomocą rejestru-ów dowolnie kształtować napięcie na wyjściu z PWM (wartość rejestru-ów odczytywana z ADC), aby jego zakres na wyjściu wynosił np. od 1V do 3V lub od 3V do 4V, przekręcając potencjometrem od zera do max na wejściu ADC.<br /></div><br />Z tego co tutaj napisałeś wynika, że nadal nie rozumiesz czym jest PWM. <br />W PWM występują tylko napięcia 0 V i VCC. NIe ma stanów pośrednich, działamy w domenie cyfrowej. PWM jedyne co robi to to, że w pewnym określonym okresie czasu podaje stan wysoki (VCC) i niski (0 V). Można to opisać procentowo. Cały okres czasu jest powiedzmy 0,01 sek. W tym okresie czasu przykładowo na pinie wyjściowym PWM mamy przez 25% czasu stan wysoki (VCC) a przez 75% czasu stan niski (0V). Co po uśrednieniu da jakieś napięcie pomiędzy 0 a VCC. Ale mamy tu do czynienia z wartością średnią. Ta wartość średnia będzie się zmieniać jeśli będzie zmieniał się procentowy udział stanu wysokiego i niskiego w przebiegu PWM. Słowo klucz to WYPEŁNIENIE. Od 0% do 100%.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 4 gru 2016, o 19:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-12-04T18:26:27+01:00</updated>
<published>2016-12-04T18:26:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176518#p176518</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176518#p176518"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176518#p176518"><![CDATA[
<div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />Dasro69 dzięki! Faktycznie procek jest taktowany 8GHZ nie 1GHz.<br /></div><br />hihi... coś przecholowałeś z tym GHz. hihi...  <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=11549">Daro69</a> — 4 gru 2016, o 18:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-04T17:47:05+01:00</updated>
<published>2016-12-04T17:47:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176513#p176513</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176513#p176513"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176513#p176513"><![CDATA[
Dasro69 dzięki! Faktycznie procek jest taktowany 8GHZ nie 1GHz. Coś mnie zaślepiło, bo myślałem, że częstotliwość procka da się zmienić w eklipse, a przecież można tego dokonać tylko w MKCalkulatorze <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><br /><br />Sq8dsr! Aa…a teraz to kumam. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  Wielkie dzięki za konkretne wyjaśnienie mi tej kwestii. Robiłem<br />próby na licznikach 8-bitowych i tam, wydaje mi się, było dla mnie wszystko zrozumiałe.<br />Wiadomo, że musze się jeszcze dużo nauczyć, ale w tym przypadku mętlik w głowie zrobił mi ten rejestr wejściowy, a czytając jego opis w katalogu procka tak wprost z niego nie wynika jak dokładnie działa, chyba, że ja nie wyłapałem tego, chociaż czytałem go kilka razy.<br />Reasumując to wartość liczbowa wpisana do ICR1 w zależności od rozdzielczości bitowej licznika ma wpływ na płynną zmianę rozdzielczości tego rejestru od TOP do BOTTOM, oraz jego częstotliwości. Natomiast wartość rejestru OCR1A ma wpływ tylko i wyłącznie na wypełnienie PWM i jego rozdzielczość.<br />Posiłkując się rejestrem ICR1 przy odczycie z ADC za każdym razem, gdy do niego wpiszemy nową niższą wartość, to od nowa musimy ustalić wartość dzielnika napięcia na wejściu ADC.<br />W dużym uproszczeniu można powiedzieć, że rejestr ICR1 jest lustrzanym odbiciem OCR1A, bo po<br />wpisaniu do nich niższych wartości od MAX (maksymalna rozdzielczość) na wejściu i wyjściu zmniejsza się proporcjonalnie ich rozdzielczość oraz poziom napięcia sterującego na wejściu ICR1 i poziom napięcia na wyjściu OCR1A po PWM.<br />Dużym problemem dla mnie jest nieznajomość języka angielskiego, kiedyś uczyliśmy się tylko rosyjskiego. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />W necie znalazłem parę pozycji z noty katalogowej procka przetłumaczonej na j. polski, ale jak się okazuje, zawierają też błędy. Jeszcze nie tak dawno nie wiedziałem, czym różni się poziom licznika TOP od MAX. Oznaczenia te używane w tabeli trybów pracy licznika.<br /><br />Cytuję dokładny opis z noty katalogowej ATmega 16 przetłumaczonej na polski. <br /><br />Licznik 0 cytat:<br /> „ Najprostszy sposób pracy to tzw. Tryb Normal, przy ustawieniu WGM01:0 = 0. W tym trybie licznik zawsze zlicza przez inkrementowanie, a po osiągnięciu maksymalnej wartości TOP = 0xFF licznik „przekręca się” i resetuje od 0.”<br /><br />Z kolei w liczniku 1 czytamy: <br /> „ Najprostszy sposób pracy to tzw. Tryb Normal, przy ustawieniu WGM013:0 = 0. W tym trybie licznik zawsze zlicza przez inkrementowanie, a po osiągnięciu maksymalnej wartości MAX = 0xFFFF licznik „przekręca się” i resetuje od 0.”<br /><br />Jak ja miałem to zrozumieć? Teraz już wiem, że Top to zrównanie się licznika z wartością rejestru, a MAX to osiągnięcie wartości np. 0xFF, 0xFFFF itp., po której licznik się przekręca /resetuje i zlicza od nowa.<br /><br />Teraz mam następne pytanie, czy da się za pomocą rejestru-ów dowolnie kształtować napięcie na wyjściu z PWM (wartość rejestru-ów odczytywana z ADC), aby jego zakres na wyjściu wynosił np. od 1V do 3V lub od 3V do 4V, przekręcając potencjometrem od zera do max na wejściu ADC.<br />Wiem, że takie napięcia na wyjściu dowolnie mogę kształtować przy zastosowaniu tablicowania,<br />Wiem jak w dowolnym zakresie mogę obniżyć napięcie po PWM ograniczając go od góry, nie wiem czy da się go równocześnie ograniczyć od góry i od dołu za pomocą rejestru?<br />Bardzo proszę o odpowiedz <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 4 gru 2016, o 17:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2016-12-04T10:31:11+01:00</updated>
<published>2016-12-04T10:31:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176455#p176455</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176455#p176455"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176455#p176455"><![CDATA[
postaram się wytłumaczyć:<br /><br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />ICR1=1023 i OCR1A=1023, to napięcie po PWM wyniosło 5V.<br /></div><br />ICR1 określa tutaj wartość do której zlicza licznik Timera1. Otrzymujesz tutaj PWM o wypełnieniu 100 % (PWM 10 bitowy)<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />ICR1=1023 a OCR1A=512, to napięcie po PWM = 2,5V a częstotliwość 122Hz.<br /></div><br />wartość szczytową masz nada 1023 ale do rejestru OCR1A wprowadziłś połowę tej wartości więc masz PWM o wypełnieniu 50% (PWM 10 bitowy)<br /><br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />ICR1-512 i OCR1A=512, to napięcie po PWM = 5V<br /></div><br />wartość szczytowa teraz to 512 i wartość OCR1A też 512 więc znowu masz PWM o wypełnieniu 100% tyle że rozdzielczość PWM jest 9 bitów<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />ICR1-0 a OCR1A=512, to napięcie odpowiednio =5V.<br /></div><br />LIcznik Timera1 nie ma czego zliczać bo jego wartość szczytowa to zero wyjście związane z rejestrem OCR1A nie zmiana swojego stanu (wypełnienie 100%)<br /><br /><div class="quotetitle">barus napisał(a):</div><div class="quotecontent"><br />ICR1=0 i OCR1A=0, to napięcie też =5V itp.<br /></div><br />Sytuacja analogiczna jak powyżej.<br /><br /><br />Mam wrażenie, że nie rozumiesz do końca tego czym jest PWM i jak on działa. Piszesz, że wgłębiasz się w peryferia sprzętowe uC. Poznajesz rejestry itd, ale trochę brakuje Ci podstaw zrozumienie nie tyle tego co robią te moduły tylko w jakim celu się to dzieje.<br />Proponuję najpierw ogarnąć PWM na Timerze 8 bitowym, będzie Ci łatwiej załapać zasadę działania generowanie przebiegu PWM.<br />Timer1 (16 bitowy) ogarniesz sobie później jak już PWM nie bedzie miał dla Ciebie tajemnic, wtedy dołożysz sobie do analizowania te &quot;ezgotyczne&quot; tryby prace które są dostępne w Timerze 16 bitowym (Timery o nr 1 i 3). <br /><br />ACD też możesz używać z rozdzilczością 8 bitową ustarczu ustawić 1 jedynkę w bicie ADLAR i odczytywać tylko rejestr ADCH. Wtedy będziesz miał tylko 256 dyskretnych wartości ADC któe bezpośrednio możesz włożyć do rejestru timera np. OCR0x lub OCR2x.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 4 gru 2016, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-12-04T01:31:42+01:00</updated>
<published>2016-12-04T01:31:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176438#p176438</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176438#p176438"/>
<title type="html"><![CDATA[Re: Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176438#p176438"><![CDATA[
nie przyjrzałem sie dokładnie, ale ze wstępnych obliczeń, <br />wygląda na to że Twoja ATmesia pracuje na 8MHz.<br />8 000 000 / 64 / 1024 = ~122Hz.<br />dla ICR=1023 , (122Hz)<br />a OCR1A (0-255) to wartość wypełnienia, czyli napięcia na wyjściu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 4 gru 2016, o 01:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barus]]></name></author>
<updated>2016-12-04T01:10:28+01:00</updated>
<published>2016-12-04T01:10:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176437#p176437</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176437#p176437"/>
<title type="html"><![CDATA[Problem z obliczeniem częstotliwości PWM ster. przez ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16978&amp;p=176437#p176437"><![CDATA[
Witam serdecznie. Ostatnio dużo uwagi poświęcam takim modułom procka jak ADC, Liczniki oraz PWM. Zgłębiam wiedzę w tym temacie na ile jest to możliwe, bo w głowie już mam pomysły w ich praktycznym zastosowaniu. Przy ćwiczeniach na płytce stykowej przy sterowaniu PWM za pomocą ADC pojawiły się u mnie pewne niejasności o których za chwilę.<br />Ściągnąłem z netu kod programu, którego dodatkowo opisałem i poprawiłem na wersję bardziej przejrzystą/czytelną, taką jak wymaga Mirek.<br />Kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />#define ADCIN PC0   //definicja ADCIN (wejście ADC)<br /><br />int main()<br />{<br />  //ustawienie wejśc/wyjść<br />DDRB  |= (1&lt;&lt;PB1); //Ustawienie pinów sterujących diodami jako wyjścia<br /><br />DDRC &amp;=~ (1&lt;&lt;ADCIN);            //Ustawienie Wejścia ADC<br /><br />ADCSRA  = (1&lt;&lt;ADEN); //uruchomienie przetwornika<br />    ADCSRA |= (1&lt;&lt;ADPS1); //ustawienie preskalera, preskaler= 4<br />    ADCSRA |= (1&lt;&lt;ADFR); //właczenie trybu ciaglego odczytu<br />    ADCSRA |= (1&lt;&lt;ADSC); //wlaczenie konwersji<br /><br />   ADMUX  =  (1&lt;&lt;REFS0); //ustawienie wewnetrznego napiecia odniesienia<br />   //ADMUX  =  (1&lt;&lt;MUX1);// ustawienie ADC4 jako wejscie analogowe<br /><br />  //Inicjalizacja Timer1 (PWM), tryb 14 --&gt; FAST PWM, TOP=ICR1<br />  TCCR1A |= (1&lt;&lt;COM1A1)|(1&lt;&lt;WGM11);<br />  TCCR1B |= (1&lt;&lt;WGM13) | (1&lt;&lt;WGM12)| (1&lt;&lt;CS10)|(1&lt;&lt;CS11);//preskaler 64<br />  <br />  ICR1=1023;  //wartość rejestru wejścia(imput compare)<br /><br />  for(;;)//pętla główna<br />  {<br />  //OCR1A=1023; //wartość rejestr wyjścia(ouput compare)<br />    OCR1A=ADC; //rejestr wyjścia(ouput compare)<br />  }<br /><br />}[/syntax]<br /><br /> Kod ten działa dobrze. Przy użyciu potencjometru napięcie sterujące o wartości od 0 do 5V podawane jest na wejście ADC0. Napięcie odniesienia =5V. Na wyjściu PWM dioda od strony anody jest podłączona do PB1 a katodą przez rezystor do masy. Moim problemem jest wyliczenie właściwej częstotliwości PWM. Mierząc miernikiem częstotliwość na PB1 nijak to się ma do moich obliczeń. Podam przykłady:<br />Częstotliwość procesora to 1MHz. Atmega 8.<br />Jeśli wartość rejestru OCR1A = ADC, a do rejestru wejścia będę wpisywał odpowiednie wartości np.<br />ICR1=1023 to przekręcając potencjometrem uzyskam napięcie na wyjściu PB1 odpowiednio 0 do 5V, a częstotliwość wynosi około 122Hz.<br />Jeśli ICR1=512 to napięcie na wyjściu wynosi od 0 do 5V i około 245Hz, ale wartość 5V na PWM osiągnięta została już przy połowie zakresu potencjometru(2,5V), gdy wpisałem do IRC1 jeszcze mniejszą wartość to 5V na wyjściu PWM była przy minimalnym skoku potencjometru, a częstotliwość proporcjonalnie wyższa.<br />Natomiast, gdy do rejestru ICR1 wpisałem wartość 1500 to napięcie po PWM wyniosło około3V a częstotliwość około 83Hz.<br />Drugi przypadek:<br />Jeśli do rejestrów OCR1 i OCR1A wpisywałem różne wartości to otrzymałem następujące wyniki:<br />ICR1=1023 i OCR1A=1023, to napięcie po PWM wyniosło 5V.<br />ICR1=1023 a OCR1A=512, to napięcie po PWM = 2,5V a częstotliwość 122Hz.<br />ICR1-512 i OCR1A=512, to napięcie po PWM = 5V.<br />ICR1-0 a OCR1A=512, to napięcie odpowiednio =5V.<br />ICR1=0 i OCR1A=0, to napięcie też =5V itp.<br />Przy 5V nie mogłem zmierzyć częstotliwości.<br />Możecie mi to wyjaśnić jak w tej sytuacji przeliczać te częstotliwości, bo już mam mętlik w głowie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br />Dlaczego przy wpisywaniu do rejestru ICR1 wartości mniejszych, od 1023 gdy OCR1A=ADC zmniejsza się napięcie sterowania na wejściu ADC, mimo, że na wyjściu po PWM jest nadal 5V? W praktyce wygląda to tak jakby zmieniał się dzielnik napięcia na wejściu ADC, albo napięcie odniesienia <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br />Czym różnią się od siebie  oba te rejestry poza tym, że jeden jest wejściowy a drugi wyjściowy <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" />  Wiem też, że rejestr ICR1 też można użyć m.in. do ustawienia górnej wartości (TOP) dla licznika. Jednak w tym konkretnym przypadku ich działanie jest różne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15135">barus</a> — 4 gru 2016, o 01:10</p><hr />
]]></content>
</entry>
</feed>