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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5723&amp;mode</id>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2014-01-29T21:29:47+01:00</updated>
<published>2014-01-29T21:29:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67318#p67318</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67318#p67318"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67318#p67318"><![CDATA[
Kluczowe jest żebyś to dobrze poustawiał:<br />[syntax=c]#define SEG_A (1&lt;&lt;0)<br />#define SEG_B (1&lt;&lt;1)<br />#define SEG_C (1&lt;&lt;2)<br />#define SEG_D (1&lt;&lt;3)<br />#define SEG_E (1&lt;&lt;4)<br />#define SEG_F (1&lt;&lt;5)<br />#define SEG_G (1&lt;&lt;6)<br />#define SEG_DP (1&lt;&lt;7)[/syntax]<br />I do testów lepiej na wszystkich polach wyświetlać te same znaki, jak podałem wcześniej.<br />Możesz wtedy pominąć multipleksację i podłączyć wszystkie anody do plusa (stan niski na bazach).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 29 sty 2014, o 21:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pobem]]></name></author>
<updated>2014-01-29T20:39:25+01:00</updated>
<published>2014-01-29T20:39:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67307#p67307</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67307#p67307"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67307#p67307"><![CDATA[
Ja dawałem na Atmega32. Niech mirek36 się wypowie jak to w końcu ma z nimi być, bo będzie mnie to męczyć w nieskończoność... On jeden wie co sam miał na myśli <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=2564">pobem</a> — 29 sty 2014, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2014-01-29T20:33:49+01:00</updated>
<published>2014-01-29T20:33:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67303#p67303</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67303#p67303"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67303#p67303"><![CDATA[
To już zależy na czym testujesz i jak popodłączasz.<br />Ja to puściłem na Atmega8 więc musiałem pozmieniać porty.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 29 sty 2014, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pobem]]></name></author>
<updated>2014-01-29T20:35:18+01:00</updated>
<published>2014-01-29T20:32:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67302#p67302</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67302#p67302"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67302#p67302"><![CDATA[
No właśnie miałem o tym napisać <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> A co do pomylonych portów to mam rację że są one pomylone? Bo uaktualniony program ma się nijak do informacji w książce.<br /><br />@#ciamciak# masz u mnie pomógł bo gdyby nie twój pomysł ze zmianą programu to bym nie zauważył tych pomylonych portów <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=2564">pobem</a> — 29 sty 2014, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2014-01-29T20:05:28+01:00</updated>
<published>2014-01-29T20:05:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67293#p67293</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67293#p67293"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67293#p67293"><![CDATA[
Jak od komentujesz tamtego WHILE(1), to to już się nie wykona:<br />[syntax=c]uint16_t licznik=6000;<br />        uint8_t d1,d2,d3,d4;<br /> <br />                //**********************  pętla główna<br />                while(1)<br />                {<br />                        licznik--;<br /> <br />                        d1=licznik/1000;<br />                        if(d1) cy1=d1; else cy1=NIC;<br />                        d2=(licznik-(d1*1000))/100;<br />                        if(d2) cy2=d2; else cy2=(licznik&gt;999)?0:NIC;<br />                        d3=(licznik-(d1*1000)-(d2*100))/10;<br />                        if(d3) cy3=d3; else cy3=(licznik&gt;99)?0:NIC;<br />                        d4=(licznik-(d1*1000)-(d2*100)-(d3*10));<br />                        cy4=d4;<br />                        _delay_ms(10);<br />                        if(licznik&gt;9999) licznik=0;                //to było jako komentarz<br />                        if(!licznik) licznik=6000;<br /> <br /> <br /> <br />                }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 29 sty 2014, o 20:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pobem]]></name></author>
<updated>2014-01-29T20:05:59+01:00</updated>
<published>2014-01-29T19:56:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67289#p67289</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67289#p67289"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67289#p67289"><![CDATA[
Mam!!! Strasznie dziwiło mnie to że część kodu jest wyodrębniona jako komentarz. Usunąłem więc // czyli tak to teraz wygląda:[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2010-03-30<br /> *       Autor: Mirosław Kardaś<br /> */<br />#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=1;<br />cy2=2;<br />cy3=3;<br />cy4=4;<br /><br />sei();// włączenie globalnego zezwolenia na przerwania<br /><br /><br /><br />DDRA |= (1&lt;&lt;PA5);                     //to było jako komentarz<br />while(1)                                     //to było jako komentarz<br />{                                              //to było jako komentarz<br />PORTA ^= (1&lt;&lt;PA5);           //to było jako komentarz<br />_delay_ms(1000);                //to było jako komentarz<br />}                                              //to było jako komentarz<br /><br />uint16_t licznik=6000;<br />uint8_t d1,d2,d3,d4;<br /><br />//**********************  pętla główna<br />while(1)<br />{<br />licznik--;<br /><br />d1=licznik/1000;<br />if(d1) cy1=d1; else cy1=NIC;<br />d2=(licznik-(d1*1000))/100;<br />if(d2) cy2=d2; else cy2=(licznik&gt;999)?0:NIC;<br />d3=(licznik-(d1*1000)-(d2*100))/10;<br />if(d3) cy3=d3; else cy3=(licznik&gt;99)?0:NIC;<br />d4=(licznik-(d1*1000)-(d2*100)-(d3*10));<br />cy4=d4;<br />_delay_ms(10);<br />if(licznik&gt;9999) licznik=0;                //to było jako komentarz<br />if(!licznik) licznik=6000;<br /><br /><br /><br />}<br />}[/syntax]<br /><br />Skutkiem tego jest prawie poprawnie działający program. Wyświetlały się cyfry jakie wklepywałem w kodzie ale bez segmentów E,F,G. Jeśli trudne to jest do zrozumienia to mogę wam rozrysować. <br />Sprawdziłem więc połączenia, okazały się ok. Więc patrzę dalej do programu. W pliku d_led.h [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 PORTC// port z podłączonymi segmentami<br />#defineLED_DATA_DIR DDRC// rejestr kierunku portu katod wyświetlaczy<br />#define ANODY_PORT PORTA// port z podłączonymi anodami- 4 bity najmłodsze<br />#define ANODY_DIR DDRA// rejestr kierunku portu anod wyświetlaczy<br /><br /><br />#define CA1 (1&lt;&lt;PA0)// CA1 oznacza bit nr.0 portu C<br />#define CA2 (1&lt;&lt;PA1)// CA2 oznacza bit nr.1 portu C<br />#define CA3 (1&lt;&lt;PA2)// CA3 oznacza bit nr.2 portu C<br />#define CA4 (1&lt;&lt;PA3)// CA4 oznacza bit nr.3 portu C<br /><br />#define MASKA_ANODY (CA1|CA2|CA3|CA4)[/syntax]<br />widać że anody są przypisane do portu C zamiast do A, oraz katody do A zamiast do C. To zupełnie odwrotnie niż zostało zapisane w książce! <br /><br />Oto plik d_led.h z którym wyświetlacze zadziałały bez problemu:<br />[syntax=c]/*<br /> * d_led.h<br /> *<br /> *  Created on: 2010-03-30<br /> *       Autor: Mirosław Kardaś<br /> */<br /><br />#ifndef _d_led_h// dyrektywy zabezpieczające przed wielokrotnym dołączaniem<br />#define _d_led_h// tego samego pliku nagłówkowego jeśli będzie dołączany<br />// w wielu różnych plikach programu<br /><br />// definicje portów i pinów wyświetlacza używanych dla ułatwienia w programie jako stałe preprocesora<br />#define LED_DATA PORTC// port z podłączonymi segmentami<br />#defineLED_DATA_DIR DDRC// rejestr kierunku portu katod wyświetlaczy<br />#define ANODY_PORT PORTA// port z podłączonymi anodami- 4 bity najmłodsze<br />#define ANODY_DIR DDRA// rejestr kierunku portu anod wyświetlaczy<br /><br /><br />#define CA1 (1&lt;&lt;PA0)// CA1 oznacza bit nr.0 portu C<br />#define CA2 (1&lt;&lt;PA1)// CA2 oznacza bit nr.1 portu C<br />#define CA3 (1&lt;&lt;PA2)// CA3 oznacza bit nr.2 portu C<br />#define CA4 (1&lt;&lt;PA3)// CA4 oznacza bit nr.3 portu C<br /><br />#define MASKA_ANODY (CA1|CA2|CA3|CA4)<br /><br />// definicje bitów dla poszczególnych segmentów LED<br />#define SEG_A (1&lt;&lt;0)<br />#define SEG_B (1&lt;&lt;1)<br />#define SEG_C (1&lt;&lt;2)<br />#define SEG_D (1&lt;&lt;3)<br />#define SEG_E (1&lt;&lt;4)<br />#define SEG_F (1&lt;&lt;5)<br />#define SEG_G (1&lt;&lt;6)<br />#define SEG_DP (1&lt;&lt;7)<br /><br />#define NIC 10<br /><br />// same DEKLARACJE zmiennych globalnych na potrzeby wykorzystania ich w innych plikach projektu<br />// przydomek externpowoduje, iż te zmienne będą dostępne we wszystkich modułach, które dołączą plik<br />// d_led.h za pomocą dyrektywy #include<br />extern volatile uint8_t cy1;<br />extern volatile uint8_t cy2;<br />extern volatile uint8_t cy3;<br />extern volatile uint8_t cy4;<br /><br /><br /><br />void d_led_init(void);<br /><br />#endif// koniec _d_led_h[/syntax]<br /><br />A teraz kto chętny aby wytłumaczyć mi dlaczego w pliku main.c kod był wyodrębniony jako komentarz?<br /><br />PS. Pierwotny kod brałem ze strony wydawnictwa z zakładki o aktualizacjach DVD<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2564">pobem</a> — 29 sty 2014, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2014-01-29T17:24:17+01:00</updated>
<published>2014-01-29T17:24:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67245#p67245</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67245#p67245"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67245#p67245"><![CDATA[
8Mhz w zupełności wystarczy, przecież to od ustawienia timera zależy.<br /><br />@pobem<br />Podmień zawartość pętli głównej na coś takiego:<br />[syntax=c]cy1=cy2=cy3=cy4=licznik++;<br />if (licznik==10)licznik=0;<br />_delay_ms(500);[/syntax]<br />I grzeb w portach dotąd aż będzie dobrze (najlepiej rozpisz na kartce piny jeżeli nie masz dokumentacji).<br />Sam sobie przed chwilą odpaliłem ten twój kod na jednym znaku (z powyższą modyfikacją).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 29 sty 2014, o 17:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-01-29T17:15:00+01:00</updated>
<published>2014-01-29T17:15:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67243#p67243</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67243#p67243"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67243#p67243"><![CDATA[
na taktowaniu 8 Mhz będą Ci bzdury się pojawiać daj 12 Mhz...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 29 sty 2014, o 17:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2014-01-29T15:14:31+01:00</updated>
<published>2014-01-29T15:14:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67223#p67223</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67223#p67223"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67223#p67223"><![CDATA[
@OdeOn<br />Poco pull-up na bazie, przecież procek poda tam, albo VCC, albo GND?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 29 sty 2014, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pobem]]></name></author>
<updated>2014-01-29T14:57:39+01:00</updated>
<published>2014-01-29T14:57:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67218#p67218</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67218#p67218"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67218#p67218"><![CDATA[
Dałem 1K i nadal nic. Ale wyświetlacze na moje oko świecą jakoś wyraźniej i bardziej mrugają. A co powiesz o tych fusebitach? Pamietam że dawno temu jak sobie robiłem termometr z gotowego projektu to podobnie miałem i rozwiązaniem były źle zaprogramowane fusebity.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2564">pobem</a> — 29 sty 2014, o 14:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[OdeOn]]></name></author>
<updated>2014-01-29T14:50:25+01:00</updated>
<published>2014-01-29T14:50:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67214#p67214</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67214#p67214"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67214#p67214"><![CDATA[
Jeśli masz to na stykówce to zacznij od 1 k. Jak dasz za mały nic sie nie wyświetli więc jak przy 1 k nie bedzie widać to wiekszy lub ten co z bazy do atmegi mniejszy.<br />Zauważ że jak atmega poda stan niski to oba rezystory tworzą dzielnik i na baze trafia napięcie midzy masa a VCC a powinno wynieść tyle żeby tranzystor się otworzył, a gdy atmega nie podaje masy to ten miedzy emiterem a bazą ma dać potencjał VCC na baze żeby tranzystor nic nie przewodził.<br /><br />taki obrazek na google znalazłem<br /><img src="http://forum.atnel.pl/_obrazki/o/1407/4bb7152b47340770afa952d5f6fd1ea2.gif" alt="Obrazek" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1407">OdeOn</a> — 29 sty 2014, o 14:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pobem]]></name></author>
<updated>2014-01-29T14:43:06+01:00</updated>
<published>2014-01-29T14:43:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67213#p67213</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67213#p67213"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67213#p67213"><![CDATA[
Jaki ten rezystor? 1K?<br /><br />EDIT: co ja piszę co ja piszę przecież wartość już podałeś <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2564">pobem</a> — 29 sty 2014, o 14:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[OdeOn]]></name></author>
<updated>2014-01-29T14:43:13+01:00</updated>
<published>2014-01-29T14:36:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67211#p67211</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67211#p67211"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67211#p67211"><![CDATA[
Bazy tranzystorow podciagnij do VCC czyli miedzy baze a emiter rezystorek. Myśle że 1 kohm będzie OK.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1407">OdeOn</a> — 29 sty 2014, o 14:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pobem]]></name></author>
<updated>2014-01-29T14:23:44+01:00</updated>
<published>2014-01-29T14:23:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67205#p67205</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67205#p67205"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67205#p67205"><![CDATA[
Procek Atmega32<br />Taktowanie zmieniłem dając tylko w ustawieniach projektu 8000000 (tam co się programator wybiera i procesor)<br />A kod to standardowy z Bluebooka.<br />Fusebity po odczytaniu z procesora wyrzuca hfuse=D9 lfuse=E4.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2010-03-30<br /> *       Autor: Mirosław Kardaś<br /> */<br />#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=NIC;<br />cy2=4;<br />cy3=1;<br />cy4=NIC;<br /><br />sei();// włączenie globalnego zezwolenia na przerwania<br /><br /><br /><br />//DDRA |= (1&lt;&lt;PA5);<br />//while(1)<br />//{<br />//PORTA ^= (1&lt;&lt;PA5);<br />//_delay_ms(1000);<br />//}<br /><br />uint16_t licznik=6000;<br />uint8_t d1,d2,d3,d4;<br /><br />//**********************  pętla główna<br />while(1)<br />{<br />licznik--;<br /><br />d1=licznik/1000;<br />if(d1) cy1=d1; else cy1=NIC;<br />d2=(licznik-(d1*1000))/100;<br />if(d2) cy2=d2; else cy2=(licznik&gt;999)?0:NIC;<br />d3=(licznik-(d1*1000)-(d2*100))/10;<br />if(d3) cy3=d3; else cy3=(licznik&gt;99)?0:NIC;<br />d4=(licznik-(d1*1000)-(d2*100)-(d3*10));<br />cy4=d4;<br />_delay_ms(10);<br />//if(licznik&gt;9999) licznik=0;<br />if(!licznik) licznik=6000;<br />}<br />}[/syntax]<br /><br />[syntax=c]/*<br /> * d_led.h<br /> *<br /> *  Created on: 2010-03-30<br /> *       Autor: Mirosław Kardaś<br /> */<br /><br />#ifndef _d_led_h// dyrektywy zabezpieczające przed wielokrotnym dołączaniem<br />#define _d_led_h// tego samego pliku nagłówkowego jeśli będzie dołączany<br />// w wielu różnych plikach programu<br /><br />// definicje portów i pinów wyświetlacza używanych dla ułatwienia w programie jako stałe preprocesora<br />#define LED_DATA PORTA// port z podłączonymi segmentami<br />#defineLED_DATA_DIR DDRA// 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;PC0)// CA1 oznacza bit nr.0 portu C<br />#define CA2 (1&lt;&lt;PC1)// CA2 oznacza bit nr.1 portu C<br />#define CA3 (1&lt;&lt;PC2)// CA3 oznacza bit nr.2 portu C<br />#define CA4 (1&lt;&lt;PC3)// CA4 oznacza bit nr.3 portu C<br /><br />#define MASKA_ANODY (CA1|CA2|CA3|CA4)<br /><br />// definicje bitów dla poszczególnych segmentów LED<br />#define SEG_A (1&lt;&lt;0)<br />#define SEG_B (1&lt;&lt;1)<br />#define SEG_C (1&lt;&lt;2)<br />#define SEG_D (1&lt;&lt;3)<br />#define SEG_E (1&lt;&lt;4)<br />#define SEG_F (1&lt;&lt;5)<br />#define SEG_G (1&lt;&lt;6)<br />#define SEG_DP (1&lt;&lt;7)<br /><br />#define NIC 10<br /><br />// same DEKLARACJE zmiennych globalnych na potrzeby wykorzystania ich w innych plikach projektu<br />// przydomek externpowoduje, iż te zmienne będą dostępne we wszystkich modułach, które dołączą plik<br />// d_led.h za pomocą dyrektywy #include<br />extern volatile uint8_t cy1;<br />extern volatile uint8_t cy2;<br />extern volatile uint8_t cy3;<br />extern volatile uint8_t cy4;<br /><br /><br /><br />void d_led_init(void);<br /><br />#endif// koniec _d_led_h[/syntax]<br /><br />[syntax=c]/*<br /> * d_led.c<br /> *<br /> *  Created on: 2010-03-30<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;// dołączenie głównego systemowego  pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt;// dołączenie pl. nagłówkowego potrzebnego do obsł. przerwań<br />#include &lt;avr/pgmspace.h&gt;// dołączenie pl. nagłówkowego potrzebnego do odczytu<br />// danych zawartych w pamięci programu FLASH<br /><br />#include &quot;d_led.h&quot;// dołączenie naszego pliku nagłówkowego<br />// w nim znajdują się potrzebne tu m.in. definicje preprocesora<br /><br />// definicje zmiennych globalnych przechowujących cyfry do wyświetlania<br />// volatile – ponieważ będą wykorzystywane do odczytu i zapisu zarówno w przerwaniu i programie<br />// głównym. Trzeba więc wyłączyć optymalizację dostępu do nich. (zmienne ulotne)<br />volatile uint8_t cy1;<br />volatile uint8_t cy2;<br />volatile uint8_t cy3;<br />volatile uint8_t cy4;<br /><br /><br /><br />// definicja tablicy zawierającej definicje bitowe cyfr LED<br />uint8_t cyfry&#91;15&#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 />0xFF// NIC (puste miejsce)<br />};<br /><br /><br /><br />// ****** definicja funkcji inicjalizującej pracę z wyświetlaczem multipleksowanym<br />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<br /><br />// ustawienie TIMER0<br />TCCR0 |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024<br />OCR0 = 39;// dodatkowy podział przez 39 (rej. przepełnienia)<br />TIMSK |= (1&lt;&lt;OCIE0);// zezwolenie na przerwanie CompareMatch<br />}<br /><br /><br />// ================= PROCEDURA OBSŁUGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER0_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<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; ~MASKA_ANODY) | (~licznik &amp; MASKA_ANODY);// 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 />if(licznik&gt;8) licznik = 1;// jeśli licznik większy niż 8 to ustaw na 1<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2564">pobem</a> — 29 sty 2014, o 14:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2014-01-29T13:59:56+01:00</updated>
<published>2014-01-29T13:59:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67200#p67200</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67200#p67200"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67200#p67200"><![CDATA[
Dużo napisałeś ale nie dałeś najważniejszego:<br />1. Kod programu.<br />2. Na jaki procek piszesz, czym go taktujesz.<br />3. Schemat.<br />To są bardzo ważne informacje, co z tego że wszystko połączyłeś dobrze jak wystarczy że postawiłeś gdzieś niepotrzebnie od taki znaczek ~ i masz sprawę odwróconą o 180 stopni.<br />Uzupełnij pręciutko post wtedy, na pewno pokonamy problem   <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=122">Rafciu</a> — 29 sty 2014, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-01-29T13:54:59+01:00</updated>
<published>2014-01-29T13:54:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67199#p67199</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67199#p67199"/>
<title type="html"><![CDATA[Re: Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67199#p67199"><![CDATA[
ustawiłeś fusebity? na zew. generator<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 29 sty 2014, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pobem]]></name></author>
<updated>2014-01-29T13:38:50+01:00</updated>
<published>2014-01-29T13:38:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67196#p67196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67196#p67196"/>
<title type="html"><![CDATA[Znów problem z multipleksowaniem LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5723&amp;p=67196#p67196"><![CDATA[
Witam was wszystkich, jako mój pierwszy post na tym forum  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  zawrócę wam głowę moim problemem.<br />Otóż mam wielki problem z multipleksowaniem wyświetlaczy led. Kod i schemat podłączenia mam z BB. Tranzystory to bc556B. Układ zmontowany na płytce stykowej. Wyświetlacze jakie zastosowałem to 2x podwójne z każdym segmentem wyprowadzonym osobno ale połączyłem je tak że wszystkie &quot;A&quot; to jeden pin, wszystkie &quot;B&quot; to kolejny itp. Problem objawia się tak że na wszystkich wyświetlaczach wydać literkę &quot;C&quot; przy czym każdy ze świecących segmentów miga chaotycznie. Zmiana wyświetlanego znaku nic nie daje, cały czas widać to samo. Połączenia wydają się być ok, sprawdzałem je tak: bazy tranzystorów  podłączyłem do masy, i używając programu z książki o miganiu led wpisywałem do źródła kolejno każdy port do którego są podłączone katody-wszystko jest ok, &quot;kreseczki&quot; na każdym wyświetlaczu migały tak jak im kazałem, kolejność segmentów też w porządku. Chcecie coś jeszcze więcej wiedzieć to piszcie, będę starał się z wami jak najlepiej &quot;zgrać&quot; żeby to w końcu pokonać.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2564">pobem</a> — 29 sty 2014, o 13:38</p><hr />
]]></content>
</entry>
</feed>