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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-03-23T21:22:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=3&amp;t=14936&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-03-23T21:22:25+01:00</updated>
<published>2016-03-23T21:22:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156888#p156888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156888#p156888"/>
<title type="html"><![CDATA[Re: Multi_Led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156888#p156888"><![CDATA[
ok nie zauważyłem tego wygaszania na początku ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 mar 2016, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-03-23T17:46:50+01:00</updated>
<published>2016-03-23T17:46:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156863#p156863</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156863#p156863"/>
<title type="html"><![CDATA[Re: Multi_Led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156863#p156863"><![CDATA[
Powiem szczerze że mi to działa dobrze a co do warunków if <br /><br />        [syntax=c]ANODY_PORT |= CA1 | CA2 | CA3  | CA4;   // wygaszenie wszystkich wyświetlaczy[/syntax]<br /><br />przecież przed każdym wejściem w przerwanie ustawiam stan wysoki na wszystkich anodach dopiero po spełnieniu warunku w if ustawia stan niski na tej co warunek spełniony. Przynajmniej ja to tak rozumiem, a co do maskowania bitów dzięki Pana poradnikowi zrozumiałem to i nawet była trzecia modyfikacja tylko ona też nie pozwalała na ustawianie dowolnych pinów w procesorze <br /><br />   [syntax=c]ISR(TIMER0_COMP_vect)<br />    {<br />            static uint16_t licznik=16;               // zmienna do przełączania kolejno anod wyrwietlacza<br />     <br />            ANODY_PORT = (ANODY_PORT &amp; 0x0F);       // wygaszenie wszystkich wyświetlaczy<br />     <br />     <br />            if(licznik==16)          LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );        // gdy zapalony wyśw.1 podaj stan zmiennej c1<br />            else if(licznik==32) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );    // gdy zapalony wyśw.2 podaj stan zmiennej c2<br />            else if(licznik==64) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );    // gdy zapalony wyśw.3 podaj stan zmiennej c3<br />            else if(licznik==128) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );    // gdy zapalony wyśw.4 podaj stan zmiennej c4<br />     <br />            ANODY_PORT = (ANODY_PORT &amp; 0x0F) | (~licznik &amp; 0xF);                   // cykliczne przełączanie kolejnej anody w każdym przerwaniu<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 />     <br />            if(licznik&gt;128) licznik = 16;              // jeśli licznik większy niż 128 to ustaw na 16<br />    }[/syntax]<br /><br />anody były podłączone do poru c piny od pc4 do pc7 i to też działało, ale nie mogłem bez większych zmian w kodzie modyfikować tych pinów. Z tond ten pomysł przerobienia tego tak.  Pytanie wzieło się z chęci zrozumienia tego zagadnienia .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 23 mar 2016, o 17:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-03-23T15:54:39+01:00</updated>
<published>2016-03-23T15:54:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156854#p156854</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156854#p156854"/>
<title type="html"><![CDATA[Re: Multi_Led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156854#p156854"><![CDATA[
<div class="quotetitle">tonygryps napisał(a):</div><div class="quotecontent"><br />czy moja modyfikacja jest prawidłowa bo wydaje mi się że dzięki niej będę mógł wykorzystać dowolny pin portu c.<br /></div><br />A powiedz czy nie prościej sprawdzić na żywym organizmie ? .... moim zdaniem prościej i więcej byś się nauczył<br /><br />ale jak pytasz ... to zastanów się ... co ci da po każdym IF'ie po przecinku aktywowanie zerem anody jeśli inne nie zmienią stanu, po pierwszym przelocie - będą świecić wszystkie<br /><br />warto robić to tą linią: <br /><br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (~licznik &amp; 0x0F);                   // cykliczne przełączanie kolejnej anody w każdym przerwaniu[/syntax]<br /><br />poczytaj albo też obejrzyj mój poradnik o MASKOWANIU, bo widać, że tego nie do końca jeszcze rozumiesz i próbujesz uciekać od tematu zamiast starać się to właśnie zrozumieć i zmodyfikować<br /><br />oczywiście można też inaczej - np zapalać anody metodą tablicową ale i tak bez maskowania się nie obejdzie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 mar 2016, o 15:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-03-23T13:37:28+01:00</updated>
<published>2016-03-23T13:37:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156837#p156837</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156837#p156837"/>
<title type="html"><![CDATA[Re: Multi_Led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156837#p156837"><![CDATA[
Bardzo ładnie panie kolego , moje gratulacje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Teraz będziesz mógł wstawiać co się da i jak <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />a co ważniejsze wie kolega gdzie wyszukiwać zasady danych działów i ważniejsze zasady forum <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tym tez sposobem witamy i zapraszamy do wspólnej zabawy z elektroniką<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 23 mar 2016, o 13:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-03-23T13:17:47+01:00</updated>
<published>2016-03-23T13:17:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156836#p156836</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156836#p156836"/>
<title type="html"><![CDATA[Re: Multi_Led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156836#p156836"><![CDATA[
To może podpowiesz gdzie szukać aby się dowiedzieć jak prawidłowo wkleić.<br />tak miało być ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 23 mar 2016, o 13:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-03-23T13:08:22+01:00</updated>
<published>2016-03-23T13:08:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156834#p156834</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156834#p156834"/>
<title type="html"><![CDATA[Re: Multi_Led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156834#p156834"><![CDATA[
<strong><span style="color: #FF0040">Ponieważ jak kol. napisał jest poczatkujący <br />to postu nie usunę , ale proszę szukać jak prawidłowo <br />wkleić od na forum i to poprawić ....</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 23 mar 2016, o 13:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-03-23T13:22:40+01:00</updated>
<published>2016-03-23T12:52:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156831#p156831</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156831#p156831"/>
<title type="html"><![CDATA[Multi_Led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14936&amp;p=156831#p156831"><![CDATA[
Witam ponieważ  jestem początkującym i przeczytałem książkę Pana Mirka postanowiłem pobawić się tymi kodami z płyty w sensie po modyfikować je posprawdzać jak to działa itp. obecnie interesuje się projektem multi_led i mam pytanie o kod w obsłudze przerwania w pliku d_led.c<br />[syntax=c]ISR(TIMER0_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br />ANODY_PORT = (ANODY_PORT &amp; 0xF0);// wygaszenie wszystkich wyświetlaczy<br /><br /><br />if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );// gdy zapalony wyśw.1 podaj stan zmiennej c1<br />else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );// gdy zapalony wyśw.2 podaj stan zmiennej c2<br />else if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );// gdy zapalony wyśw.3 podaj stan zmiennej c3<br />else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );// gdy zapalony wyśw.4 podaj stan zmiennej c4<br /><br />ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (~licznik &amp; 0x0F);// cykliczne przełączanie kolejnej anody w każdym przerwaniu<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 /><br />if(licznik&gt;8) licznik = 1;// jeśli licznik większy niż 8 to ustaw na 1<br />}[/syntax]<br />otóż wszystko działa poprawnie tylko jest pewien problem jak się chce z korzystać innych pinów anod np PC0,PC4,PC6,PC7.<br />Wiem Pan Mirek nakręcił o tym poradnik nawiasem mówiąc bardzo fajny. Ja zmodyfikowałem ten kod przerwania w ten sposób .<br />[syntax=c]ISR(TIMER0_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br />ANODY_PORT |= CA1 | CA2 | CA3  | CA4;// wygaszenie wszystkich wyświetlaczy<br /><br /><br />if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; ),ANODY_PORT &amp;=~CA1;// gdy zapalony wyśw.1 podaj stan zmiennej c1<br />else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; ),ANODY_PORT &amp;=~CA2;// gdy zapalony wyśw.2 podaj stan zmiennej c2<br />else if(licznik==3) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; ),ANODY_PORT &amp;=~CA3;// gdy zapalony wyśw.3 podaj stan zmiennej c3<br />else if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; ),ANODY_PORT &amp;=~CA4;// gdy zapalony wyśw.4 podaj stan zmiennej c4<br /><br /><br /><br /><br />licznik++;           <br /><br />if(licznik&gt;4) licznik = 1;// jeśli licznik większy niż 4 to ustaw na 1<br />}[/syntax]<br />Dodam że po modyfikacji projekt nadał działa i z tond  moje pytanie czy moja modyfikacja jest prawidłowa bo wydaje mi się że dzięki niej będę mógł wykorzystać dowolny pin portu c.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 23 mar 2016, o 12:52</p><hr />
]]></content>
</entry>
</feed>