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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-09T13:29:44+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9065&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-09T13:29:44+01:00</updated>
<published>2014-11-09T13:29:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=103008#p103008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=103008#p103008"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=103008#p103008"><![CDATA[
<div class="quotetitle">sadAVR napisał(a):</div><div class="quotecontent"><br />Co chciałbym osiągnąć:<br />-w miarę dokładne wyniki pomiarów,<br />-pozbycie się źle wyświetlanych liczb,<br />-zmniejszenie częstotliwości wyświetlania wyników - przez to, że zmieniają się tak szybko, źle się odczytuje wartości (próbowałem to osiągnąć preskalerem 128, to za mało, delay'e nie wchodzą w grę)<br /></div><br />to może zacznij od DOKŁADNEGO obejrzenia tego:<br /><br /><!-- m --><a class="postlink" href="https://www.youtube.com/playlist?list=PLtXXWLsA5QNi_R9uDXpHRpo5hRnig_f23" >https://www.youtube.com/playlist?list=P ... 5hRnig_f23</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 lis 2014, o 13:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sadAVR]]></name></author>
<updated>2014-11-09T12:58:56+01:00</updated>
<published>2014-11-09T12:58:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=103003#p103003</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=103003#p103003"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=103003#p103003"><![CDATA[
Witam ponownie.<br /><br />Od ostatniego postu wzbogaciłem układ o woltomierz, mam z nim jednak lekki problem.<br /><br />Obarczony jest dość sporą niedokładnością (niedomiar sięgający czasem 200mV) i wariującymi cyferkami (nie chodzi tylko o szalejące wartości napięcia, a fakt, że czasem cyfry wyświetlają się błędnie - brakuje którejś diody).<br /><br />funkcja główna:<br />[syntax=c]int main(void)<br />{<br />//INICJALIZACJA WYSWIETLACZA<br />d_led_init();  // inicjalizacja wyświetlacza multipleksowanego<br />sei();// włączenie globalnego zezwolenia na przerwania<br /><br />//INICJALIZACJA ADC<br />ADCSRA |= (1&lt;&lt;ADEN); //włączenie ADC<br />ADCSRA |= (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1) | (1&lt;&lt;ADPS0);         //prescaler 128;<br />ADMUX  |= (1&lt;&lt;REFS0) | (1&lt;&lt;REFS1); //napięcie odniesienia 2,56V<br /><br />uint16_t wynik=0;<br /><br />while(1)<br />{<br /><br />wynik=5*pomiar(PC0); <br />liczba(wynik);<br />}<br /><br />}<br /><br />uint16_t pomiar(uint8_t kanal)<br />{<br />ADMUX = (ADMUX &amp; 0b11111000) | kanal; <br />ADCSRA |= (1&lt;&lt;ADSC);  <br />while(ADCSRA &amp; (1&lt;&lt;ADSC));  <br />return ADCW; <br />}[/syntax]<br /><br />funkcja wyświetlająca wynik na wyświetlaczu LED:<br />[syntax=c]void liczba( uint16_t l)<br />{<br />        cy1=(l/1000)%10;if(!cy1)          cy1=NIC;<br />cy2=(l/100)%10;if((cy1==NIC) &amp;&amp; !cy2) cy2=NIC;<br />cy3=(l/10)%10;if((cy2==NIC) &amp;&amp; !cy3) cy3=NIC;<br />cy4=l%10;<br />}[/syntax]<br /><br />Gdzie może tkwić problem?<br />-mogłem coś skopać w programie,<br />-cudowne właściwości płytki stykowej,<br />-kiepskie zasilanie z USB,<br />-anody wyświetlacza i woltomierz podpięte do PORTU C (nie mam gdzie przenieść anod),<br />-anody wyświetlacza podpięte bezpośrednio do pinów procesora (nie przez tranzystory - diody nie świecą tak mocno),<br />-niedokładność pomiarów spowodowana dzielnikiem napięć &lt;- tolerancja rezystorów<br /><br />Oczywiście używając ADC posłużyłem się schematem zasilania z bloga (kondensatory, dławik są).<br /><br />Co chciałbym osiągnąć:<br />-w miarę dokładne wyniki pomiarów,<br />-pozbycie się źle wyświetlanych liczb,<br />-zmniejszenie częstotliwości wyświetlania wyników - przez to, że zmieniają się tak szybko, źle się odczytuje wartości (próbowałem to osiągnąć preskalerem 128, to za mało, delay'e nie wchodzą w grę)<br /><br />Testując układ w różnych konfiguracjach wychodzi na to, że wyniki bliższe rzeczywistości dostaję przy napięciu odniesienia VCC...<br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6387">sadAVR</a> — 9 lis 2014, o 12:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-11-04T11:41:52+01:00</updated>
<published>2014-11-04T11:41:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102293#p102293</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102293#p102293"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102293#p102293"><![CDATA[
Tak maska &quot;zasłania&quot; piny które nie biorą udziału w multipleksowaniu.<br /><br />Jest to bardzo ważne, np. jeżeli byś miał podłączony czujnik DS18B20. Jak byś mu co chwila podczas transmisji ustawiał pin na &quot;0&quot;, to on by Cie miał głęboko w (Y) i mógłbyś czekać na dane przesyłane od niego, były by tylko errory, pomimo tego, że kod byłby sprawdzony jaki i połączenia.<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (licznik &amp; MASKA_ANODY);[/syntax]<br /><br />Wystarczy tylko ten kod przed if'ami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 4 lis 2014, o 11:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sadAVR]]></name></author>
<updated>2014-11-04T11:37:54+01:00</updated>
<published>2014-11-04T11:37:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102292#p102292</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102292#p102292"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102292#p102292"><![CDATA[
Moje oczy 0_o<br /><br />Postarałem się ogarnąć tę maskę, wyszło mi coś takiego:<br />[syntax=c]ANODY_PORT = (ANODY_PORT | MASKA_ANODY);<br />        //ANODY_PORT = licznik;&lt;-- ta linijka jest już niepotrzebna<br /><br />...ify po ostatniej modyfikacji...<br /><br />ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (licznik &amp; MASKA_ANODY);[/syntax]<br /><br />Czy zmodyfikowałem ją prawidłowo? Program testowy działa poprawnie, jednak chciałbym się upewnić czy jest wszystko ok.<br /><br />I jeszcze jedna kwestia, czy dobrze rozumiem maskowanie:<br />W funkcji przerwania maska nałożona jest po to, żeby to przerwanie nie interesowało się, co dzieje się na innych (nieużywanych w przerwaniu) pinach tego portu. Co z kolei pozwala mi podłączyć WE/WY do wolnych pinów (zupełnie niezwiązane z przerwaniem).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6387">sadAVR</a> — 4 lis 2014, o 11:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-02T19:58:36+01:00</updated>
<published>2014-11-02T19:58:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102048#p102048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102048#p102048"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=102048#p102048"><![CDATA[
<div class="quotetitle">sadAVR napisał(a):</div><div class="quotecontent"><br />O co chodzi? Nie ogarniam :]<br /></div><br /><br />oooo panie - to jak NAJSZYBCIEJ zabierz się za oglądanie poradników z bloga - szczególnie ten ci się przyda <br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2014/03/maskowanie-bajtow-z-przymruzeniem-oka.html" >http://mirekk36.blogspot.com/2014/03/ma ... m-oka.html</a><!-- m --><br /><br />uwierz po nim zrozumiesz o co chodzi z maskowaniem ... a jeśli jeszcze nie to już będziesz przynajmniej wiedział o co konkretnie dopytać<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lis 2014, o 19:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-11-02T16:01:14+01:00</updated>
<published>2014-11-02T16:01:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101985#p101985</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101985#p101985"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101985#p101985"><![CDATA[
Jeśli chodzi o maskowanie, to służy ono ( jak sama nazwa wskazuje  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) do zamaskowania tego co robią Twoje &quot;PIN'y od multipleksowania&quot; względem całego portu na którym to multipleksowanie wykonujesz ( jak by to powiedział góral &quot; co by'k se nie właziły w droge&quot;) Dokładny opis wraz wytłumaczeniem konieczności/celowości stosowania znajdziesz oczywiście w BB. Mój dawny szef mawiał:&quot; wszystko jest napisane tylko wam k... nie chce się czytać <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> &quot;.<br />Jeśli doszedłeś do multipleksownia do gdzieś po drodze musiałeś się o to otrzeć.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 lis 2014, o 16:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-11-02T15:52:25+01:00</updated>
<published>2014-11-02T15:52:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101981#p101981</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101981#p101981"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101981#p101981"><![CDATA[
<div class="quotetitle">sadAVR napisał(a):</div><div class="quotecontent"><br />Działa! Dzięki wielkie.<br /><br />W prawdzie liczby wyświetlały się od tyłu, ale poradziłem sobie z tym zmieniając ify(inne metody nie pomagały)<br />[syntax=c]if(licznik==4)   LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );<br />else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );<br />else if(licznik==16) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );<br />else if(licznik==32) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );[/syntax]<br /><br />Teraz już chodzi poprawinie<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent"><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent">Ciekawe jak pójdzie z maskowaniem<br /></div><br /><br />Na &quot;C3&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span></div><br /> O co chodzi? Nie ogarniam :]</div><br /><br />No if'y to normalne, że trzeba zmienić, więc musisz zrozumieć nasz skrót myślowy, choć rzeczywiście początkujący mógł mieć problem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Co do C3 to zapamiętaj ją, jak będziesz się męczył z maskowaniem w tym przypadku (te przypisanie anod co w/w) może pomóc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 2 lis 2014, o 15:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sadAVR]]></name></author>
<updated>2014-11-02T15:47:31+01:00</updated>
<published>2014-11-02T15:47:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101978#p101978</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101978#p101978"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101978#p101978"><![CDATA[
Działa! Dzięki wielkie.<br /><br />W prawdzie liczby wyświetlały się od tyłu, ale poradziłem sobie z tym zmieniając ify(inne metody nie pomagały)<br />[syntax=c]if(licznik==4)   LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );<br />else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );<br />else if(licznik==16) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );<br />else if(licznik==32) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );[/syntax]<br /><br />Teraz już chodzi poprawinie<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent">Ciekawe jak pójdzie z maskowaniem<br /></div><br /><br />Na &quot;C3&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span></div><br /> O co chodzi? Nie ogarniam :]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6387">sadAVR</a> — 2 lis 2014, o 15:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-11-02T15:43:19+01:00</updated>
<published>2014-11-02T15:43:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101972#p101972</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101972#p101972"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101972#p101972"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Ciekawe jak pójdzie z maskowaniem<br /></div><br /><br />Na &quot;C3&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 2 lis 2014, o 15:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-11-02T15:41:29+01:00</updated>
<published>2014-11-02T15:41:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101970#p101970</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101970#p101970"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101970#p101970"><![CDATA[
<div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent"><br />Poprawie trochę kolegę kicajek Nie doczytał pewnie, że masz pierwszy wyświetlacz na PC5, więc:.....<br /></div><br />Fakt, nie doczytałem. Co prawda z przypisaniem PIN'ów w multipleksowaniu istnieje dowolność, ale tu wystąpiło przesunięcie wraz z puszczeniem pod prąd  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Ciekawe jak pójdzie z maskowaniem  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 lis 2014, o 15:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-11-02T15:26:42+01:00</updated>
<published>2014-11-02T15:26:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101964#p101964</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101964#p101964"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101964#p101964"><![CDATA[
Poprawie trochę kolegę <strong>kicajek</strong><br /><br />Nie doczytał pewnie, że masz pierwszy wyświetlacz na PC5, więc:<br /><br />[syntax=c]ISR(TIMER2_COMP_vect)<br />{<br />        static uint8_t licznik = 32;               // zmienna do przełączania kolejno anod wyrwietlacza<br />....<br />....<br />...<br />        licznik &gt;&gt;= 1;                                  // przesunięcie zawartości bitów licznika o 1 w prawo<br />        if(licznik &lt; 4) licznik = 32;              // jeśli licznik jest mniejszy niż 4 to ustaw na 32 <br /><br />}[/syntax]<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 2 lis 2014, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sadAVR]]></name></author>
<updated>2014-11-02T15:23:38+01:00</updated>
<published>2014-11-02T15:23:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101962#p101962</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101962#p101962"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101962#p101962"><![CDATA[
Fakt, popełniłem błąd przy pisaniu, już poprawiam:<br />Katody podłączyłem do pinów PD1...PD7 w kolejności a,b,c,d...dp, a anody do PC5...PC2, gdzie PC5 to wyświetlacz nr1.<br />W podłączeniu nic się nie zmieniło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6387">sadAVR</a> — 2 lis 2014, o 15:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-11-02T15:20:18+01:00</updated>
<published>2014-11-02T15:20:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101959#p101959</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101959#p101959"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101959#p101959"><![CDATA[
<div class="quotetitle">sadAVR napisał(a):</div><div class="quotecontent"><br />Katody podłączyłem do pinów PD1...PD7 w kolejności a,b,c,d...dp, a anody do PD5...PD2, gdzie PD5 to wyświetlacz nr1.<br /></div><br /><br />Bądź tu mądry i pisz wiersze :/ <br />Dla mnie tu musiała by zachodzić jakaś multipleksowana multipleksacja ;(<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 2 lis 2014, o 15:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-11-02T15:10:51+01:00</updated>
<published>2014-11-02T15:10:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101956#p101956</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101956#p101956"/>
<title type="html"><![CDATA[Re: 03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101956#p101956"><![CDATA[
Witam<br />Nie te PIN'y:<br />[syntax=c]ISR(TIMER2_COMP_vect)<br /><br />{<br /><br />        static uint8_t licznik=4;               // zmienna do przełączania kolejno anod wyrwietlacza<br />....<br />....<br />...<br /> <br />        licznik &lt;&lt;= 1;                                  // przesunięcie zawartości bitów licznika o 1 w lewo<br /><br />        if(licznik&gt;32) licznik = 4;              // jeśli licznik większy niż 32 to ustaw na 4 <br /><br />}[/syntax]<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 lis 2014, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sadAVR]]></name></author>
<updated>2014-11-02T15:25:17+01:00</updated>
<published>2014-11-02T12:11:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101935#p101935</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101935#p101935"/>
<title type="html"><![CDATA[03_Multi_LED problem z dopasowaniem do uC Atmega8a]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9065&amp;p=101935#p101935"><![CDATA[
Witam!<br /><br />Potrzebuję porady dotyczącej wyświetlacza LED 4x7segmentów.<br /><br />Staram się ogarnąć temat tak jak w książce, jednak z kilkoma małymi modyfikacjami.<br /><br />Główną różnicą jest schemat połączenia wyświetlacza. Nie użyłem tranzystorów, co mi ogranicza plątaninę przewodów na płytce (segmenty świecą trochę słabiej - wersja testowa).<br />Dodatkowo takie podłączenie wymusza <span style="text-decoration: underline">ustawienie stanu wysokiego na anodzie i niskiego na katodzie, żeby segment się zaświecił</span>.<br /><br />Katody podłączyłem do pinów PD1...PD7 w kolejności a,b,c,d...dp, a anody do PC5...PC2, gdzie PC5 to wyświetlacz nr1. //poprawiłem literówkę<br /><br />Zmodyfikowany kod wygląda następująco:<br /><br />main.c<br />[syntax=c]#include &lt;avr/io.h&gt;// dołączenie głównego systemowego  pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br />#include &quot;d_led.h&quot;// dołączenie naszego pliku nagłówkowego (obsługa LED)<br /><br />int main(void)<br />{<br />// ****** inicjalizacja *********<br />d_led_init();   // inicjalizacja wyświetlacza multipleksowanego<br /><br />// testowa inicjalizacja zmiennych oraz liczb mających się wyświetlać na wyrw. LED<br />cy1=3;<br />cy2=4;<br />cy3=1;<br />cy4=7;<br />//_delay_ms(500);<br /><br />sei();// włączenie globalnego zezwolenia na przerwania<br /><br />uint16_t licz=6000;<br />uint8_t d1,d2,d3,d4;<br /><br />//**********************  pętla główna<br />while(1)<br />{<br />licz--;<br /><br />d1=licz/1000;<br /><br />if(d1) cy1=d1;<br />else cy1=NIC;<br /><br />d2=(licz-(d1*1000))/100;<br /><br />if(d2) cy2=d2;<br />else cy2=(licz&gt;999)?0:NIC;<br /><br />d3=(licz-(d1*1000)-(d2*100))/10;<br /><br />if(d3) cy3=d3;<br />else cy3=(licz&gt;99)?0:NIC;<br /><br />d4=(licz-(d1*1000)-(d2*100)-(d3*10));<br /><br />cy4=d4;<br /><br />_delay_ms(1000);<br />//if(licz&gt;9999) licznik=0;<br />if(!licz) licz=6000;<br />}<br />}[/syntax]<br /><br /><br />Zmiany w kodzie, które dokonałem to:<br />d_led.h<br />-w definicjach portów i pinów wybrałem odpowiednie porty (według mojego podłączenia)<br />-ustaliłem anody na odpowiednich pinach<br />-nie ruszałem definicji segmentów, powinienem?<br /><br />d_led.c:<br />-w inicjalizacji wyświetlacza zmieniłem wygaszenie anod stanem 0, a nie 1<br />-zmiana ustawień timerów, mam nadzieję, że zrobiłem to poprawnie (nie mam pewności)<br />-ustawienie poprawnej (mam nadzieję) definicji przerwania ISR(TIMER2_COMP_vect)<br />-zrezygnowałem z mask (muszę do nich dojrzeć w kolejnej wersji programu) i usunąłem negację dla ANODY_PORT = licznik zamiast ANODY_PORT = ~licznik<br /><br />REZULTAT DZIAŁANIA PROGRAMU:<br />Zaraz po uruchomieniu uC następuje odliczanie na segmentach 3 i 4, wygląda tak:<br />99<br />89<br />79 itd...<br /><br />Natomiast wyłączenie pętli z kompilacji nie powoduje zapalenia się stanu początkowego, nie świeci się nic.<br /><br />Tak się we wszystkim poplątałem, że już nie wiem jak to naprawić...<br /><br />Pozdrawiam.<br /><span style="color: #FF0000">Nie publikujemy kodów bibliotek, dopuszczalne jest publikowanie pętli głównej oraz  wycinków zawierających zmiany</span><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 32 minutach ]</span></strong><br /><br />Cały program razem z bibliotekami jest dostępny tutaj: <!-- m --><a class="postlink" href="http://atnel.pl/uaktualnienia-programow-do-dvd.html" >http://atnel.pl/uaktualnienia-programow-do-dvd.html</a><!-- m --> dlatego pozwoliłem sobie na umieszczenie całości, żeby było bardziej czytelnie.<br /><br />Ok, w takim razie same zmiany:<br /><br />d_led.c<br />[syntax=c]void d_led_init(void)<br />{<br />LED_DATA_DIR = 0xFF;   // wszystkie piny portu C jako WYJŚCIA(katody)<br />LED_DATA = 0xFF;// wygaszenie wszystkich katod – stan wysoki<br />ANODY_DIR |= CA1 | CA2 | CA3 | CA4;// 4 piny portu A jako WYJŚCIA (anody wyświetlaczy)<br />//ANODY_PORT |= CA1 | CA2 | CA3  | CA4;// wygaszenie wszystkich wyświetlaczy - anody &lt;-zmiana na rzecz kolejnych linijek<br />ANODY_PORT &amp;= ~CA1;<br />ANODY_PORT &amp;= ~CA2;<br />ANODY_PORT &amp;= ~CA3;<br />ANODY_PORT &amp;= ~CA4;<br /><br />// ustawienie TIMER0<br />TCCR2 |=(1&lt;&lt;WGM21);// tryb CTC<br />TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21) | (1&lt;&lt;CS20);// preskaler = 1024<br />OCR2 = 39;// dodatkowy podział przez 39 (rej. przepełnienia)<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br />}[/syntax]<br /><br />oraz:<br />[syntax=c]ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br />//ANODY_PORT = (ANODY_PORT | MASKA_ANODY);// wygaszenie wszystkich wyświetlaczy &lt;--zrezygnowalem (chwilowo) na rzecz kolejnego rozkazu<br />ANODY_PORT = licznik; //USUNALEM NEGACJE, U MNIE 1 ZAPALA WYSWIETLACZ<br /><br />/*<br />        ify pozostaly bez zmian, tego fragmentu nie zamiesczczam<br />        */<br /><br />//ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; MASKA_ANODY);// cykliczne przełączanie kolejnej anody w każdym przerwaniu &lt;-zrezygnowalem<br /><br />// operacje cyklicznego przesuwania bitu zapalającego anody w zmiennej licznik<br />licznik &lt;&lt;= 1;// przesunięcie zawartości bitów licznika o 1 w lewo<br />if(licznik&gt;8) licznik = 1;// jeśli licznik większy niż 8 to ustaw na 1<br />}[/syntax]<br /><br />d_led.h &lt;-zmiany na portach i pinach<br />[syntax=c]// definicje portów i pinów wyświetlacza używanych dla ułatwienia w programie jako stałe preprocesora<br />#define LED_DATA    PORTD// port z podłączonymi segmentami<br />#defineLED_DATA_DIR    DDRD// rejestr kierunku portu katod wyświetlaczy<br />#define ANODY_PORT PORTC// port z podłączonymi anodami- 4 bity najmłodsze<br />#define ANODY_DIR DDRC        // rejestr kierunku portu anod wyświetlaczy<br /><br /><br />#define CA1 (1&lt;&lt;PC5)// CA1 oznacza bit nr.0 portu C<br />#define CA2 (1&lt;&lt;PC4)// CA2 oznacza bit nr.1 portu C<br />#define CA3 (1&lt;&lt;PC3)// CA3 oznacza bit nr.2 portu C<br />#define CA4 (1&lt;&lt;PC2)// CA4 oznacza bit nr.3 portu C[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6387">sadAVR</a> — 2 lis 2014, o 12:11</p><hr />
]]></content>
</entry>
</feed>