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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-20T20:49:14+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=12073&amp;mode</id>
<entry>
<author><name><![CDATA[PawelJ.dev]]></name></author>
<updated>2015-06-20T20:49:14+01:00</updated>
<published>2015-06-20T20:49:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132285#p132285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132285#p132285"/>
<title type="html"><![CDATA[Re: Blue Book - Multipleksowanie LED i pamięć FLASH]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132285#p132285"><![CDATA[
Dzięki za szybką i wyczerpującą  odpowiedź odpowiedź. Pozwoli mi ona na uniknięcie niepotrzebnych problemów i stresów w przyszłości.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10284">PawelJ.dev</a> — 20 cze 2015, o 20:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-06-20T20:31:17+01:00</updated>
<published>2015-06-20T20:31:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132284#p132284</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132284#p132284"/>
<title type="html"><![CDATA[Re: Blue Book - Multipleksowanie LED i pamięć FLASH]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132284#p132284"><![CDATA[
Witam.<br /><br />definiując cyfry w pamięci Flash - korzystając z:[syntax=c]const uint8_t cyfry&#91;15&#93; PROGMEM = {<br />                    ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),<br />                    ~(SEG_B|SEG_C),<br />                    ~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),      <br />    itd..[/syntax]<br /><br />i odczytując jej elementy za pomocą:[syntax=c]LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );[/syntax]<br /><br />zajmujesz wprawdzie miejsce w pamięci Flash, ale tylko w niej, natomiast jeśli zrobisz to za pomocą:[syntax=c]uint8_t cyfry&#91;15&#93; = {  ....}[/syntax]<br />to zajmiesz miejsce w pamięci Flash ( na jej wartości początkowe ) i dodatkowo w pamięci RAM ( na samą tablicę ). dodatkowo, nie warto definiować zmiennych tablicowych wewnątrz funkcji, ze względu na to, że cała tablica jest wtedy zmienną automatyczną, wiec jej elementy umieszczane są na stosie. Jeśli już, to opatrzoną specyfikatorem <strong>static</strong>, tak aby &quot;wylądowała w sekcji .bss. Co do szybkości dostępu - w tym wypadku rzecz absolutnie pomijalna, choć zwykle dostęp do pamięci RAM ( w tym wypadku SRAM ) jest szybszy niż do pamięci Flash.<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 20 cze 2015, o 20:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PawelJ.dev]]></name></author>
<updated>2015-06-20T20:03:09+01:00</updated>
<published>2015-06-20T20:03:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132278#p132278</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132278#p132278"/>
<title type="html"><![CDATA[Blue Book - Multipleksowanie LED i pamięć FLASH]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12073&amp;p=132278#p132278"><![CDATA[
Witam Wszystkich,<br /><br />To mój pierwszy post, więc proszę o wyrozumiałość, jeżeli nie zbyt dobrze uda mi się wytłumaczyć, o co mi chodzi...<br /><br />W książce (Blue Book) jest przykład z multipleksowaniem na podstawie wyświetlacza LED. Tablica z cyframi:<br /><br />[syntax=c]const uint8_t cyfry&#91;15&#93; PROGMEM = {<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),<br />~(SEG_B|SEG_C),<br />~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),<br />itd..[/syntax]<br />została zapisana w pamięci FLASH za pomocą biblioteki <strong>pgmspace </strong>(parametr <strong>PROGMEM</strong>), a następnie odczytana (a raczej adres konkretnej komórki tablicy)  w funkcji ISR<br />[syntax=c]ISR(TIMER0_COMP_vect)<br />{<br />...<br />if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );<br />...[/syntax]<br />za pomocą polecenia: <strong>pgm_read_byte</strong>.<br /><br />Czy tak zostało zrobione w celach dydaktycznych (aby pokazać, jak zapisać dane w pamięci FLASH), czy jest to tzw. &quot;dobra praktyka&quot;? <br /><br />Pytam się gdyż, jak zdefiniuję tablicę <strong>uint8_t cyfry[15] </strong>w funkcji <strong>ISR(TIMER0_COMP_vect)</strong>, to i tak zajmie ona pamięć FLASH (nie wiem tylko, czy i jak to wpłynie na czas obsługi przerwania).<br /><br />PS.<br />Szukałem podobnego pytania na forum, ale nie znalazłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10284">PawelJ.dev</a> — 20 cze 2015, o 20:03</p><hr />
]]></content>
</entry>
</feed>