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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-01-29T13:27:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17458&amp;mode</id>
<entry>
<author><name><![CDATA[amilo_pa]]></name></author>
<updated>2017-01-29T13:27:54+01:00</updated>
<published>2017-01-29T13:27:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=181184#p181184</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=181184#p181184"/>
<title type="html"><![CDATA[Re: Zapis struktury z tablicami do pamięci FLASH]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=181184#p181184"><![CDATA[
Problem rozwiązany <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />[syntax=c]//Definicja struktur zapisane w pamięci FLASH//<br />TLED_RGB const chimney_pgm PROGMEM =<br />{<br /><br />{0,0,0,125,255,255},//defoult_set_color,<br />{chimney_rgb,0,125,25,100,136,50, 50, 2},//defoult_set_ch_para_fun,<br />PERIOD_Tim3,//defoult_set_tim<br />PERIOD_Tim3,//defoult_set_LED_tim<br />PERIOD_TIME_LED,// defoult_set_per_tim<br />3,// defoult_set_ch_chosen_function<br />200,//defoult_set_value_max<br />250,//defoult_set_saturation_max<br /><br /><br />};[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3824">amilo_pa</a> — 29 sty 2017, o 13:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2017-01-27T09:08:37+01:00</updated>
<published>2017-01-27T09:08:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=181000#p181000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=181000#p181000"/>
<title type="html"><![CDATA[Re: Zapis struktury z tablicami do pamięci FLASH]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=181000#p181000"><![CDATA[
O ile dobrze zrozumiałem błąd, przy zapisie wartości domyślnych do struktury musisz użyć stałych, a Ty używasz wartości z tablicy (czyli zmiennych).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 27 sty 2017, o 09:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[amilo_pa]]></name></author>
<updated>2017-01-26T23:12:16+01:00</updated>
<published>2017-01-26T23:12:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=180989#p180989</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=180989#p180989"/>
<title type="html"><![CDATA[Zapis struktury z tablicami do pamięci FLASH]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17458&amp;p=180989#p180989"><![CDATA[
Witam,<br />Chciałbym mądrzejszych od siebie prosić o pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Otóż mam zadeklarowane struktury w pliku nagłówkowym d_led.h:<br />[syntax=c]//deklaracja struktury typu TLED_RGB<br />typedef struct {<br />volatile  uint8_t color&#91;6&#93;;//wartość PWM diod RGB: R=0, G=1, B=2, H=3, S=4, V=5<br />uint8_t paramiters_functions&#91;9&#93;;//parametry wykorzystywane przez funkcje sterujące poszczególnymi diodami rgb<br />//paramiters_functions&#91;0&#93; = select_diode_rgb(used in the function: ????????_...) - zawiera informacje o diodzie z tabelą /*enum_5*/<br />//paramiters_functions&#91;1&#93; = select_color(used in the function: cyclic_change_colors_rgb_...) - wyświetlany kolor z tabeli COLORS<br />//paramiters_functions&#91;2&#93; = set_color (used in the function: cyclic_change_colors_rgb_...) - zawiera informacje o aktulanej wartości jasności koloru<br />//paramiters_functions&#91;3&#93; = flow_colors_h (used in the function: flow_colors_rgb_...) - komórka odpowiedzialna za wartość współczynnika H w stożku HSV<br />//paramiters_functions&#91;4&#93; = set_color_h (used in the function: flashing_one_color_rgb_...) - komórka zawierająca informację o wybranym kolorze przez użytkownika<br />//paramiters_functions&#91;5&#93; = multi_flashing_colors (used in the function: multi_flashing_color_rgb_...) - aktualnie wyświetlany kolor<br />//paramiters_functions&#91;6&#93; = fast_slow_change_multi_colors (used in the function: multi_flashing_color_rgb_...) - zwiększa lub spowalnia zmianę kolorów<br />//paramiters_functions&#91;7&#93; = rate_of_change (used in the function: multi_flashing_color_rgb_...) - zmienna umożliwiająca szybszą lub wolniejszą zmianę kolorów<br />//paramiters_functions&#91;8&#93; = common_flag_rgb (used in the function: multi_flashing_color_rgb_..., flashing_one_color_rgb_... oraz cyclic_change_colors_rgb_...)- bity tej zmiennej sterują odpowiednimi procesami w funkcjach - patrz tryb wyliczeniowy<br />//paramiters_functions&#91;9&#93; =<br /><br /><br /><br />uint16_t timer_set;//zapamiętany czas rozświetlania i ściemniania diody RGB, ładowany do licznika LED_timer<br />volatile uint16_t LED_timer;//czas odliczany w przerwaniu<br />uint32_t period_time;//zmienna za pomocą której ustawiamy nowy czas szybkości rozświetlania i ściemniania diody<br />uint8_t chosen_function;//zmienna informująca o wybranej funkcji do sterowania ledem<br />uint8_t value_max;//zmienna odpowiedzialna za maksymalny strumień świetlny<br />uint8_t saturation_max;//zmienna odpowiadajaca za maksymalne nasycenie kolorów<br />} TLED_RGB;<br /><br />// deklaracja DIOD RGB typu TLED_RGB wykorzystywanych w pamięci RAM<br />extern TLED_RGB chimney;<br />extern TLED_RGB window_left;<br />extern TLED_RGB window_right;<br />extern TLED_RGB selected_rgb;[/syntax]<br /><br />Oraz ich definicję w bliźniaczym pliku d_led.c<br />[syntax=c]TLED_RGB chimney;<br />TLED_RGB window_left;<br />TLED_RGB window_right;<br />TLED_RGB selected_rgb;[/syntax]<br /><br /><br />Następnie dokonałem deklaracji odpowiedników tych struktur (do zapisu w pamięci FLASH oraz EEPROM) oraz zmiennych z ustawieniami fabrycznymi w pliku memory.h<br />[syntax=c]#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;../D_LED/d_led.h&quot;<br /><br />//struktury zapisane w pamięci FLASH//<br />const extern TLED_RGB chimney_pgm PROGMEM;<br />const extern TLED_RGB window_left_pgm PROGMEM;<br />const extern TLED_RGB window_right_pgm PROGMEM;<br /><br />//struktury zapisane w pamięci EEPROM//<br />extern TLED_RGB chimney_eem EEMEM;<br />extern TLED_RGB window_left_eem EEMEM;<br />extern TLED_RGB window_right_eem EEMEM;<br /><br /><br />//ustawienia fabryczne do zapisania w pamięci flash<br />const extern uint8_t defoult_set_color&#91;6&#93;;<br />const extern uint8_t defoult_set_ch_para_fun&#91;9&#93;;<br />const extern uint8_t defoult_set_w_l_para_fun&#91;9&#93;;<br />const extern uint8_t defoult_set_w_r_para_fun&#91;9&#93;;<br />const extern uint16_t defoult_set_tim;<br />const extern uint16_t defoult_set_LED_tim;<br />const extern uint32_t defoult_set_per_tim;<br />const extern uint8_t defoult_set_ch_chosen_function;<br />const extern uint8_t defoult_set_w_l_chosen_function;<br />const extern uint8_t defoult_set_w_r_chosen_function;<br />const extern uint8_t defoult_set_value_max;<br />const extern uint8_t defoult_set_saturation_max;[/syntax]<br /><br />Teraz do rzeczy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Chciałbym zapisać w pamięci FLASH domyślne ustawienie zmiennych w strukturach. Jednakże wystąpił problem z tablicami :/<br />W pliku memory.c mam <br />[syntax=c]#include &quot;memory.h&quot;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br /><br /><br />//ustawienia fabryczne do zapisania w pamięci flash<br />const uint8_t defoult_set_color&#91;6&#93;={0,0,0,125,255,255};<br />const uint8_t defoult_set_ch_para_fun&#91;9&#93;={chimney_rgb,0,125,25,100,136,50, 50, 2};<br />const uint8_t defoult_set_w_l_para_fun&#91;9&#93;={window_left_rgb,0,125,25,100,136,50, 110, 3};<br />const uint8_t defoult_set_w_r_para_fun&#91;9&#93;={window_right_rgb,0,125,25,100,136,50, 250, 1};<br />const uint16_t defoult_set_tim = PERIOD_Tim3;<br />const uint16_t defoult_set_LED_tim = PERIOD_Tim3;<br />const uint32_t defoult_set_per_tim = PERIOD_TIME_LED;<br />const uint8_t defoult_set_ch_chosen_function = 3;<br />const uint8_t defoult_set_w_l_chosen_function = 1;<br />const uint8_t defoult_set_w_r_chosen_function = 4;<br />const uint8_t defoult_set_value_max = 200;<br />const uint8_t defoult_set_saturation_max = 250;<br /><br /><br />//Definicja struktur zapisane w pamięci FLASH//<br />const TLED_RGB chimney_pgm PROGMEM = {<br />defoult_set_color&#91;0&#93;,<br />defoult_set_color&#91;1&#93;,<br />defoult_set_color&#91;2&#93;,<br />defoult_set_color&#91;3&#93;,<br />defoult_set_color&#91;4&#93;,<br />defoult_set_color&#91;5&#93;,<br />defoult_set_ch_para_fun&#91;0&#93;,<br />defoult_set_ch_para_fun&#91;1&#93;,<br />defoult_set_ch_para_fun&#91;2&#93;,<br />defoult_set_ch_para_fun&#91;3&#93;,<br />defoult_set_ch_para_fun&#91;4&#93;,<br />defoult_set_ch_para_fun&#91;5&#93;,<br />defoult_set_ch_para_fun&#91;6&#93;,<br />defoult_set_ch_para_fun&#91;7&#93;,<br />defoult_set_ch_para_fun&#91;8&#93;,<br />defoult_set_tim,<br />defoult_set_LED_tim,<br />defoult_set_per_tim,<br />defoult_set_ch_chosen_function,<br />defoult_set_value_max,<br />defoult_set_saturation_max<br /><br /><br />};<br />const TLED_RGB window_left_pgm PROGMEM;<br />const TLED_RGB window_right_pgm PROGMEM;[/syntax]<br /><br />Kompilator zgłasza następujące błędy:<br />[syntax=c]make all <br />'Building file: ../MEMORY/memory.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=16000000UL -MMD -MP -MF&quot;MEMORY/memory.d&quot; -MT&quot;MEMORY/memory.o&quot; -c -o &quot;MEMORY/memory.o&quot; &quot;../MEMORY/memory.c&quot;<br />../MEMORY/memory.c:31:3: warning: missing braces around initializer &#91;-Wmissing-braces&#93;<br />   defoult_set_color&#91;0&#93;,<br />   ^<br />../MEMORY/memory.c:31:3: warning: (near initialization for 'chimney_pgm.color') &#91;-Wmissing-braces&#93;<br />../MEMORY/memory.c:31:3: error: initializer element is not constant<br />../MEMORY/memory.c:31:3: error: (near initialization for 'chimney_pgm.color&#91;0&#93;')<br />../MEMORY/memory.c:32:3: error: initializer element is not constant<br />   defoult_set_color&#91;1&#93;,<br />   ^<br />../MEMORY/memory.c:32:3: error: (near initialization for 'chimney_pgm.color&#91;1&#93;')<br />../MEMORY/memory.c:33:3: error: initializer element is not constant<br />   defoult_set_color&#91;2&#93;,<br />   ^<br />../MEMORY/memory.c:33:3: error: (near initialization for 'chimney_pgm.color&#91;2&#93;')<br />../MEMORY/memory.c:34:3: error: initializer element is not constant<br />   defoult_set_color&#91;3&#93;,<br />   ^<br />../MEMORY/memory.c:34:3: error: (near initialization for 'chimney_pgm.color&#91;3&#93;')<br />../MEMORY/memory.c:35:3: error: initializer element is not constant<br />   defoult_set_color&#91;4&#93;,<br />   ^<br />../MEMORY/memory.c:35:3: error: (near initialization for 'chimney_pgm.color&#91;4&#93;')<br />../MEMORY/memory.c:36:3: error: initializer element is not constant<br />   defoult_set_color&#91;5&#93;,<br />   ^<br />../MEMORY/memory.c:36:3: error: (near initialization for 'chimney_pgm.color&#91;5&#93;')<br />../MEMORY/memory.c:37:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;0&#93;,<br />   ^<br />../MEMORY/memory.c:37:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;0&#93;')<br />../MEMORY/memory.c:38:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;1&#93;,<br />   ^<br />../MEMORY/memory.c:38:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;1&#93;')<br />../MEMORY/memory.c:39:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;2&#93;,<br />   ^<br />../MEMORY/memory.c:39:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;2&#93;')<br />../MEMORY/memory.c:40:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;3&#93;,<br />   ^<br />../MEMORY/memory.c:40:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;3&#93;')<br />../MEMORY/memory.c:41:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;4&#93;,<br />   ^<br />../MEMORY/memory.c:41:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;4&#93;')<br />../MEMORY/memory.c:42:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;5&#93;,<br />   ^<br />../MEMORY/memory.c:42:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;5&#93;')<br />../MEMORY/memory.c:43:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;6&#93;,<br />   ^<br />../MEMORY/memory.c:43:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;6&#93;')<br />../MEMORY/memory.c:44:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;7&#93;,<br />   ^<br />../MEMORY/memory.c:44:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;7&#93;')<br />../MEMORY/memory.c:45:3: error: initializer element is not constant<br />   defoult_set_ch_para_fun&#91;8&#93;,<br />   ^<br />../MEMORY/memory.c:45:3: error: (near initialization for 'chimney_pgm.paramiters_functions&#91;8&#93;')<br />../MEMORY/memory.c:46:3: error: initializer element is not constant<br />   defoult_set_tim,<br />   ^<br />../MEMORY/memory.c:46:3: error: (near initialization for 'chimney_pgm.timer_set')<br />../MEMORY/memory.c:47:3: error: initializer element is not constant<br />   defoult_set_LED_tim,<br />   ^<br />../MEMORY/memory.c:47:3: error: (near initialization for 'chimney_pgm.LED_timer')<br />../MEMORY/memory.c:48:3: error: initializer element is not constant<br />   defoult_set_per_tim,<br />   ^<br />../MEMORY/memory.c:48:3: error: (near initialization for 'chimney_pgm.period_time')<br />../MEMORY/memory.c:49:3: error: initializer element is not constant<br />   defoult_set_ch_chosen_function,<br />   ^<br />../MEMORY/memory.c:49:3: error: (near initialization for 'chimney_pgm.chosen_function')<br />../MEMORY/memory.c:50:3: error: initializer element is not constant<br />   defoult_set_value_max,<br />   ^<br />../MEMORY/memory.c:50:3: error: (near initialization for 'chimney_pgm.value_max')<br />../MEMORY/memory.c:54:1: error: initializer element is not constant<br /> };<br /> ^<br />../MEMORY/memory.c:54:1: error: (near initialization for 'chimney_pgm.saturation_max')[/syntax]<br /><br /><br />Jak należy poprawnie dokonać definicji takiej struktury ?? Bardzo proszę o łopatologiczne wyjaśnienie i wyrozumiałość:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3824">amilo_pa</a> — 26 sty 2017, o 23:12</p><hr />
]]></content>
</entry>
</feed>