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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-07-29T17:02:35+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=21044&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-07-29T17:02:35+01:00</updated>
<published>2018-07-29T17:02:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210245#p210245</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210245#p210245"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210245#p210245"><![CDATA[
Wątek ciągnie się troszkę &quot;jak makaron&quot; ... a wnioski są dość proste i oczywiste. Gdy stosuje się prawidłowe techniki programowania - czyli wyprowadzanie fragmentów kodów do funkcji (jak powinno się programować w C) to problem nie występuje nawet (z tego co czytam - nawet w starszych wersjach kompilatora) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Wniosek jest jeden - jeśli ktoś traktuje pisanie kodu w C tak jak w Bascomie czy w Andruino - tzn jeden WIELKI plik źródłowy a o funkcjach? - można zapomnieć ... to nie dziwota - że tym bardziej przy takim podejściu które pokazałem wyżej - kompilator może zaświrować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />-------------------------<br /><br />proponuję prosty test - bo nie mogę wciąż osiągnąć waszych problemów które opisujecie - żeby zastosować JEDNĄ funkcję sprintf() ale z prawidłowym formatowaniem i pewnie już będzie po problemie<br /><br />a po drugie - tak jak to zaczął SŁUSZNIE pokazywać kolega Zelaota .... czyli wyprowadzać wszystko do funkcji zewnętrznych - bo TO JEST NORMALNA DROGA w programowaniu w C .... to wtedy nie będzie trzeba tracić czasu i analizować &quot;dlaczego jest błąd?&quot; gdy ktoś pisze kod wbrew no niestety logice - rozbudowując main.c do jakichś monstrualnych rozmiarów.<br /><br />Nie mam zamiaru tu robić komuś przytyków czy przykrości a tylko zwrócić uwagę autorowi, że warto się skupić JAK NALEŻY podchodzić do tworzenia kodu (tak jak pokazał np Zelaota) niż przez 30 dni rozważać dlaczego kompilator pokazuje błąd gdy się w tak nieodpowiedzialny sposób tenże kod źródłowy tworzy. Mam nadzieję, że zostanę poprawnie zrozumiany - a nie, że komuś jakieś przytyki robię. Pewien wzór rozwoju tak źle napisanego kodu pokazał Zelaota i ... panie Raficu - warto się uczyć takiego podejścia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 lip 2018, o 17:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-29T16:12:50+01:00</updated>
<published>2018-07-29T16:12:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210243#p210243</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210243#p210243"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210243#p210243"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />Nie analizowałem wszystkich propozycji w tym wątku, ale czy przeniesienie obróbki pomiarów w kanałach do funkcji nadal generuje błąd przy kompilacji?<br /></div><br />Nie generuje i to jest ten plus <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> nie wiemy za to dlaczego, a to ten minus <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 29 lip 2018, o 16:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-29T15:35:07+01:00</updated>
<published>2018-07-29T15:35:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210241#p210241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210241#p210241"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210241#p210241"><![CDATA[
Dzięki za info odnośnie ustawień optymalizacji kodu.<br />Kolega Zealota pomógł mi i przeniesienie problematycznego kawałka kodu do oddzielnej funkcji pomogło, poza tym trochę uporządkował ten mój bałagan  <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=122">Rafciu</a> — 29 lip 2018, o 15:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-07-29T15:09:40+01:00</updated>
<published>2018-07-29T15:09:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210240#p210240</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210240#p210240"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210240#p210240"><![CDATA[
<div class="quotetitle">Rafciu napisał(a):</div><div class="quotecontent"><br />A czy mógł byś powiedzieć gdzie w Eclipse zmienia się stopień optymalizacji, czyli zmienia zmienną -O, na -O2 lub -O3?<br /></div>Optymalizację zmienia się we właściwościach projektu w C/C++ Build -&gt; Settings -&gt; Tool Settings -&gt; AVR Compiler -&gt; Optimization.<br />Ale raczej powinieneś pozmieniać kod w miejscu gdzie generuje się błąd by kompilacja działała a nie zmieniać stopień optymalizacji, bo ta wpływa na cały kod a nie tylko ten fragment.<br />Z tego co widziałem w zgłoszeniach bugów gcc, to ten problem generuje używanie funkcji sscanf, sprintf, itp. Zakomentuj je w tej części kodu na chwilę i zobacz czy to jest związane z użyciem tych funkcji. A potem zastanów się czy da się ten fragment zrobić inaczej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 12 minutach ]</span></strong><br /><br />Rzuciłem okiem na Twój kod i prawdę mówiąc to jeżeli chcesz go optymalizować do wersji -Os to kompilator ma dużo do zrobienia, bo jest on bardzo nieoptymalny. Więc pewnie przez ten &quot;natłok&quot; roboty i wewnętrzny błąd wysypuje się on <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />. <br />Nie analizowałem wszystkich propozycji w tym wątku, ale czy przeniesienie obróbki pomiarów w kanałach do funkcji nadal generuje błąd przy kompilacji?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 29 lip 2018, o 15:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2018-07-29T15:05:45+01:00</updated>
<published>2018-07-29T15:05:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210239#p210239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210239#p210239"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210239#p210239"><![CDATA[
Może ja podpowiem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />. W Project/Properties<br /><a href="https://obrazkiforum.atnel.pl/290/6a0b46d406db9d750f4f00f475954420.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/290/6a0b46d406db9d750f4f00f475954420.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=290">Piotrek_P</a> — 29 lip 2018, o 15:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-29T14:42:47+01:00</updated>
<published>2018-07-29T14:42:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210238#p210238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210238#p210238"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210238#p210238"><![CDATA[
Dziękuję za info rskup <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> A czy mógł byś powiedzieć gdzie w Eclipse zmienia się stopień optymalizacji, czyli zmienia zmienną -O, na -O2 lub -O3?<br />Dziękuję i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 29 lip 2018, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-07-29T02:08:00+01:00</updated>
<published>2018-07-29T02:08:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210237#p210237</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210237#p210237"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210237#p210237"><![CDATA[
<div class="quotetitle">Rafciu napisał(a):</div><div class="quotecontent"><br />Moim zdaniem problem tkwi w kompilatorze może nowszy ma coś pozmieniane odnośnie optymalizacji<br /></div>Tak. To jest błąd kompilatora powiązany z kodem oraz stopniem optymalizacji. Niestety optymalizacja kodu to dość skomplikowany proces i czasami gcc potrafi się wyłożyć <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />. No cóż to na razie piszą tylko ludzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br />Patrząc się na zgłoszenia błędów w gcc, to ten błąd pojawiał się kilkukrotnie w różnych sytuacjach i był teoretycznie poprawiany a potem znowu wychodził <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />. W najnowszej wersji gcc (&gt;= 8.0) podobno już wszystko znowu działa poprawnie. Ale avr-gcc z toolchaina nie jest oparte na najnowszym gcc, więc my ten problem mamy niestety nie poprawiony.<br />Z oficjalnych rad (workaroundów) na problem, to zmiana stopnia optymalizacji kodu (zmienna -O, na -O2 lub -O3) lub zmiana kodu by gcc mógł poprawnie go zoptymalizować nie trafiając na swoje ograniczenia.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 29 lip 2018, o 02:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-28T16:40:08+01:00</updated>
<published>2018-07-28T16:40:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210233#p210233</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210233#p210233"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210233#p210233"><![CDATA[
Zealota wrzuciłem kod do siebie i generalnie jest ok błędu nie ma. Jednak pomiar prądu nie działa za dobrze na chwilę dodałem oddzielne zmienne pm i pm1 dla kanału 1 i pm2, pm3 dla kanału 2, może mało eleganckie ale na chwilę do testów wystarczy, bo i tak będę jeszcze przerabiał pomiar z tych kanałów.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Co do błędu, niestety nie znam konkretnych przyczyn aczkolwiek, jak pisałem wcześniej, opakowanie problematycznych procedur w funkcje zamaskowało problem. Może to wystarczy. Skompiluj to co przygotowałem, może zacznie Ci działać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />Moim zdaniem problem tkwi w kompilatorze może nowszy ma coś pozmieniane odnośnie optymalizacji i po prostu pewne nie eleganckie kody jak mój mogą powodować takie błędy. Wyjaśniało by to że na AVR Studio wszystko kompiluje się ok a kolega wiem że używa starszej wersji.<br /><br />Co by nie było jestem bardzo wdzięczny za pomoc i pokazanie bardziej poprawnego stylu pisania programu co dla mnie osoby bardzo rzadko bawiącej się w programowanie jest bardzo przydatne.<br />Jeszcze raz wielkie dziękuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 28 lip 2018, o 16:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-28T13:50:00+01:00</updated>
<published>2018-07-28T13:50:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210222#p210222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210222#p210222"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210222#p210222"><![CDATA[
Zrobiłem pewne poprawki:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *      Author: Rafciu<br /> *<br /> *      Na podstawie bibliotek i przyk�ad�w z ksi��ki:<br /> *      &quot;Mikrokontrolery AVR J�zyk C- podstawy programowania&quot;<br /> *      Miros�aw Karda�<br /> *      wydanie II<br /> *      Kt�r� szczerze i z ca�ego serca polecam. :)<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;MK_USART/mkuart.h&quot;<br />#include &quot;mk_html.h&quot;<br /><br />typedef struct {<br />uint16_t adc_mid;<br />uint16_t ref_adc; //to warto�c adc odpowiadaj�ca napi�ciu �rodkowemu mierzonego zakresu czyli ref_v<br />uint16_t ref_v; // �rodkowe napiecie mierzonego zakresu np pomiar od 0-12V ref_v = 6V<br />char v1&#91;3&#93;;<br />char v2&#91;3&#93;;<br />} TVOL;<br /><br />TVOL accu1_vol;  //zmienna strukturalna<br /><br />#define wej_1 PA5<br />#define wej_2 PA4<br />#define wej_3 PA3<br />#define wej_4 PA2<br />#define wejP_1 PA1<br />#define wejP_2 PA0<br />#define przycisk1 (1&lt;&lt;PD7)<br />#define przycisk2 (1&lt;&lt;PD6)<br />#define lcd_led (1&lt;&lt;PC7)<br /><br />#define REF_256 (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0) //wewneczne nap. od. 2,56V<br />#define REF_VCC (1&lt;&lt;REFS0) //napiecie zasilania jako referencyjne<br />#define REF_ZEW //zewn�trzne napi�cie odniesienia<br />char uart_buf&#91;255&#93;;<br />char buffer_data_send1&#91;10&#93;;<br />char buffer_data_send2&#91;10&#93;;<br />char buffer_data_send3&#91;10&#93;;<br />char buffer_data_send4&#91;10&#93;;<br />char buffer_data_send5&#91;10&#93;;<br />char buffer_data_send6&#91;10&#93;;<br /><br />uint16_t pomiar(uint8_t kanal);<br />uint16_t licz;<br />uint16_t wynik;<br />uint16_t key;<br />uint32_t pm;<br />uint32_t pm2;<br />uint8_t czd;<br />uint16_t czu;<br />uint8_t s = 0; // s = 0 strona wy�wietlona po starcie programu<br /><br /><br />volatile uint8_t ms10_flag;<br />volatile uint8_t ms10_cnt;<br />volatile uint8_t sekundy;<br />volatile uint8_t s1_flag;<br /><br />void parse_rs232(char * buf);<br />void http200ok(void);<br />void print_webpage(void);<br />void wyslij_parametry(uint8_t par_cnt);<br />void parametry_rs(void);<br /><br />// By Zealota ----------------------------<br />void send_to_LCD( uint8_t s );<br />void send_to_console( void );<br />void adc_init( void );<br />void io_init( void );<br />void lcd_initialize( void );<br />//----------------------------------------<br /><br />void get_vol(uint16_t adc, TVOL * voltage);<br /><br />void podswietlenie(void) {<br />PORTC ^= lcd_led;<br />}<br /><br />void strony(void) {<br />lcd_cls();<br />s++;<br />if (s &gt; 2)<br />s = 0;<br />}<br /><br />void key_press(volatile uint8_t * KPIN, uint8_t key_mask,<br />void (*fun_key_press)(void));<br /><br />char cz_dz&#91;3&#93;;<br />char cz_u&#91;3&#93;;<br /><br />int main(void) {<br /><br />io_init();<br />lcd_initialize();<br />adc_init();<br />USART_Init( __UBRR);<br /><br />register_uart_str_rx_event_callback( parse_rs232 );<br /><br />sei();<br /><br />while (1) {<br /><br />UART_RX_STR_EVENT(uart_buf);<br /><br />key_press(&amp;PIND, przycisk1, podswietlenie);  //za��czenie pod�wietlenia<br />key_press(&amp;PIND, przycisk2, strony);        //przewijanie stron na lcd<br /><br />if (s1_flag) {<br />send_to_console();<br />s1_flag = 0;<br />}<br /><br />}<br />}<br /><br /><br /><br /><br />void lcd_initialize( void ) {<br />lcd_init(); /* inicjalizacja LCD */<br /><br />lcd_locate(0, 0);<br />lcd_str(&quot;Start...&quot;); /* napisy startowe info */<br />lcd_locate(1, 0);<br />lcd_str(&quot;SW ver 1.7&quot;);<br />_delay_ms(2000);<br />lcd_cls();<br />}<br /><br />void io_init( void ) {<br />DDRA &amp;= ~(1 &lt;&lt; wej_1); //Ustawienie kierunku pin�w jako wej�ciowy ADC, przyciski<br />DDRA &amp;= ~(1 &lt;&lt; wej_2);<br />DDRA &amp;= ~(1 &lt;&lt; wej_3);<br />DDRA &amp;= ~(1 &lt;&lt; wej_4);<br />DDRA &amp;= ~(1 &lt;&lt; wejP_1);<br />DDRA &amp;= ~(1 &lt;&lt; wejP_2);<br />DDRD &amp;= ~ przycisk1;<br />DDRD &amp;= ~ przycisk2;<br /><br />DDRC |= lcd_led;// ustawiamy kierunek pin�w jako wyj�ciowy<br /><br />PORTD |= przycisk1;// podci�gni�cie pin�w przycisk�w do VCC<br />PORTD |= przycisk2;<br /><br />//PORTC |= lcd_led;// za��czamy pod�wietlenie LCD - stan wysoki<br />}<br /><br />void adc_init( void ) {<br />//inicjalizacja ADC<br />ADCSRA |= (1 &lt;&lt; ADEN); //w��cza adc<br />ADCSRA |= (1 &lt;&lt; ADPS2) | (1 &lt;&lt; ADPS1) | (1 &lt;&lt; ADPS0); //preskaler =16<br />//ADMUX |= REF_256;<br /><br />accu1_vol.ref_adc = 385; //warto�c adc dla 1/2 mierzonego zakresu tu dla 16V  (506 dla nap. odn. 2,56V)<br />accu1_vol.ref_v = 1600; // 1/2 zakresu mierzonego napi�cia 0-32V<br /><br />TCCR0 |= (1 &lt;&lt; WGM01);<br />TCCR0 |= (1 &lt;&lt; CS02) | (1 &lt;&lt; CS00);<br />OCR0 = 107;<br />TIMSK = (1 &lt;&lt; OCIE0);<br /><br />}<br />void send_to_console( void ) {<br /><br />//NAPI�CIE<br />//pomiar kana� 1<br />wynik = pomiar(5);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send1, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//pomiar kana� 2<br />wynik = pomiar(4);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send2, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//pomiar kana� 3<br />wynik = pomiar(3);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send3, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//pomiar kana� 4<br />wynik = pomiar(2);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send4, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//PR�D<br />//pomiar kana� 1<br />pm = pomiar(1);<br />if (pm &gt; 781)<br />pm = 781;<br />pm2 = (781 - pm) * 322;<br /><br />czd = pm2 / 10000;<br />czu = (pm2 / 100) % 100;<br />if (czu &lt; 10)<br />sprintf(buffer_data_send5, &quot;%i.0%i&quot;, czd, czu);<br />else<br />sprintf(buffer_data_send5, &quot;%i.%i&quot;, czd, czu);<br /><br />//pomiar kana� 2<br />pm = pomiar(2);<br />if (pm &gt; 781)<br />pm = 781;<br />pm = (781 - pm) * 322;<br /><br />czd = pm / 10000;<br />czu = (pm / 100) % 100;<br />if (czu &lt; 10)<br />sprintf(buffer_data_send6, &quot;%i.0%i&quot;, czd, czu);<br />else<br />sprintf(buffer_data_send6, &quot;%i.%i&quot;, czd, czu);<br /><br />send_to_LCD( s );<br /><br />}<br />void send_to_LCD( uint8_t s ) {<br />//Wy�wietlanie wartosci w postaci 3 ekran�w<br />if (s == 0) {        // ekran 0<br />lcd_locate(0, 0);<br />lcd_str(&quot;U1:&quot;);<br />lcd_locate(0, 3);<br />lcd_str(buffer_data_send1);<br />lcd_str(&quot;V &quot;);<br /><br />lcd_locate(1, 0);<br />lcd_str(&quot;I1:&quot;);<br />lcd_locate(1, 3);<br /><br />lcd_str(buffer_data_send3);<br />lcd_str(&quot;V  &quot;);<br />} else if (s == 1) {     //ekran 1<br />lcd_locate(0, 0);<br />lcd_str(&quot;1:&quot;);<br />lcd_locate(0, 2);<br />lcd_str(buffer_data_send1);<br />lcd_str(&quot;V &quot;);<br /><br />lcd_locate(0, 9);<br />lcd_str(&quot;2:&quot;);<br />lcd_locate(0, 11);<br />lcd_str(buffer_data_send2);<br />lcd_str(&quot;V &quot;);<br /><br />lcd_locate(1, 0);<br />lcd_str(&quot;3:&quot;);<br />lcd_locate(1, 2);<br />lcd_str(buffer_data_send3);<br />lcd_str(&quot;V  &quot;);<br /><br />lcd_locate(1, 9);<br />lcd_str(&quot;4:&quot;);<br />lcd_locate(1, 11);<br />lcd_str(buffer_data_send4);<br />lcd_str(&quot;V &quot;);<br />} else if (s == 2) {   //ekran 2<br />lcd_locate(0, 0);<br />lcd_str(&quot;I1:&quot;);<br />lcd_locate(0, 3);<br />lcd_str(buffer_data_send5);<br />lcd_str(&quot;A  &quot;);<br />lcd_locate(0, 13);<br />lcd_int(pm);<br />lcd_locate(1, 0);<br />lcd_str(&quot;I2:&quot;);<br />}<br /><br />}<br /><br /><br />ISR(TIMER0_COMP_vect) {<br />ms10_flag = 1;<br />if (++ms10_cnt &gt; 99) {<br />s1_flag = 1;<br />sekundy++;<br />if (sekundy &gt; 59)<br />sekundy = 0;<br />ms10_cnt = 0;<br />}<br />}<br /><br />uint16_t pomiar(uint8_t kanal) {<br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br />ADCSRA |= (1 &lt;&lt; ADSC); //start konwersji<br />while ( ADCSRA &amp; (1 &lt;&lt; ADSC))<br />;<br />return ADCW;<br />}<br /><br />void key_press(volatile uint8_t * KPIN, uint8_t key_mask,<br />void (*fun_key_press)(void)) {<br />register uint8_t key_press = (*KPIN &amp; key_mask);<br />if (!key &amp;&amp; !key_press) {<br />key = 1000;<br />if (fun_key_press)<br />fun_key_press();<br /><br />} else if (key &amp;&amp; key_press)<br />key++;<br />}<br /><br />void get_vol(uint16_t adc, TVOL * voltage) {<br /><br />uint16_t wynik = (adc * (uint32_t) voltage-&gt;ref_v) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa(divmod.quot, voltage-&gt;v1, 10); // czesc jedno�ci u�amka / cz�sc ca�kowita<br />itoa(divmod.rem, voltage-&gt;v2, 10); // czesc dziesiatek u�amka / reszta z dzielenia<br />if (divmod.rem &lt; 10) { //eliminacja problemu zera po przecinku np. wy�wietlenie wartosci 5,06V<br />voltage-&gt;v2&#91;0&#93; = '0';<br />voltage-&gt;v2&#91;1&#93; = divmod.rem + '0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93; = 0;<br />voltage-&gt;v2&#91;2&#93; = 0;<br />}<br /><br />void wyslij_parametry(uint8_t par_cnt) {<br />switch (par_cnt) {<br />//case 0: uart_puts(&quot;0,00&quot;); break;<br />case 0:<br />uart_puts(buffer_data_send1);<br />break;<br />case 1:<br />uart_puts(buffer_data_send2);<br />break;<br />case 2:<br />uart_puts(buffer_data_send3);<br />break;<br />case 3:<br />uart_puts(buffer_data_send4);<br />break;<br />case 4:<br />uart_puts(buffer_data_send5);<br />break;<br />case 5:<br />uart_puts(buffer_data_send6);<br />break;<br />case 6:<br />uart_puts_P(PSTR(&quot; 1.3_28.10.2016&quot;));<br />break;<br />case 7:<br />uart_putint(++licz, 10);<br />break;<br />}<br /><br />}<br /><br />void parametry_rs(void) {<br /><br />uart_puts_P(PSTR(&quot; SW ver 1.7_21.07.2018  Com_0 115200 8 n 1\r\n&quot;));<br /><br />}<br /><br />void http200ok(void) {<br />uart_puts_P(<br />PSTR(&quot;HTTP/1.0 200 OK\r\nContent-Type: text/html; charset=windows-1250\r\nPragma: no-cache\r\n\r\n&quot;));<br />}<br /><br />void print_webpage(void) {<br /><br />http200ok();<br />SendParamWeb(html, wyslij_parametry);<br />}<br />void parse_rs232(char * buf) {<br />if (!strncmp(&quot;GET / &quot;, buf, 6)) {<br />print_webpage();<br />} else if (strncmp(&quot;GET /&quot;, buf, 4) == 0<br />&amp;&amp; strncmp(&quot; / &quot;, &amp;buf&#91;3&#93;, 6) != 0) {<br />uart_puts_P(<br />PSTR(<br />&quot;HTTP/1.0 404cNot found\r\nContent-Typ: text/html\r\n\r\n&lt;h1&gt;404 Not Found&lt;/1h&gt;&quot;));<br />} else if (!strncmp(&quot;rs&quot;, buf, 6)) {<br />parametry_rs();<br />}<br />}[/syntax]<br /><br />Popatrz na main i pętlę główną, wg. mnie o wile lepiej to wszystko analizować.<br /><br />Co do błędu, niestety nie znam konkretnych przyczyn aczkolwiek, jak pisałem wcześniej, opakowanie problematycznych procedur w funkcje zamaskowało problem. Może to wystarczy. Skompiluj to co przygotowałem, może zacznie Ci działać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />PS<br />Niestety rozwaliłem Ci kodowanie, będziesz musiał poprawić sobie krzaczki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 28 lip 2018, o 13:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-27T17:11:12+01:00</updated>
<published>2018-07-27T17:11:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210209#p210209</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210209#p210209"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210209#p210209"><![CDATA[
Zealota poszło PW<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 27 lip 2018, o 17:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-27T13:01:57+01:00</updated>
<published>2018-07-27T13:01:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210204#p210204</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210204#p210204"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210204#p210204"><![CDATA[
<div class="quotetitle">Rafciu napisał(a):</div><div class="quotecontent"><br />Zealota jak byś chciał jeszcze coś zerknąć to podaj maila pośle Ci cały projekt, bo ze względu na duża ilość kodu z książek Mirka nie chciał bym publikować tego w sieci, a wtedy będziesz mógł wszystko kompilować tak jak jest bez wycinania pewnych rzeczy. Dziękuję i pozdrawiam.<br /></div><br />Możesz wysłać przez prywatną wiadomość, tak mi się zdaje, ale podejrzę dopiero wieczorkiem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 27 lip 2018, o 13:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-27T13:00:20+01:00</updated>
<published>2018-07-27T13:00:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210203#p210203</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210203#p210203"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210203#p210203"><![CDATA[
Zealota jak byś chciał jeszcze coś zerknąć to podaj maila pośle Ci cały projekt, bo ze względu na duża ilość kodu z książek Mirka nie chciał bym publikować tego w sieci, a wtedy będziesz mógł wszystko kompilować tak jak jest bez wycinania pewnych rzeczy. Dziękuję i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 27 lip 2018, o 13:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-27T12:53:40+01:00</updated>
<published>2018-07-27T12:53:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210202#p210202</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210202#p210202"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210202#p210202"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ano właśnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale to w taki sposób warto izolować problem - czyli PO kawałkach - bo babol czasem może leżeć całkiem gdzie indziej<br /></div><br />Niestety izolowanie wpędza mnie w pętlę, raz nie działa jeden sprintf raz inny <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Po usunięciu &quot;tego magicznego bloku, o którym pisaliśmy&quot;, to zaczęło się wywalać na :<br />[syntax=c]wynik = pomiar(2);<br />                        get_vol(wynik, &amp;accu1_vol);<br />                        sprintf(buffer_data_send4, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);[/syntax]<br /><br />Babol faktycznie musi być gdzieś indziej. Ten podejrzany nawias &quot;}&quot; w opisie błędu jakoś wskazuje mi, że gdzieś jest jakieś ukryte makro, a błąd w nich, jak wiadomo, potrafi być upierdliwy.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br /><div class="quotetitle">Rafciu napisał(a):</div><div class="quotecontent"><br />Zealota Twój kod też sprawdzę być może będzie dobrze, zastanawia mnie tylko to dlaczego tak się dzieje ? czy jest to wina jakieś błędu w programie czy problem kompilatora jakiego Atmel Tolchain używasz?<br /></div><br />Tak to u mnie wygląda:<br />[syntax=c]Below sources are used in this product, they are under licenses which are both free<br />and open source.<br />gcc-4.9.2             : GNU GPL version 2, GNU LGPL version 2.1<br />                        GNU GPL version 3, GNU LGPL version 3<br />                        GCC RUNTIME LIBRARY EXCEPTION<br />binutils-2.25         : GNU GPL version 2, GNU library GPL version 2<br />                        GNU GPL version 3, GNU LGPL version 3<br />avr-libc-1.8.0        : Modified BSD License<br /><br />gdb-7.8               : GNU GPL version 2, GNU library GPL version 2<br />                        GNU GPL version 3, GNU LGPL version 3<br /><br />mpfr-3.0.0            : GNU GPL version 3, GNU LGPL version 3<br />mpc-0.9               : GNU LGPL version 2.1<br />gmp-5.0.2             : GNU GPL version 3, GNU LGPL version 3<br />ncurses-5.9           : The MIT License (MIT)<br /><br />Below binaries/libraries are distributed and/or used with this product.<br />mingw32-termcap-1.3.1 : <br />python-2.7.6.1        : https://www.python.org/download/releases/2.7/license/[/syntax]<br /><br />A to wersja ogólna toolchain.<br />toolchain-3.5.3.1700<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 27 lip 2018, o 12:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-27T12:53:06+01:00</updated>
<published>2018-07-27T12:53:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210201#p210201</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210201#p210201"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210201#p210201"><![CDATA[
Dobra po kolei <br />Mirku <br />Błąd w konsoli[syntax=c]13:39:47 **** Build of configuration Release for project miernikWWW2018 ****<br />make all <br />'Building file: ../main.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=11059200UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.o&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function 'main':<br />../main.c:287:1: internal compiler error: in push_reload, at reload.c:1360<br /> }<br /> ^<br />Please submit a full bug report,<br />with preprocessed source if appropriate.<br />See &lt;http://www.atmel.com&gt; for instructions.<br />make: *** &#91;main.o&#93; Błąd 1<br /><br />13:39:48 Build Finished (took 332ms)[/syntax]<br /><br />Kompiluję w Eclips MARS (Mars.1 Release (4.5.1)) , Atnel Toolchain 3.4.5.1522 i AVR_plugin_241 pobrane z bloga Mirka.<br /><br />Błąd pojawia się wtedy gdy w całym main.c pojawia się ten wycinek kodu [syntax=c]// ***************************************** //<br /><br /><br />//PRĄD<br />//pomiar kanał 1<br />  pm = pomiar(1);<br />  if(pm&gt;781)pm=781;<br />  pm2 = (781-pm)*322;<br />  czd = pm2/10000;<br />  czu = (pm2/100) % 100;<br />  sprintf(buffer_data_send5, &quot;%d.%02d&quot;,  czd, czu);<br /><br /><br />//pomiar kanał 2<br /><br />  pm = pomiar(2);<br />  if(pm&gt;781)pm=781;<br />  pm2 = (781-pm)*322;<br />  czd = pm2/10000;<br />  czu = (pm2/100) % 100;<br /><br />  sprintf(buffer_data_send6, &quot;%d.%02d&quot;,  czd, czu);<br /><br />// ***************************************** //[/syntax]<br /><br />jeśli wytnę  pomiar kanał 1 lub  pomiar kanał 2 tak żeby została tylko ta część <br />[syntax=c]//PRĄD<br />//pomiar kanał 1<br />  pm = pomiar(1);<br />  if(pm&gt;781)pm=781;<br />  pm2 = (781-pm)*322;<br />  czd = pm2/10000;<br />  czu = (pm2/100) % 100;<br />  sprintf(buffer_data_send5, &quot;%d.%02d&quot;,  czd, czu);[/syntax]<br /><br /><br />Wszystko jest Ok kompilacja bez błędu.<br /><br />Sprawdziłem też tak jak zaproponowałeś Mirku i też jest dobrze.<br /><br />Zealota Twój kod też sprawdzę być może będzie dobrze, zastanawia mnie tylko to dlaczego tak się dzieje ? czy jest to wina jakieś błędu w programie czy problem kompilatora jakiego Atmel Tolchain używasz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 27 lip 2018, o 12:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-07-27T12:39:02+01:00</updated>
<published>2018-07-27T12:39:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210200#p210200</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210200#p210200"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210200#p210200"><![CDATA[
ano właśnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale to w taki sposób warto izolować problem - czyli PO kawałkach - bo babol czasem może leżeć całkiem gdzie indziej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2018, o 12:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-27T12:36:18+01:00</updated>
<published>2018-07-27T12:36:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210199#p210199</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210199#p210199"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210199#p210199"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />jeśli tak to możesz sprawdzić ten mój wyizolowany problem ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />Ja sprawdziłem u siebie i o dziwo działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Nawet wrzuciłem do petli głównej i wrzuciłem do if'a, podobnie jak w &quot;oryginale&quot;  i nadal działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Na razie nie rozumiem... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 27 lip 2018, o 12:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-07-27T12:29:31+01:00</updated>
<published>2018-07-27T12:29:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210197#p210197</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210197#p210197"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210197#p210197"><![CDATA[
No ale to w czym jest problem jeśli i u ciebie się kompiluje wszystko poprawnie ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo u mnie też ten fragmencik co ja pokazałem<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />czy jednak masz błędy przy jakiejś wersji toolchaina ? jeśli tak to możesz sprawdzić ten mój wyizolowany 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=54">mirekk36</a> — 27 lip 2018, o 12:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-27T12:31:11+01:00</updated>
<published>2018-07-27T12:24:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210196#p210196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210196#p210196"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210196#p210196"><![CDATA[
Akurat miałem trochę &quot;czasu&quot;, więc wyizolowałem problem, podałem dwa rozwiązania obejścia.<br />Jedno ze zmienną tymczasową, a drugą z migracją bloku programu do funkcji.<br />U mnie obie kompilują się bez błędów, na Eclipse Neon, aczkolwiek bez modyfikacji miałem dokładnie taki sam błąd jak Kolega Rafciu.<br />[syntax=c]make all <br />'Building file: ../main.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=atmega16 -DF_CPU=1000000UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.o&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function 'main':<br />../main.c:285:1: internal compiler error: in push_reload, at reload.c:1360<br /> }<br /> ^<br />Please submit a full bug report,<br />with preprocessed source if appropriate.<br />See &lt;http://www.atmel.com&gt; for instructions.<br />make: *** &#91;main.o&#93; Błąd 1[/syntax]<br /><br /><br />Po modyfikacjach, stworzeniu funkcji wyświetl(), taki main.c się u mnie kompiluje bez błędów.<br />Nie powiem tylko czy działa, ale nich Kolega podejmie próby - może zadziała poprawnie aczkolwiek ten kod i tak do przerobienia, bo ta moja funkcja to w złym miejscu jest i działa na zmiennych globalnych, a to mało eleganckie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<br />Ustawiłem u siebie opcję optymalizacji -Os<br /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *      Author: Rafciu<br /> *<br /> *      Na podstawie bibliotek i przykładów z książki:<br /> *      &quot;Mikrokontrolery AVR Język C- podstawy programowania&quot;<br /> *      Mirosław Kardaś<br /> *      wydanie II<br /> *      Którą szczerze i z całego serca polecam. :)<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />//#include &quot;LCD/lcd44780.h&quot;<br />//#include &quot;MK_USART/mkuart.h&quot;<br />//#include &quot;mk_html.h&quot;<br /><br />// Zealota -------------------------------<br />#define __UBRR 100<br />void lcd_locate(uint8_t x, uint8_t y) {<br />}<br />void lcd_str(char * str) {<br />}<br />void lcd_cls(void) {<br />}<br />void lcd_int(int d) {<br />}<br />void lcd_init(void) {<br />}<br />void uart_puts_P(const char * x) {<br />}<br />void uart_puts(char * x) {<br />}<br />void uart_putint(int x, int y) {<br />}<br />// Zealota -------------------------------<br /><br /><br /><br />typedef struct {<br />uint16_t adc_mid;<br />uint16_t ref_adc; //to wartośc adc odpowiadająca napięciu środkowemu mierzonego zakresu czyli ref_v<br />uint16_t ref_v; // środkowe napiecie mierzonego zakresu np pomiar od 0-12V ref_v = 6V<br />char v1&#91;3&#93;;<br />char v2&#91;3&#93;;<br />} TVOL;<br /><br />TVOL accu1_vol;  //zmienna strukturalna<br /><br />#define wej_1 PA5<br />#define wej_2 PA4<br />#define wej_3 PA3<br />#define wej_4 PA2<br />#define wejP_1 PA1<br />#define wejP_2 PA0<br />#define przycisk1 (1&lt;&lt;PD7)<br />#define przycisk2 (1&lt;&lt;PD6)<br />#define lcd_led (1&lt;&lt;PC7)<br /><br />#define REF_256 (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0) //wewneczne nap. od. 2,56V<br />#define REF_VCC (1&lt;&lt;REFS0) //napiecie zasilania jako referencyjne<br />#define REF_ZEW //zewnętrzne napięcie odniesienia<br />char uart_buf&#91;255&#93;;<br />char buffer_data_send1&#91;10&#93;;<br />char buffer_data_send2&#91;10&#93;;<br />char buffer_data_send3&#91;10&#93;;<br />char buffer_data_send4&#91;10&#93;;<br />char buffer_data_send5&#91;10&#93;;<br />char buffer_data_send6&#91;10&#93;;<br /><br />uint16_t pomiar(uint8_t kanal);<br />uint16_t licz;<br />uint16_t wynik;<br />uint16_t key;<br />uint32_t pm;<br />uint32_t pm2;<br />uint8_t czd;<br />uint16_t czu;<br />uint8_t s;<br /><br />// Zealota -------------------------------<br />void wyswietl(void) {<br />czd = pm / 10000;<br />czu = (pm / 100) % 100;<br /><br />if (czu &lt; 10) {<br />sprintf(buffer_data_send6, &quot;%i.0%i&quot;, czd, czu);<br />} else {<br />sprintf(buffer_data_send6, &quot;%i.%i&quot;, czd, czu);<br />}<br />}<br />// Zealota -------------------------------<br /><br /><br />volatile uint8_t ms10_flag;<br />volatile uint8_t ms10_cnt;<br />volatile uint8_t sekundy;<br />volatile uint8_t s1_flag;<br /><br />void parse_rs232(char * buf);<br />void http200ok(void);<br />void print_webpage(void);<br />void wyslij_parametry(uint8_t par_cnt);<br />void parametry_rs(void);<br /><br />void get_vol(uint16_t adc, TVOL * voltage);<br /><br />void podswietlenie(void) {<br />PORTC ^= lcd_led;<br />}<br /><br />void strony(void) {<br />lcd_cls();<br />s++;<br />if (s &gt; 2)<br />s = 0;<br />}<br /><br />void key_press(volatile uint8_t * KPIN, uint8_t key_mask,<br />void (*fun_key_press)(void));<br /><br />char cz_dz&#91;3&#93;;<br />char cz_u&#91;3&#93;;<br /><br />int main(void) {<br />DDRA &amp;= ~(1 &lt;&lt; wej_1); //Ustawienie kierunku pinów jako wejściowy ADC, przyciski<br />DDRA &amp;= ~(1 &lt;&lt; wej_2);<br />DDRA &amp;= ~(1 &lt;&lt; wej_3);<br />DDRA &amp;= ~(1 &lt;&lt; wej_4);<br />DDRA &amp;= ~(1 &lt;&lt; wejP_1);<br />DDRA &amp;= ~(1 &lt;&lt; wejP_2);<br />DDRD &amp;= ~ przycisk1;<br />DDRD &amp;= ~ przycisk2;<br /><br />DDRC |= lcd_led;              // ustawiamy kierunek pinów jako wyjściowy<br /><br />PORTD |= przycisk1;                 // podciągnięcie pinów przycisków do VCC<br />PORTD |= przycisk2;<br /><br />//PORTC |= lcd_led;// załączamy podświetlenie LCD - stan wysoki<br /><br />lcd_init(); /* inicjalizacja LCD */<br /><br />lcd_locate(0, 0);<br />lcd_str(&quot;Start...&quot;); /* napisy startowe info */<br />lcd_locate(1, 0);<br />lcd_str(&quot;SW ver 1.7&quot;);<br />_delay_ms(2000);<br />lcd_cls();<br /><br />s = 0; //strona wyświetlona po starcie programu<br /><br />//inicjalizacja ADC<br />ADCSRA |= (1 &lt;&lt; ADEN); //włącza adc<br />ADCSRA |= (1 &lt;&lt; ADPS2) | (1 &lt;&lt; ADPS1) | (1 &lt;&lt; ADPS0); //preskaler =16<br />//ADMUX |= REF_256;<br /><br />accu1_vol.ref_adc = 385; //wartośc adc dla 1/2 mierzonego zakresu tu dla 16V  (506 dla nap. odn. 2,56V)<br />accu1_vol.ref_v = 1600; // 1/2 zakresu mierzonego napięcia 0-32V<br /><br />TCCR0 |= (1 &lt;&lt; WGM01);<br />TCCR0 |= (1 &lt;&lt; CS02) | (1 &lt;&lt; CS00);<br />OCR0 = 107;<br />TIMSK = (1 &lt;&lt; OCIE0);<br /><br />//USART_Init(__UBRR);// Zealota<br />//register_uart_str_rx_event_callback(parse_rs232);// Zealota<br /><br />sei();<br /><br />while (1) {<br /><br />//UART_RX_STR_EVENT(uart_buf);// Zealota<br /><br />key_press(&amp;PIND, przycisk1, podswietlenie);  //załączenie podświetlenia<br />key_press(&amp;PIND, przycisk2, strony);        //przewijanie stron na lcd<br /><br />if (s1_flag) {<br /><br />//NAPIĘCIE<br />//pomiar kanał 1<br />wynik = pomiar(5);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send1, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//pomiar kanał 2<br />wynik = pomiar(4);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send2, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//pomiar kanał 3<br />wynik = pomiar(3);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send3, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//pomiar kanał 4<br />wynik = pomiar(2);<br />get_vol(wynik, &amp;accu1_vol);<br />sprintf(buffer_data_send4, &quot;%s.%s&quot;, accu1_vol.v1, accu1_vol.v2);<br /><br />//PRĄD<br />//pomiar kanał 1<br />pm = pomiar(1);<br />if (pm &gt; 781)<br />pm = 781;<br />pm2 = (781 - pm) * 322;<br /><br /><br />wyswietl();<br /><br /><br />//pomiar kanał 2<br />pm = pomiar(2);<br />if (pm &gt; 781)<br />pm = 781;<br />pm = (781 - pm) * 322;<br /><br /><br /><br />wyswietl();<br /><br />//Wyświetlanie wartosci w postaci 3 ekranów<br />if (s == 0) {        // ekran 0<br />lcd_locate(0, 0);<br />lcd_str(&quot;U1:&quot;);<br />lcd_locate(0, 3);<br />lcd_str(buffer_data_send1);<br />lcd_str(&quot;V &quot;);<br /><br />lcd_locate(1, 0);<br />lcd_str(&quot;I1:&quot;);<br />lcd_locate(1, 3);<br /><br />lcd_str(buffer_data_send3);<br />lcd_str(&quot;V  &quot;);<br />} else if (s == 1) {     //ekran 1<br />lcd_locate(0, 0);<br />lcd_str(&quot;1:&quot;);<br />lcd_locate(0, 2);<br />lcd_str(buffer_data_send1);<br />lcd_str(&quot;V &quot;);<br /><br />lcd_locate(0, 9);<br />lcd_str(&quot;2:&quot;);<br />lcd_locate(0, 11);<br />lcd_str(buffer_data_send2);<br />lcd_str(&quot;V &quot;);<br /><br />lcd_locate(1, 0);<br />lcd_str(&quot;3:&quot;);<br />lcd_locate(1, 2);<br />lcd_str(buffer_data_send3);<br />lcd_str(&quot;V  &quot;);<br /><br />lcd_locate(1, 9);<br />lcd_str(&quot;4:&quot;);<br />lcd_locate(1, 11);<br />lcd_str(buffer_data_send4);<br />lcd_str(&quot;V &quot;);<br />} else if (s == 2) {   //ekran 2<br />lcd_locate(0, 0);<br />lcd_str(&quot;I1:&quot;);<br />lcd_locate(0, 3);<br />lcd_str(buffer_data_send5);<br />lcd_str(&quot;A  &quot;);<br />lcd_locate(0, 13);<br />lcd_int(pm);<br />lcd_locate(1, 0);<br />lcd_str(&quot;I2:&quot;);<br />}<br /><br />s1_flag = 0;<br />}<br /><br />}<br />}<br /><br />ISR(TIMER0_COMP_vect) {<br />ms10_flag = 1;<br />if (++ms10_cnt &gt; 99) {<br />s1_flag = 1;<br />sekundy++;<br />if (sekundy &gt; 59)<br />sekundy = 0;<br />ms10_cnt = 0;<br />}<br />}<br /><br />uint16_t pomiar(uint8_t kanal) {<br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br />ADCSRA |= (1 &lt;&lt; ADSC); //start konwersji<br />while ( ADCSRA &amp; (1 &lt;&lt; ADSC))<br />;<br />return ADCW;<br />}<br /><br />void key_press(volatile uint8_t * KPIN, uint8_t key_mask,<br />void (*fun_key_press)(void)) {<br />register uint8_t key_press = (*KPIN &amp; key_mask);<br />if (!key &amp;&amp; !key_press) {<br />key = 1000;<br />if (fun_key_press)<br />fun_key_press();<br /><br />} else if (key &amp;&amp; key_press)<br />key++;<br />}<br /><br />void get_vol(uint16_t adc, TVOL * voltage) {<br /><br />uint16_t wynik = (adc * (uint32_t) voltage-&gt;ref_v) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa(divmod.quot, voltage-&gt;v1, 10); // czesc jedności ułamka / częsc całkowita<br />itoa(divmod.rem, voltage-&gt;v2, 10); // czesc dziesiatek ułamka / reszta z dzielenia<br />if (divmod.rem &lt; 10) { //eliminacja problemu zera po przecinku np. wyświetlenie wartosci 5,06V<br />voltage-&gt;v2&#91;0&#93; = '0';<br />voltage-&gt;v2&#91;1&#93; = divmod.rem + '0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93; = 0;<br />voltage-&gt;v2&#91;2&#93; = 0;<br />}<br /><br />void wyslij_parametry(uint8_t par_cnt) {<br />switch (par_cnt) {<br />//case 0: uart_puts(&quot;0,00&quot;); break;<br />case 0:<br />uart_puts(buffer_data_send1);<br />break;<br />case 1:<br />uart_puts(buffer_data_send2);<br />break;<br />case 2:<br />uart_puts(buffer_data_send3);<br />break;<br />case 3:<br />uart_puts(buffer_data_send4);<br />break;<br />case 4:<br />uart_puts(buffer_data_send5);<br />break;<br />case 5:<br />uart_puts(buffer_data_send6);<br />break;<br />case 6:<br />uart_puts_P(PSTR(&quot; 1.3_28.10.2016&quot;));<br />break;<br />case 7:<br />uart_putint(++licz, 10);<br />break;<br />}<br /><br />}<br /><br />void parametry_rs(void) {<br /><br />uart_puts_P(PSTR(&quot; SW ver 1.7_21.07.2018  Com_0 115200 8 n 1\r\n&quot;));<br /><br />}<br /><br />void http200ok(void) {<br />uart_puts_P(<br />PSTR(<br />&quot;HTTP/1.0 200 OK\r\nContent-Type: text/html; charset=windows-1250\r\nPragma: no-cache\r\n\r\n&quot;));<br />}<br /><br />void print_webpage(void) {<br /><br />http200ok();<br />//SendParamWeb(html, wyslij_parametry);// Zealota<br />}<br />void parse_rs232(char * buf) {<br />if (!strncmp(&quot;GET / &quot;, buf, 6)) {<br />print_webpage();<br />} else if (strncmp(&quot;GET /&quot;, buf, 4) == 0<br />&amp;&amp; strncmp(&quot; / &quot;, &amp;buf&#91;3&#93;, 6) != 0) {<br />uart_puts_P(<br />PSTR(<br />&quot;HTTP/1.0 404cNot found\r\nContent-Typ: text/html\r\n\r\n&lt;h1&gt;404 Not Found&lt;/1h&gt;&quot;));<br />} else if (!strncmp(&quot;rs&quot;, buf, 6)) {<br />parametry_rs();<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 27 lip 2018, o 12:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-07-27T12:06:39+01:00</updated>
<published>2018-07-27T12:06:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210195#p210195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210195#p210195"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210195#p210195"><![CDATA[
Ja nie mam na tyle czasu aby analizować tak rozbudowane kody, jak sprowadzisz go do postaci o jakiej pisał Zelaota<br /><br /><div class="quotetitle">Zealota napisał(a):</div><div class="quotecontent"><br />Co do kodu, to wg mnie piszesz trochę za dużo &quot;linijek na raz&quot;.<br />Warto skracać rozwlekłe ciała funkcji, czy if'y do mniejszych &quot;bloków&quot;, łatwiej to analizować<br /></div><br /><br />dla mnie to PODSTAWA jak się wrzuca jakiś problem w kodzie, czyli wyizolowany mały fragment - wtedy można testować<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br /><div class="quotetitle">Rafciu napisał(a):</div><div class="quotecontent"><br />Może Mirek jeszcze coś podpowie.<br /></div><br />Ja bym potrzebował fragmentu kodu a nie hektolitry kodu. Więc wyizoluj problem do kilku linijek i go wklej. Wiesz - tak żeby ktoś kto zagląda do postu mógł stworzyć sobie w Eclipse pusty projekt, wkleić twój fragment kodu i sprawdzić czy ma taki błąd i próbować znaleźć rozwiązanie. A przecież w tym swoim pliku mainC poza mnóstwem kodu nie mającego NIC WSPÓLNEGO z problemem, masz pełno zależności z różnymi plikami bibliotek itp itd<br /><br />Pokaż dokładnie jaki masz błąd w konsoli<br /><br />wtedy będę mógł sprawdzić - no i w ogóle jakiej wersji toolchaina używasz ? zakładam, że najnowszej ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br />ok żeby nie było, że cię zbywam - to WEŹ ŻE PAN ZOBACZ co to znaczy &quot;wyizolowanie problemu do kilku linijek:<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdio.h&gt;<br />//#include &quot;LCD/lcd44780.h&quot;<br /><br />char buffer_data_send6&#91;10&#93;;<br /><br />//uint16_t pomiar(uint8_t kanal);<br />uint32_t pm;<br />uint32_t pm2;<br />uint8_t czd;<br />uint16_t czu;<br /><br />int main(void) {<br /><br />pm = 245; //pomiar(2);<br />if (pm &gt; 781) pm = 781;<br />pm2 = (781 - pm) * 322;<br />czd = pm2 / 10000;<br />czu = (pm2 / 100) % 100;<br />if (czu &lt; 10)<br />sprintf(buffer_data_send6, &quot;%i.0%i&quot;, czd, czu);<br />else<br />sprintf(buffer_data_send6, &quot;%i.%i&quot;, czd, czu);<br /><br />while (1);<br />}[/syntax]<br /><br />no ale ten twój kod u mnie nie powoduje żadnych błędów kompilacji - więc ty sprawdź czy u ciebie powoduje - i na bazie czegoś takiego zadaje się porządne pytanie na forum - rozumiesz ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2018, o 12:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-27T11:54:55+01:00</updated>
<published>2018-07-27T11:54:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210194#p210194</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210194#p210194"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210194#p210194"><![CDATA[
Poprawiłem według i podpowiedzi kolegi Zealota i według Mirka błąd nadal występuje bez zmian.<br />Jeszcze raz załączam cały main.c  <br />Ten sam błąd kiedyś Mirku występował w kodzie FAT FS z blueboka  <!-- l --><a class="postlink-local" href="https://forum.atnel.pl/topic14846.html" >topic14846.html</a><!-- l --><br /><br />Zealota też tak myślę wyciągając wniosek z tematu wyżej gdzie też na jednym  Atnel Toolchain było dobrze a na drugi nowszym był już błąd, niestety jestem za cienki żeby sam to poprawić.<br />Może Mirek jeszcze coś podpowie.<br />Dziękuję za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 27 lip 2018, o 11:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-27T11:43:43+01:00</updated>
<published>2018-07-27T11:43:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210193#p210193</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210193#p210193"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210193#p210193"><![CDATA[
<div class="quotetitle">Rafciu napisał(a):</div><div class="quotecontent"><br />Do tego należy dodać jeszcze jedno pytanie dlaczego w AVR Studio 4 wszystko kompiluje się OK.<br /></div><br />Będę się upierał, póki co, że podałem przyczynę.<br />Inny program, inny kompilator, inny poziom optymalizacji.<br />Pójdź tym tropem i porównaj wersje składowych obu środowisk.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 27 lip 2018, o 11:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-07-27T11:26:22+01:00</updated>
<published>2018-07-27T11:26:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210192#p210192</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210192#p210192"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210192#p210192"><![CDATA[
<div class="quotetitle">Rafciu napisał(a):</div><div class="quotecontent"><br />  if(czu&lt;10)<br />   sprintf(buffer_data_send6, &quot;%i.0%i&quot;,  czd, czu);<br />  else<br />   sprintf(buffer_data_send6, &quot;%i.%i&quot;, czd, czu);<br /></div><br /><br />Jak widzę taki kod to zachodzę w głowę - po jakiego grzyba jest ten IF ? skoro wystarczy TA JEDNA LINIA bez IF'a<br /><br />[syntax=c]sprintf(buffer_data_send6, &quot;%d.%02d&quot;,  czd, czu);[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />po to stosuje się formatowanie żeby nie bawić się w takie kocie IF'y, które pokazałem w Bluebooku TYLKO po to aby zrozumieć jak to działa .... a jak już się sięga po sprintf i formatowanie - to się z tego w pełni korzysta<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2018, o 11:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-27T10:48:40+01:00</updated>
<published>2018-07-27T10:48:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210191#p210191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210191#p210191"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210191#p210191"><![CDATA[
Do tego należy dodać jeszcze jedno pytanie dlaczego w AVR Studio 4 wszystko kompiluje się OK. A u mnie w Eclip problem pojawia się tylko wtedy gdy pojawia się drugi raz kod <br />[syntax=c]//pomiar kanał 2<br /> <br />  pm = pomiar(2);<br />  if(pm&gt;781)pm=781;<br />  pm2 = (781-pm)*322;<br />  czd = pm2/10000;<br />  czu = (pm2/100) % 100;<br />  if(czu&lt;10)<br />   sprintf(buffer_data_send6, &quot;%i.0%i&quot;,  czd, czu);<br />  else<br />   sprintf(buffer_data_send6, &quot;%i.%i&quot;, czd, czu);<br /> <br />// ***************************************** //[/syntax]<br /><br /><br />A przecież wcześniej w części //pomiar kanał 1 też jest  zmienna czu i obliczenia też są te same ?? Co ciekawe wprowadzenie innych zmiennych dla pomiar kanał 2 np. zamiast czu wprowadzenie czu1 też nic nie zmienia błąd dalej jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 27 lip 2018, o 10:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-07-27T09:33:43+01:00</updated>
<published>2018-07-27T09:33:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210190#p210190</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210190#p210190"/>
<title type="html"><![CDATA[Re: Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210190#p210190"><![CDATA[
Błąd masz tutaj:<br /><br />[syntax=c]if (czu &lt; 10) {<br />sprintf(buffer_data_send5, &quot;%i.0%i&quot;, czd, czu);<br />}<br />else {<br />sprintf(buffer_data_send5, &quot;%i.%i&quot;, czd, czu);<br />}<br />}[/syntax]<br />Błąd powoduje zmienna &quot;czu&quot;.<br />A bezpośrednią przyczyną są wyliczenia:<br />[syntax=c]czu = (pm2 / 100) % 100;<br />czu = (pm / 100) % 100;[/syntax]<br /><br />Pytanie jest takie dlaczego to się dzieje? Coś jest nie tak z przekazaniem parametru do sprintf.<br />A AS działało, bo tam prawdopodobnie jest inaczej zrobiony sprintf, inne biblioteki.<br />Po chwili prób niestety nie udało mi się znaleźć przyczyny. Próbowałem jawnie rzutować na kilka sposobów, ale bez rezultatu, może ktoś bardziej zaawansowany coś jeszcze podpowie.<br /><br />Co do kodu, to wg mnie piszesz trochę za dużo &quot;linijek na raz&quot;.<br />Warto skracać rozwlekłe ciała funkcji, czy if'y do mniejszych &quot;bloków&quot;, łatwiej to analizować <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Kolejne analizy.<br />Błąd mamy przy optymalizacji -Os, oczko niżej -O3 już wszystko działa.<br />Zatem kompilator wpływa prawdopodobnie na przekazanie parametru.<br />Znalazłem obejście dla -Os, wystarczy wprowadzić dodatkową zmienną, np <br />[syntax=c]uint16_t tmp = czu[/syntax]<br />i podstawić ją zamiast &quot;czu&quot; do funkcji sprintf.<br /><br />Jeszcze inne obejście problemu, to zamknięcie problematycznej sekwecji do osobnej funkcji, np:<br />[syntax=c]void wyswietl (void) {<br />czd = pm / 10000;<br />czu = (pm / 100) % 100;<br /><br />if (czu &lt; 10) {<br />sprintf(buffer_data_send6, &quot;%i.0%i&quot;, czd, czu);<br />} else {<br />sprintf(buffer_data_send6, &quot;%i.%i&quot;, czd, czu);<br />}<br />}[/syntax]<br /><br />i wywołanie jej w odpowiednim miejscu.<br />W następnym kroku należałoby zajrzeć do rozwinięcia asemblerowego, ale to już pozostawiam innym <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 27 lip 2018, o 09:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2018-07-26T22:04:21+01:00</updated>
<published>2018-07-26T22:04:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210173#p210173</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210173#p210173"/>
<title type="html"><![CDATA[Błąd &quot;internal compiler error ...&quot; w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21044&amp;p=210173#p210173"><![CDATA[
Witam<br />Mam mały problem z Eclipse (tak sądzę ) otóż podczas kompilacji mojego programu otrzymuje błąd przy zamykającym nawiasie } funkcje int main(void) {} dokładnie chodzi o błąd &quot;internal compiler error: in push reload, at reload.c:1360&quot;  opisywany też w tym temacie <!-- l --><a class="postlink-local" href="https://forum.atnel.pl/topic14846.html" >topic14846.html</a><!-- l --><br /><br />Błąd powstaje wtedy gdy w programie pojawi się ta część kodu [syntax=c]//pomiar kanał 2<br /><br />  pm = pomiar(2);<br />  if(pm&gt;781)pm=781;<br />  pm2 = (781-pm)*322;<br />  czd = pm2/10000;<br />  czu = (pm2/100) % 100;<br />  if(czu&lt;10)<br />   sprintf(buffer_data_send6, &quot;%i.0%i&quot;,  czd, czu);<br />  else<br />   sprintf(buffer_data_send6, &quot;%i.%i&quot;, czd, czu);<br /><br />// ***************************************** //[/syntax]<br /><br />gdy ją za komentuje całą wszystko kompiluje się Ok.<br /> <br />W załączniku wrzucam cały plik main.c<br /><br />Sprawdziłem i na pewno nawiasy są OK.<br />Założenie nowego projektu również nie pomogło.<br />Zmienne pm, pm2, czd, czu,   mam zdefiniowane na początku programu przed ciałem funkcji main() więc jeśli dobrze rozumiem powinny mieć zakres globalny o czym mowa jest w temacie  <!-- l --><a class="postlink-local" href="https://forum.atnel.pl/topic14846.html" >topic14846.html</a><!-- l --> również nie pomogło.<br /><br />Program dałem do skompilowania koledze i w Atmel Studio 4 kompiluje się bez problemu.<br /><br />Ja program kompiluję w Eclips MARS (Mars.1 Release (4.5.1)) ,  Atnel Toolchain 3.4.5.1522 i AVR_plugin_241 pobrane z bloga Mirka.<br /><br />Będę bardzo wdzięczny za każdą sugestię.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 26 lip 2018, o 22:04</p><hr />
]]></content>
</entry>
</feed>