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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-11-28T22:24:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=16885&amp;mode</id>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-11-28T22:24:10+01:00</updated>
<published>2016-11-28T22:24:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175900#p175900</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175900#p175900"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175900#p175900"><![CDATA[
No to kliknij sobie na BOOST FLASH OFF, by zmieniło się na BOOST FLASH ON.<br />Następnie musisz zrobić Clean projektu i Build projektu.<br />Klikasz w Eclipsie prawym przyciskiem myszy na folder twojego projektu i klikasz na Clean Project.<br />Następnie kompilujesz.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />A żeby nie było, że się nie da, to proszę, wgraj sobie ten wsadzik do twojej ATtiny2313:<br />Multi_LED.zip<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 28 lis 2016, o 22:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-11-28T22:06:55+01:00</updated>
<published>2016-11-28T22:06:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175894#p175894</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175894#p175894"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175894#p175894"><![CDATA[
Jeśli jeszcze nie używasz to zainstaluj sobie na początek program Eclipse Gadget:<br /><a href="http://atnel.pl/eclipse-gadget.html"  class="postlink">http://atnel.pl/eclipse-gadget.html</a><br />Bardzo przydatny program, gorąco polecam. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Masz w nim opcję: BOOST FLASH.<br />Jak z niej skorzystasz (BOOST FLASH ON) to twój program się zmieści. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Sprawdź!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 28 lis 2016, o 22:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-11-28T21:54:54+01:00</updated>
<published>2016-11-28T21:54:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175888#p175888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175888#p175888"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175888#p175888"><![CDATA[
A jaki poziom optymalizacji masz ustawiony?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 28 lis 2016, o 21:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2016-11-28T21:05:50+01:00</updated>
<published>2016-11-28T21:05:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175876#p175876</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175876#p175876"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175876#p175876"><![CDATA[
<div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />zajęte ok 31% pamięci i niewiele procent flash.<br /></div><br /><div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />że program zwiększył swój rozmiar o ponad 70% co przekracza dostępna pamięć na 108,5% zaś flash mamy w normie na 28,9%<br /></div><br /><br />Tak się zastanawiam, czy przypadkiem czegoś nie pomyliłeś. Tak ogólnie mówiąc (w uproszczeniu), w pamięci flash znajduje się program, w pamięci RAM dane, zmienne. <br /><br />Czego Tobie brakuje? Bo wydaje mi się, że pamięci programu (flash), ale z opisu jednoznacznie to nie wynika.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 28 lis 2016, o 21:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-11-26T20:22:59+01:00</updated>
<published>2016-11-26T20:22:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175723#p175723</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175723#p175723"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175723#p175723"><![CDATA[
Witam<br /><div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />wiec tak zanegowałem tablice patrz:  ...i jak zmieniam te wartości to są bzdury gdzie błąd ?<br /></div><br />Sprawę wyświetlacza masz załatwioną, ale przyzwoitość nakazuje wytłumaczyć się ( tzn. mię  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> )<br />Napisałem o zanegowaniu tablic, ale dodatkowo trzeba było też zmienić system sterowania z wsp.K na wsp.A o czym wspominał kolega:<br /><div class="quotetitle">anonimowy napisał(a):</div><div class="quotecontent"><br />...Podstawowa sprawa, anody sterujesz tranzystorami PNP w układzie OE. Układ OE odwraca faze sygnału o 180stopni, dlatego chcąc mieć 1 podajesz na bazę 0, a więc nie: itd.<br /></div> <br />oraz maskowanie.<br />To co zamieściłem działało poprawnie z LED7 wsp.Kat, ale nie podjąłem się zmiany &quot;w ciemno&quot; bez możliwości sprawdzenia na wsp.Anodę<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 26 lis 2016, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2016-11-25T00:49:07+01:00</updated>
<published>2016-11-25T00:49:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175573#p175573</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175573#p175573"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175573#p175573"><![CDATA[
Czyli teraz żeby było &quot;po Twojemu&quot;, bardziej czytelne piszesz tak:<br /><br />[syntax=c]#define SEG_B_ (1&lt;&lt;5)      //tutaj zmiana, tylko dla definicji cyfr<br /> <br /> <br />    // DEFINICJA TABLICY CYFR WYSWIETLACZA<br />    const uint16_t cyfry&#91;&#93; PROGMEM = {<br />                    ~(SEG_A|SEG_B_|SEG_C|SEG_D|SEG_E|SEG_F),                 // 0<br />                    ~(SEG_B_|SEG_C),                                                                 // 1<br />                    ~(SEG_A|SEG_B_|SEG_D|SEG_E|SEG_G),                               // 2<br />                    ~(SEG_A|SEG_B_|SEG_C|SEG_D|SEG_G),                               // 3<br />                    ~(SEG_B_|SEG_C|SEG_F|SEG_G),                                             // 4<br />                    ~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),                               // 5<br />                    ~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),                 // 6<br />                    ~(SEG_A|SEG_B_|SEG_C|SEG_F),                                             // 7<br />                    ~(SEG_A|SEG_B_|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),   // 8<br />                    ~(SEG_A|SEG_B_|SEG_C|SEG_D|SEG_F|SEG_G),                 // 9<br />                    ~SEG_DP,                                                                                // .<br />                    0xFF                                                                                    // NIC (puste miejsce)<br />    };[/syntax]<br /><br />Oczywiście dotychczasowe makro <br />[syntax=c]#define SEG_B (1&lt;&lt;PD2)[/syntax]<br />zostawiasz, dla ustalenia kierunku itd.<br /><br />Acha, i rzutowanie jawne, żebyś znowu nie miał warningów, ale z tym dasz se radę  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br /><br />Mam nadzieje, że po analizie już będziesz wiedział, gdzie leżał problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 25 lis 2016, o 00:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2016-11-25T00:27:00+01:00</updated>
<published>2016-11-25T00:27:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175569#p175569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175569#p175569"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175569#p175569"><![CDATA[
<div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />co radzisz?<br /></div><br /><br />Ja już przyczynę tego zjawiska opisałem post wyżej:<br /><br /><div class="quotetitle">anonimowy napisał(a):</div><div class="quotecontent"><br />Przepraszam, mój błąd, za mało wytłumaczyłem.<br />Popatrz na podłączenie, przedstawione w bitach:<br /><br />PORTB 0b10011111    <br />PORTD 0b01000100<br /><br />Widać wyraźnie, bit 2 pokrywa się w obu portach. Dlatego też zrobiłem taki chwyt, że przeniosłem go w miejsce wolnego bitu 5 dla zapisu znaków.<br /></div><br /><br />Wstaw sobie na próbę to:<br />[syntax=c]const uint8_t cyfry&#91;&#93; PROGMEM = {<br />                          ~0b11110101,//0<br />  ~0b00100100,//1<br />   ~0b01111001,//2<br />   ~0b00111101,//3<br />   ~0b10101100,//4<br />   ~0b10011101,//5<br />   ~0b11011101,//6<br />   ~0b00110100,//7<br />   ~0b11111101,//8<br />   ~0b10111101,//9<br />                           ~0x00000000                                                                                    // NIC (puste miejsce)<br />};[/syntax]<br /><br />Powinno zadziałać, potem możesz to sobie zapisać po swojemu, uwzględniając przeniesienie PD2 na pozycję piątego bitu. <br /><br /><div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />jesteś dobry w te klocki rzekłbym wielki w cudzysłowie tego słowa znaczeniu naprawdę znasz się na rzeczy ...<br /></div><br />Ten kod to pierwsze co mi przyszło na myśl, bez żadnej optymalizacji ani nic, więc niech kolega nie przesadza  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 25 lis 2016, o 00:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2016-11-24T23:52:53+01:00</updated>
<published>2016-11-24T23:52:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175565#p175565</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175565#p175565"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175565#p175565"><![CDATA[
Przepraszam, mój błąd, za mało wytłumaczyłem.<br />Popatrz na podłączenie, przedstawione w bitach:<br /><br />PORTB 0b10011111    <br />PORTD 0b01000100<br /><br />Widać wyraźnie, bit 2 pokrywa się w obu portach. Dlatego też zrobiłem taki chwyt, że przeniosłem go w miejsce wolnego bitu 5 dla zapisu znaków.<br /><br />Ja znaki definiuję z głupiego przyzwyczajenia zawsze binarnie, wtedy o tym pamiętam:<br /><br />[syntax=c]const uint8_t cyfry&#91;12&#93; PROGMEM = {<br />               0b11110101,//0<br />   0b00100100,//1<br />   0b01111001,//2<br />   0b00111101,//3<br />   0b10101100,//4<br />   0b10011101,//5<br />   0b11011101,//6<br />   0b00110100,//7<br />   0b11111101,//8<br />   0b10111101,//9<br />               0x00000000                                                                                    // NIC (puste miejsce)<br />};[/syntax]<br /><br /><br />Żeby nie być gołosłownym, podłączyłem według twojego schematu ( z tym, że wspólna katoda), program z mojego pierwszego postu.<br /><a href="https://obrazkiforum.atnel.pl/3542/18261db843b8bef01499a2f09f10841f.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3542/18261db843b8bef01499a2f09f10841f.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 24 lis 2016, o 23:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-11-24T22:51:32+01:00</updated>
<published>2016-11-24T22:51:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175556#p175556</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175556#p175556"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175556#p175556"><![CDATA[
Witam<br />Wydaje mi się, że przy takim #define segmentów bez dwóch tablic się nie obejdzie.<br />Tu na podstawie Twojego nabazgrałem inną wersję ( tylko dla siebie będziesz musiał zanegować wartości w tablicy bo testowałem to z 7led wsp.Kat.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#define maskB   0b10011111              //wykorzystane piny portu B<br />#define maskB_  0b01100000<br /><br />#define maskD   0b01000100<br />#define maskD_  0b10111011              //wykorzystane piny portu D<br /><br />// DEFINICJA PINÓW<br />#define LED_DATA (1&lt;&lt;PD3)<br />#define LED_TOG PORTD ^= LED_DATA<br /><br />#define CA1 (1&lt;&lt;PB5)<br />#define CA2 (1&lt;&lt;PD4)<br />#define CA3 (1&lt;&lt;PB6)<br /><br />#define SEG_A (1&lt;&lt;PB4)<br />#define SEG_B (1&lt;&lt;PD2)<br />#define SEG_C (1&lt;&lt;PB2)<br />#define SEG_D (1&lt;&lt;PB0)<br />#define SEG_E (1&lt;&lt;PD6)<br />#define SEG_F (1&lt;&lt;PB7)<br />#define SEG_G (1&lt;&lt;PB3)<br />#define SEG_DP (1&lt;&lt;PB1)<br /><br />#define NIC 11<br /><br />// DEFINICJA CYFR WYSWIETLACZA<br />volatile uint8_t CYFRA1;<br />volatile uint8_t CYFRA2;<br />volatile uint8_t CYFRA3;<br /><br />// DEFINICJA TABLICY CYFR WYSWIETLACZA<br />const uint8_t cyfryB&#91;12&#93; PROGMEM = {<br />                (SEG_A|SEG_C|SEG_D|SEG_F),           // 0<br />                (SEG_C),                             // 1<br />                (SEG_A|SEG_D|SEG_G),                 // 2<br />                (SEG_A|SEG_C|SEG_D|SEG_G),           // 3<br />                (SEG_C|SEG_F|SEG_G),                 // 4<br />                (SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),     // 5<br />                (SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),     // 6<br />                (SEG_A|SEG_C|SEG_F),                 // 7<br />                (SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),     // 8<br />                (SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),     // 9<br />                SEG_DP,                                                                                // .<br />                0                                                                                    // NIC (puste miejsce)<br />};<br /><br />const uint8_t cyfryD&#91;12&#93; PROGMEM = {<br />                (SEG_B|SEG_E),     // 0<br />                (SEG_B),           // 1<br />                (SEG_B|SEG_E),     // 2<br />                (SEG_B),           // 3<br />                (SEG_B),           // 4<br />                (0),               // 5<br />                (SEG_E),           // 6<br />                (SEG_B),           // 7<br />                (SEG_B|SEG_E),     // 8<br />                (SEG_B),           // 9<br />                SEG_DP,                                                                                // .<br />                0                                                                                    // NIC (puste miejsce)<br />};<br /><br />int main(void)<br />{// KIERUNEK WYJCIOWY<br />        DDRD |= LED_DATA;                                                                                                               // DIODA DATA<br />        DDRB |= (SEG_A | SEG_C | SEG_D | SEG_F |SEG_G | SEG_DP | CA1 | CA3);    //WYSWIETLACZA<br />        DDRD |= (SEG_B | SEG_E | CA2);                                                                                  //WYSWIETLACZA<br /><br /><br />// USTAWIENIE TIMERA0<br />            TCCR0A |= (1&lt;&lt;WGM01);               // tryb CTC<br />                TCCR0B |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);          // preskaler = 1024<br />                OCR0A = 51;                                                     // odswiezanie 150Hz<br />                TIMSK |= (1&lt;&lt;OCIE0A);                           // zezwolenie na przerwanie CompareMatch<br /><br /><br />// ZEZWOLENIE NA PRZERWANIA<br />                sei();<br /><br />// PĘTLA GŁÓWNA<br /><br />        while(1)<br />                {<br />                LED_TOG;<br />                _delay_ms(500);<br />                CYFRA1 =2;<br />                CYFRA2 =3;<br />                CYFRA3 =4;<br />                }<br />}<br />// PRZERWANIE<br />ISR(TIMER0_COMPA_vect)<br />{<br />        {<br />          static uint8_t licznik=1;                         // zmienna do przełączania kolejno anod wyrwietlacza<br /><br /><br />          PORTB &amp;= ~(CA1 | CA3);<br />          PORTD &amp;= ~CA2;<br /><br />          if(licznik==1){                                   // gdy zapalony wyśw.1 podaj stan zmiennej c1<br /><br />              PORTB = (PORTB &amp; maskB_)|((pgm_read_byte( &amp;cyfryB&#91;CYFRA1&#93;)) &amp; maskB);<br />              PORTD = (PORTD &amp; maskD_)|((pgm_read_byte( &amp;cyfryD&#91;CYFRA1&#93;)) &amp; maskD);<br /><br />                                PORTB |= CA1;                //załączenie wyświetlacza pierwszego<br />                       }<br />          else if(licznik==2){                               // gdy zapalony wyśw.2 podaj stan zmiennej c2<br />          PORTB = (PORTB &amp; maskB_)|((pgm_read_byte( &amp;cyfryB&#91;CYFRA2&#93;)) &amp; maskB);<br />          PORTD = (PORTD &amp; maskD_)|((pgm_read_byte( &amp;cyfryD&#91;CYFRA2&#93;)) &amp; maskD);<br />                                PORTD |= CA2;                //załączenie wyświetlacza drugiego<br />                        }<br />          else if(licznik==3){                               // gdy zapalony wyśw.3 podaj stan zmiennej c3<br />          PORTB = (PORTB &amp; maskB_)|((pgm_read_byte( &amp;cyfryB&#91;CYFRA3&#93;)) &amp; maskB);<br />          PORTD = (PORTD &amp; maskD_)|((pgm_read_byte( &amp;cyfryD&#91;CYFRA3&#93;)) &amp; maskD);<br />                                PORTB |= CA3;                        //załączenie wyświetlacza trzeciego<br />                        }<br /><br />          if(++licznik &gt; 3) licznik = 1;                            // jeśli licznik większy niż 3 to ustaw na 1<br />        }<br />}[/syntax]<br />Edit <br />Pisałem jak pojawił się nowy wpis - ale to też działa  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 24 lis 2016, o 22:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2016-11-24T22:06:38+01:00</updated>
<published>2016-11-24T22:06:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175552#p175552</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175552#p175552"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175552#p175552"><![CDATA[
Podstawowa sprawa, anody sterujesz tranzystorami PNP w układzie OE. Układ OE odwraca faze sygnału o 180stopni, dlatego chcąc mieć 1 podajesz na bazę 0, a więc nie:<br />[syntax=c]PORTD |= CA2;                //załączenie wyświetlacza drugiego[/syntax]<br /><br />Tylko:<br />[syntax=c]PORTD &amp;= ~CA2;                //załączenie wyświetlacza drugiego[/syntax]<br /><br />Dlatego tak ważne jest zawsze umieszczenie schematu.<br /><br />[syntax=c]PORTB &amp;= maskB;                                   //wygaszenie wyswietlaczy podłączone do portu B<br />PORTD &amp;= ~(1&lt;&lt;PD4);                               //wygaszenie wyswietlaczy podłączone do portu D[/syntax]<br /><br />Na odpowiednie:<br />[syntax=c]PORTB |= CA1 | CA3;                                   //wygaszenie wyswietlaczy podłączone do portu B<br />PORTD |= CA2 ;                                        //wygaszenie wyswietlaczy podłączone do portu D[/syntax]<br /><br /><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam<br /><div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent">      PORTB |= (pgm_read_byte( &amp;cyfry[CYFRA1]) &amp; maskB);<br />              PORTD |= ((pgm_read_byte( &amp;cyfry[CYFRA1]) &amp; maskD) |<br />                        (pgm_read_byte( &amp;cyfry[CYFRA1])&gt;&gt;3 &amp; maskD_));<br />                                PORTB |= CA1;                //załączenie wyświetlacza pierwszego<br /></div><br />Troszkę to zakręcone, ale nie wiem czy nie powinno być PORTB <span style="color: #FF0040">=</span> (.....  i  PORTD <span style="color: #FF0040">=</span> ...<br />ponieważ w kolejnych &quot;if(licznik== ...)&quot; dopisujesz poszcz. segmenty <br /><br />Pozdr.</div><br /><br /><br />Nie dopisujesz bo po pierwsze masz else if, a po drugie zmienną licznik zwiększasz tylko na końcu, więc za każdym wejściem w obsługę przerwań wykonują się instrukcję z tylko jednego ifa. A poza tym, na początku obsług przerwań zerujesz wykorzystywane piny portów B i D.<br /><br /><div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />... myślę ze jest coś nie tak z tym maskowaniem ... w przerwaniu ...<br /></div><br /><br />Właśnie przez to że zmieniasz całą zawartość portów (czyli bez OR), bez maskowania pinów, których używasz w innych celach  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 24 lis 2016, o 22:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-11-24T22:51:07+01:00</updated>
<published>2016-11-24T21:19:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175546#p175546</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175546#p175546"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175546#p175546"><![CDATA[
Witam<br /><div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />      PORTB |= (pgm_read_byte( &amp;cyfry[CYFRA1]) &amp; maskB);<br />              PORTD |= ((pgm_read_byte( &amp;cyfry[CYFRA1]) &amp; maskD) |<br />                        (pgm_read_byte( &amp;cyfry[CYFRA1])&gt;&gt;3 &amp; maskD_));<br />                                PORTB |= CA1;                //załączenie wyświetlacza pierwszego<br /></div><br />Troszkę to zakręcone, ale nie wiem czy nie powinno być PORTB <span style="color: #FF0040">=</span> (.....  i  PORTD <span style="color: #FF0040">=</span> ...<br />ponieważ w kolejnych &quot;if(licznik== ...)&quot; dopisujesz poszcz. segmenty <br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 24 lis 2016, o 21:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-24T21:10:11+01:00</updated>
<published>2016-11-24T21:10:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175544#p175544</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175544#p175544"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175544#p175544"><![CDATA[
<div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />podświetliłem myszka wykrzyknik aby odczytać błąd...<br /></div><br /><br />A kilka dni temu były i to chyba ze dwa tego typu tematy<br /><br />podpowiadam zawczasu - poczytaj o domyślnej promocji do int<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/domyslna-promocja-do-typu-int.html" >http://atnel.pl/domyslna-promocja-do-typu-int.html</a><!-- m --><br /><br />i częściej przeglądaj forum bo w tym samym czasie co twój wątek ludzie poruszają jak mówię wręcz IDENTYCZNE zagadnienia ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 24 lis 2016, o 21:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2016-11-24T19:50:18+01:00</updated>
<published>2016-11-24T19:50:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175537#p175537</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175537#p175537"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175537#p175537"><![CDATA[
No widać z tego, że działa ale... sprzęt nie odpowiada programowi.<br />skup się na tym jak masz zdefiniowane znaki i tam szukaj przyczyny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 24 lis 2016, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-11-24T11:23:05+01:00</updated>
<published>2016-11-24T11:23:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175510#p175510</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175510#p175510"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175510#p175510"><![CDATA[
<div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />gotowiec hmm a kto by mi chciał to napisać ...<br /></div><br />No ja właśnie sobie napisałem dla wprawy. Masz rację nię tędy droga, by wkleić ci tutaj pliki źródłowe, bo tak to się niczego nie nauczysz.<br />Postaram się w takim razie napisać ci jak ja podszedłem do realizacji tego proramu.<br />Na początku założyłem sobie, że każdy pin wyświetlacza niezależnie czy to kadoda czy anoda może być podłączony do dowolnego pinu uC.<br />Napisałem więc sobie makra np dla anody pierwszego wyświetlacza:<br />[syntax=c]#define CA1(1&lt;&lt;PB5)<br />#define ANODA_DIR_CA1 DDRB<br />#define ANODA_PORT_CA1PORTB<br />#define CA1_OFFANODA_PORT_CA1 |= CA1<br />#define CA1_ONANODA_PORT_CA1 &amp;= ~CA1[/syntax]<br />I w ten sam sposób dla kolejnych dwóch pozostałych anod.<br /><br />Następnie w ten sam sposób dla ośmiu katod, dla przykładu katoda od segmentu A:<br />[syntax=c]#define SEG_A (1&lt;&lt;PB4)<br />#define SEG_A_DIR DDRB<br />#define SEG_A_PORT PORTB<br />#define SEG_A_OFF SEG_A_PORT |= SEG_A<br />#define SEG_A_ON SEG_A_PORT &amp;= ~SEG_A[/syntax]<br /><br />Następnie zdefiniowałem sobie takie makra dla cyfr od 0 do 9, od 0 do 9 z kropką i jeszcze jedno tzw NIC, czyli wszystkie segmenty wygaszone.<br />Dla przykładu cyfra &quot;2&quot;:<br />[syntax=c]#define CY2 {SEG_A_ON;SEG_B_ON;SEG_D_ON;SEG_E_ON;SEG_G_ON;} //cyfra &quot;2&quot;[/syntax]<br />Wygaszenie wszystkich segmentów wyświetlacza:<br />[syntax=c]#define OFF {SEG_A_OFF;SEG_B_OFF;SEG_C_OFF;SEG_D_OFF;SEG_E_OFF;SEG_F_OFF;SEG_G_OFF;SEG_DP_OFF;}[/syntax]<br /><br />Oczywiście pamiętając o ustawieniu wszystkich pinów jako wyjścia, oraz ustawieniu timera 0 w tryb CTC, przyszedł czas na procedurę obsługi przerwania Compare Match:<br />[syntax=c]ISR(TIMER0_COMPA_vect)<br />{<br />static uint8_t licznik=1;//definicja zmiennej statycznej czyli globalnej na potrzeby multipleksowania wyświetlaczy<br /><br />OFF;//wygaszenie wszystkich katod wyświetlacza<br /><br />switch(licznik) {<br />case 1:<br />CA1_ON;//włączenie wyświetlacza nr1 oraz wyłączenie dwóch pozostałych<br />CA2_OFF;<br />CA3_OFF;<br /><br />CY1;//wyświetlenie cyfry &quot;1&quot;<br />break;<br />case 2:<br />CA1_OFF; <br />CA2_ON; //włączenie wyświetlacza nr2 oraz wyłączenie dwóch pozostałych<br />CA3_OFF;<br /><br />CY2;//wyświetlenie cyfry &quot;2&quot;<br />break;<br />case 3:<br />CA1_OFF;<br />CA2_OFF;<br />CA3_ON;//włączenie wyświetlacza nr3 oraz wyłączenie dwóch pozostałych<br /><br />CY3;//wyświetlenie cyfry &quot;3&quot;<br />break;<br />}<br /><br />if(++licznik&gt;3) licznik = 1;//inkrementacja zmiennej licznik, króra  może przymować wartości 1, 2 oraz 3<br />}[/syntax]<br />W ten sposób zrealizowałem to multipleksowanie w przerwaniu. <br />Kompilujemy, wgrywamy... i naszym oczom powinny się kolejno pojawić cyfry 1,2 oraz 3 na wyświetlaczach LED.<br />Teraz tylko pozostało ci wymyślić sposób na wyświetlanie cyfr na kolejnych wyświetlaczach w zależności od zmiennych globalnych przechowujących cyfry do wyświetlania: uint8_t cy1; uint8_t cy2; uint8_t cy3;<br />Nie będzie to skomplikowane, prawda?<br />Podpowiem ci, że trzeba będzie zastąpić czymś CY1; CY2; oraz CY3; w tym przerwaniu. No właśnie czym?<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 24 lis 2016, o 11:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2016-11-23T23:32:37+01:00</updated>
<published>2016-11-23T23:32:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175497#p175497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175497#p175497"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175497#p175497"><![CDATA[
No dobra, to się trochę pobawimy. Rozwiązań jest na pewno kilka, niekonieczne te będzie najbardziej optymalne.<br /><br />[syntax=c]#define maskB  0b10011111   //wykorzystane piny portu B<br />#define  maskD  0b01000000   //wykorzystane piny portu D<br />#define  maskD_ 0b00000100<br /><br />ISR(TIMER0_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br /><br /><br /><br />PORTB &amp;= maskB;//wygaszenie wyswietlaczy podłączone do portu B<br />PORTD &amp;= ~(1&lt;&lt;PD4);//wygaszenie wyswietlaczy podłączone do portu D<br /><br />        PORTB &amp;= ~maskB;         //wyzerowanie pinów wyjściowych port B<br />        PORTD &amp;= ~(maskD | maskD_);//wyzerowanie pinów wyjściowych port D<br /><br />if(licznik==1){// gdy zapalony wyśw.1 podaj stan zmiennej c1<br />PORTB |= (pgm_read_byte( &amp;cyfry&#91;cy1&#93;) &amp; maskB);<br />PORTD |= ((pgm_read_byte( &amp;cyfry&#91;cy1&#93;) &amp; maskD) |<br />(pgm_read_byte( &amp;cyfry&#91;cy1&#93;)&gt;&gt;3 &amp; maskD_));<br />PORTB |= 1&lt;&lt;PB5;//załączenie wyświetlacza pierwszego<br />       }<br />else if(licznik==2){// gdy zapalony wyśw.2 podaj stan zmiennej c2<br />PORTB |= (pgm_read_byte( &amp;cyfry&#91;cy2&#93;) &amp; maskB);<br />PORTD |= ((pgm_read_byte( &amp;cyfry&#91;cy2&#93;) &amp; maskD) |<br />(pgm_read_byte( &amp;cyfry&#91;cy2&#93;)&gt;&gt;3 &amp; maskD_));<br />PORTD |= 1&lt;&lt;PD4;//załączenie wyświetlacza drugiego<br />}<br />else if(licznik==3){// gdy zapalony wyśw.3 podaj stan zmiennej c3<br />PORTB |= (pgm_read_byte( &amp;cyfry&#91;cy3&#93;) &amp; maskB);<br />PORTD |= ((pgm_read_byte( &amp;cyfry&#91;cy3&#93;) &amp; maskD) |<br />(pgm_read_byte( &amp;cyfry&#91;cy3&#93;)&gt;&gt;3 &amp; maskD_));<br />PORTB |= 1&lt;&lt;PB6;//załączenie wyświetlacza trzeciego<br />}<br /><br /><br /><br />if(++licznik &gt; 3) licznik = 1;// jeśli licznik większy niż 3 to ustaw na 1<br />}[/syntax]<br />I oczywiście dało by się jeszcze uprościć, np korzystając z tego, że cały port B jest wykorzystany do wyświetlacza to na początku wpisać PORTB = 0 i potem wpisywać do niego bez OR-a, chciałem, żebyś zobaczył jak to ogólnie zrealizować przy takim pomieszaniu, gdzie powiedzmy pod PB5 i PB5 mamy podłączone coś innego niż wyświetlacz.<br /><br />Z powodu później pory mogłem coś namieszać, więc przeanalizuj sobie wcześniej ten kod.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 23 lis 2016, o 23:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jony15]]></name></author>
<updated>2016-11-23T22:56:17+01:00</updated>
<published>2016-11-23T22:56:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175493#p175493</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175493#p175493"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175493#p175493"><![CDATA[
Też tak kiedyś podłączyłem wyświetlacz. Napisz małą funkcję której argumentem jest uint8_t - to co chcesz pokazać na wyświetlaczu ( katodach ) anody sterujesz oddzielnie. funkcja ta sprawdza każdy bit uint8_t ( argumentu ) i zależnie od stanu &quot;zapala&quot; odpowiednią katodę na wyświetlaczu. Np bit 0 == 1 to katoda_segment_A = zapalona.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2183">jony15</a> — 23 lis 2016, o 22:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-11-23T21:31:26+01:00</updated>
<published>2016-11-23T21:31:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175479#p175479</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175479#p175479"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175479#p175479"><![CDATA[
Witam<br />Jak już jechać to można np.:<br />[syntax=c]switch (cyfra) {<br /><br />case 0:<br />a_1;<br />b_1;<br />c_1;<br />d_1;<br />e_1;<br />f_1;<br />g_0;<br /><br />break;<br /><br />case 1:<br />a_0;<br />b_1;<br />c_1;<br />d_0;<br />e_0;<br />f_0;<br />g_0;<br /><br />break;<br /><br />case 2:<br />a_1;<br />b_1;<br />c_0;<br />d_1;<br />e_1;<br />f_0;<br />g_1;<br /><br />break;<br />...<br />...<br />...[/syntax]<br />a #define segmentów napisać w.g Twoich portów np.: #define a_1 PORTA |= (1&lt;&lt; PA1) tylko to takie...<br /><br /><div class="quotetitle">anshar napisał(a):</div><div class="quotecontent"><br />Możesz pokazać schemat?<br /></div><br />Podejrzewam, że nic nad to co już jest się nie pojawi  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 23 lis 2016, o 21:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-23T20:44:33+01:00</updated>
<published>2016-11-23T20:44:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175473#p175473</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175473#p175473"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175473#p175473"><![CDATA[
<div class="quotetitle">DeTronix napisał(a):</div><div class="quotecontent"><br />a nie tak jak u mnie trochę tu trochę tam...<br /></div><br />Teraz zrozumiesz dlaczego łatwiej gdy segmenty są na jednym porcie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... a ty zrobiłeś sobie ARMAGEDON ... i z tego co piszesz to masz przede wszystkim problem jak mi się wydaje w ogóle z generatorem cyfr ... <br /><br />Jednym słowem zrobiłeś sobie koszmarka hardcora <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale może i dobrze - jak to ogarniesz programowo - a na pewno kiedyś ogarniesz - TO DOPIERO nabierzesz doświadczenia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 lis 2016, o 20:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-11-23T20:38:53+01:00</updated>
<published>2016-11-23T20:38:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175472#p175472</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175472#p175472"/>
<title type="html"><![CDATA[Re: Wybór portów w ATtiny2313A a wyświetlacz 7-segmentowy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16885&amp;p=175472#p175472"><![CDATA[
Możesz pokazać schemat? <br />Oczekujesz podpowiedzi czy gotowego rozwiązania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 23 lis 2016, o 20:38</p><hr />
]]></content>
</entry>
</feed>