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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-04-29T06:35:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1042&amp;mode</id>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-29T06:35:37+01:00</updated>
<published>2012-04-29T06:35:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5960#p5960</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5960#p5960"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5960#p5960"><![CDATA[
Jeszce raz dziękuję za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 29 kwi 2012, o 06:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-04-28T21:59:38+01:00</updated>
<published>2012-04-28T21:59:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5956#p5956</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5956#p5956"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5956#p5956"><![CDATA[
<div class="quotetitle">filipo96 napisał(a):</div><div class="quotecontent"><br />Mnie się wydaje, że jest sens bo w d_led.c używamy słówka PROGMEM przy tablicy cyfry .<br /></div><br /><br />No tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... i bardzo dobrze<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 kwi 2012, o 21:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-28T21:08:06+01:00</updated>
<published>2012-04-28T21:08:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5953#p5953</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5953#p5953"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5953#p5953"><![CDATA[
Mnie się wydaje, że jest sens bo w d_led.c używamy słówka PROGMEM przy tablicy cyfry .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 28 kwi 2012, o 21:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-04-28T20:46:31+01:00</updated>
<published>2012-04-28T20:46:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5951#p5951</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5951#p5951"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5951#p5951"><![CDATA[
#include &lt;avr/pgmspace.h&gt;<br /><br />to trzeba dołączać do tych plików gdzie korzystasz pan z funkcji, które zawarte są w tej bibliotece. Jeśli zatem przenosisz wszystkie linie kodu zawierające funkcje pgm_read_byte() do main.c to jaki sens jest zostawiać tego inkluda w d_led.c ??? chociaż jego pozostawienie i tak nic złego nie narobi przecież <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />druga sprawa - już pisałem skoro w pliku d_led.c masz <strong><span style="color: #0040FF"><span style="font-size: 150%; line-height: normal">DEFINICJĘ </span></span></strong>zmiennej tablicowej:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">uint8_t cyfry&#91;&#93; PROGMEM = { ...... }</div><br /><br />no to w pliku nagłówkowym d_led.h, który przecież inkludujesz w main.c możesz dodać <strong><span style="color: #008000"><span style="font-size: 150%; line-height: normal">DEKLARACJĘ </span></span></strong>TEJ ZMIENNEJ tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">uint8_t cyfry&#91;&#93;;</div><br /><br />albo tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">uint8_t cyfry&#91;&#93; PROGMEM;</div><br /><br />to żadna różnica bo to tylko deklaracja.<br /><br /><br />Ale żebyś nie myślał - że taką DEKLARACJĘ można zrobić tylko i wyłącznie w d_led.h - zamiast tego mógłbyś ją zrobić równie dobrze w main.c ..... tyle że to nie byłoby takie logiczne jeśli chodzi o cały projekt rozumiesz ? ponieważ ona pochodzi jakby z plików d_led.*<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 kwi 2012, o 20:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-28T17:35:16+01:00</updated>
<published>2012-04-28T17:35:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5939#p5939</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5939#p5939"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5939#p5939"><![CDATA[
Dziękuję.<br />Deklarację przenosiłem, ale zapomniałem, że w taki razie w main.c też muszę dołączyć<br />[syntax=c]<br />#include &lt;avr/pgmspace.h&gt;[/syntax]<br />Jeszcze raz dobrze zrozumiałem, że pgmspace.h mam zostawić w d_led.c dopisać do main.c i zostawić PROGMEM przy tablicy?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 28 kwi 2012, o 17:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-04-28T17:07:12+01:00</updated>
<published>2012-04-28T17:07:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5936#p5936</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5936#p5936"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5936#p5936"><![CDATA[
Panie kolego kochany <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> autorze .... przecież w pliku d_led.c korzystasz z wbudowanych funkcji pgm_read_byte() ..... i spójrz pan na dołączane pliki nagłówkowe w związku z tym w tym pliku ----&gt; widzisz tam przypadkiem:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#include &lt;avr/pgmspace.h&gt;</div><br /><br />więc jak myślisz dlaczego masz błędy że nie rozpoznane jest polecenie pgm_read_byte() w main.c ???? hmmmm bo nie masz dołączonego tego pliku w main.c<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />main.c:(.text+0x58): undefined reference to `pgm_read_byte'<br /></div><br /><br />natomiast jeśli chcesz mieć tablicę widoczną w main.c to wystarczy jej UWAGA!!!! deklarację (czyli ze słówkiem extern) przenieść do d_led.h czyli dodać:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">extern uint8_t cyfry&#91;&#93;;</div><br /><br />i zobacz można to zrobić nawet bez specyfikatora PROGMEM ponieważ chodzi tylko o to żeby zasygnalizować że taka nazwa jak <strong><span style="color: #0040FF">cyfry[]</span></strong> znajduje się gdzieś w całym projekcie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 kwi 2012, o 17:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-28T16:07:12+01:00</updated>
<published>2012-04-28T16:07:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5933#p5933</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5933#p5933"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5933#p5933"><![CDATA[
Jak definicję z extern przeniosłem do d_led.h sypnął mniejszą ilością błędów, ale wtedy ma problem z PROGMEM.<br />Dobrze było by gdyby ta tablica była by jednak zapisana we FLASH-u.<br /><br />**** Build of configuration Release for project 03_Multi_LED ****<br /><br />make all <br />Building file: ../d_led.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;d_led.d&quot; -MT&quot;d_led.d&quot; -c -o&quot;d_led.o&quot; &quot;../d_led.c&quot;<br />Finished building: ../d_led.c<br /> <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o&quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function '__vector_10':<br />../main.c:73: warning: implicit declaration of function 'pgm_read_byte'<br />Finished building: ../main.c<br /> <br />Building target: 03_Multi_LED.elf<br />Invoking: AVR C Linker<br />avr-gcc -Wl,-Map,03_Multi_LED.map -mmcu=atmega32 -o&quot;03_Multi_LED.elf&quot;  ./d_led.o ./main.o   <br />./main.o: In function `__vector_10':<br />main.c:(.text+0x58): undefined reference to `pgm_read_byte'<br />make: *** [03_Multi_LED.elf] Error 1<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 28 kwi 2012, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-28T16:03:34+01:00</updated>
<published>2012-04-28T16:03:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5932#p5932</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5932#p5932"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5932#p5932"><![CDATA[
Dalej to samo.<br /><br />**** Build of configuration Release for project 03_Multi_LED ****<br /><br />make all <br />Building file: ../d_led.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;d_led.d&quot; -MT&quot;d_led.d&quot; -c -o&quot;d_led.o&quot; &quot;../d_led.c&quot;<br />../d_led.c:26: warning: 'cyfry' initialized and declared 'extern'<br />Finished building: ../d_led.c<br /> <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o&quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function '__vector_10':<br />../main.c:73: warning: implicit declaration of function 'pgm_read_byte'<br />../main.c:73: error: 'cyfry' undeclared (first use in this function)<br />../main.c:73: error: (Each undeclared identifier is reported only once<br />../main.c:73: error: for each function it appears in.)<br />make: *** [main.o] Error 1<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 28 kwi 2012, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wrangler]]></name></author>
<updated>2012-04-28T15:56:33+01:00</updated>
<published>2012-04-28T15:56:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5931#p5931</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5931#p5931"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5931#p5931"><![CDATA[
Spróbuj dodać przy definicji tablicy specyfikator <strong>extern</strong>.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=223">Wrangler</a> — 28 kwi 2012, o 15:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-28T15:48:10+01:00</updated>
<published>2012-04-28T15:48:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5930#p5930</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5930#p5930"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5930#p5930"><![CDATA[
Właśnie nie chcę mieć obsługi przerwania w d_led.c, lecz w main.c.<br />Chciałbym to przerwanie wykorzystać do innych rzeczy.<br />Wiem, że są inne, ale chciałbym tak mieć.<br />Chciałbym dowiedzieć się jak dostać się z poziomu main.c do tablicy cyfry w d_led.c.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 28 kwi 2012, o 15:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-04-28T15:15:07+01:00</updated>
<published>2012-04-28T15:15:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5929#p5929</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5929#p5929"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5929#p5929"><![CDATA[
Słuchaj, &quot;wrzuć&quot; procedurę obsługę przerwania z powrotem do pliku d_led.c  bo tam znajduje się zmienna tablicowa cyfry, bo jak masz procedurę obsługi przerwania w main.c to kompilator nie widzi tej zmiennej tablicowej cyfry. <br /><br />Jak to zrobisz to daj znać o efektach ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 28 kwi 2012, o 15:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-28T13:28:55+01:00</updated>
<published>2012-04-28T13:28:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5928#p5928</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5928#p5928"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5928#p5928"><![CDATA[
Tak używam eclipse oto błędy.<br />**** Build of configuration Release for project 03_Multi_LED ****<br /><br />make all <br />Building file: ../d_led.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;d_led.d&quot; -MT&quot;d_led.d&quot; -c -o&quot;d_led.o&quot; &quot;../d_led.c&quot;<br />Finished building: ../d_led.c<br /> <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o&quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function '__vector_10':<br />../main.c:73: warning: implicit declaration of function 'pgm_read_byte'<br />../main.c:73: error: 'cyfry' undeclared (first use in this function)<br />../main.c:73: error: (Each undeclared identifier is reported only once<br />../main.c:73: error: for each function it appears in.)<br />make: *** [main.o] Error 1<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 28 kwi 2012, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-04-28T13:04:07+01:00</updated>
<published>2012-04-28T13:04:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5927#p5927</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5927#p5927"/>
<title type="html"><![CDATA[Re: Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5927#p5927"><![CDATA[
Mam pytanie: czy kolega pobrał sobie aktualizacje kodu źródłowego do multipleksowania wysiwtelacza 7-segmentowego? <br /><br />Jak nie to proszę abyś tutaj zajrzał <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic27.html">topic27.html</a><!-- l -->. <br /><br />Ogólnie to  pokaż jakie komunikaty o błędach daje eclipse(bo rozumiem ze z niego korzystasz...). <br /><br />Pozdrawiam Michał!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 28 kwi 2012, o 13:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[filipo96]]></name></author>
<updated>2012-04-28T13:29:57+01:00</updated>
<published>2012-04-28T12:36:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5926#p5926</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5926#p5926"/>
<title type="html"><![CDATA[Multi_led]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1042&amp;p=5926#p5926"><![CDATA[
Dzień dobry.<br />Zacząłem przerabiać bibliotekę do obsługi wyświetlacza  7 segmentowego do własnych potrzeb.<br />Chciałem zrobić, aby obsługa przerwania timera0 znajdowała się w pliku main.c.<br />Zrobiłem, ale mam problem z błędami.<br />Wydaje mnie się, że jest to problem z odwołaniem się do tablicy cyfry z pliku main. c do pliku d_led.c.<br />Nie wiem jak to wykonać.<br />Proszę o pomoc.<br />[syntax=c]<br />/*<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 />// 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 />// 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 />}<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 &amp; 0xF0);// wygaszenie wszystkich wyświetlaczy<br /><br /><br />if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry[cy1] );// gdy zapalony wyśw.1 podaj stan zmiennej c1<br />else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry[cy2] );// gdy zapalony wyśw.2 podaj stan zmiennej c2<br />else if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry[cy3] );// gdy zapalony wyśw.3 podaj stan zmiennej c3<br />else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry[cy4] );// 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 />if(licznik&gt;8) licznik = 1;// jeśli licznik większy niż 8 to ustaw na 1<br />}<br />[/syntax]<br />[syntax=c]<br />/*<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[] 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 />}<br />[/syntax]<br />[syntax=c]<br />/*<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 PORTD// port z podłączonymi anodami- 4 bity najmłodsze<br />#define ANODY_DIR DDRD// rejestr kierunku portu anod wyświetlaczy<br /><br /><br />#define CA1 (1&lt;&lt;PD0)// CA1 oznacza bit nr.0 portu D<br />#define CA2 (1&lt;&lt;PD1)// CA2 oznacza bit nr.1 portu D<br />#define CA3 (1&lt;&lt;PD2)// CA3 oznacza bit nr.2 portu D<br />#define CA4 (1&lt;&lt;PD3)// CA4 oznacza bit nr.3 portu D<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 />void d_led_init(void);<br /><br />#endif// koniec _d_led_h<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=99">filipo96</a> — 28 kwi 2012, o 12:36</p><hr />
]]></content>
</entry>
</feed>