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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-10-13T11:24:03+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21411&amp;mode</id>
<entry>
<author><name><![CDATA[11jacekj]]></name></author>
<updated>2018-10-13T11:24:03+01:00</updated>
<published>2018-10-13T11:24:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212591#p212591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212591#p212591"/>
<title type="html"><![CDATA[Re: Warning przy kompilacji tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212591#p212591"><![CDATA[
<div class="quotetitle">Zealota napisał(a):</div><div class="quotecontent"><br />Klasyk, domyślna promocja do int, powoduje, że elementy tablicy są zbyt duże, int zamiast zadeklarowanych uint8_t<br />Zrób tak:<br />[syntax=c]const uint8_t cyfry&#91;11&#93; PROGMEM = {<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),                // 0<br />(uint8_t)~(SEG_B|SEG_C),// 1<br />(uint8_t)~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),// 2<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),// 3<br />(uint8_t)~(SEG_B|SEG_C|SEG_F|SEG_G),// 4<br />(uint8_t)~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),// 5<br />(uint8_t)~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 6<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_F),// 7<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 8<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),// 9<br />    0xFF                                                                                    // NIC (puste miejsce)<br />};[/syntax]<br /><br />W ten sposób jawnie zarzutujesz i kompilator będzie pewien jak działać.<br /></div><br /><br />To co napisałeś działa. A mógł byś mi wytłumaczyć jeszcze dlaczego taks się dzieje że w jednym projekcie działa bez jawnego rzutowania a w innym nie? Na tym samym kompilatorze w tym samym środowisku?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12856">11jacekj</a> — 13 paź 2018, o 11:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-10-11T21:48:41+01:00</updated>
<published>2018-10-11T21:48:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212536#p212536</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212536#p212536"/>
<title type="html"><![CDATA[Re: Warning przy kompilacji tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212536#p212536"><![CDATA[
Klasyk, domyślna promocja do int, powoduje, że elementy tablicy są zbyt duże, int zamiast zadeklarowanych uint8_t<br />Zrób tak:<br />[syntax=c]const uint8_t cyfry&#91;11&#93; PROGMEM = {<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),                // 0<br />(uint8_t)~(SEG_B|SEG_C),// 1<br />(uint8_t)~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),// 2<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),// 3<br />(uint8_t)~(SEG_B|SEG_C|SEG_F|SEG_G),// 4<br />(uint8_t)~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),// 5<br />(uint8_t)~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 6<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_F),// 7<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 8<br />(uint8_t)~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),// 9<br />    0xFF                                                                                    // NIC (puste miejsce)<br />};[/syntax]<br /><br />W ten sposób jawnie zarzutujesz i kompilator będzie pewien jak działać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 11 paź 2018, o 21:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[11jacekj]]></name></author>
<updated>2018-10-11T21:07:12+01:00</updated>
<published>2018-10-11T21:07:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212535#p212535</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212535#p212535"/>
<title type="html"><![CDATA[Re: Warning przy kompilacji tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212535#p212535"><![CDATA[
main.c[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;multipleks.h&quot;<br /><br /><br />volatile int licznik = 0;<br /><br />//////////////////////////////////////liczba do wyświetlenia///////////////////////////////////////<br />int liczna = 1979;<br /><br />int a=1;////////////////////////////////////////////szybkość multipleksowania, minmum wartość 1<br /><br />int main (void)<br />{<br /><br />led_init();<br /><br />sei();<br /><br />while(1){<br /><br />if (licznik==0){<br />ANODY_PORT |= ANODA4;//wygaszenie anody<br /><br />//miejsce na obsługę katod<br /><br />ANODY_PORT &amp;= ~ANODA1;//zapalenie anody<br />}<br /><br />if (licznik==1*a){<br />ANODY_PORT |= ANODA1;//wygaszenie anody<br /><br />//miejsce na obsługę katod<br /><br />ANODY_PORT &amp;= ~ANODA2;//zapalenie anody<br />}<br />if (licznik==2*a){<br />ANODY_PORT |= ANODA2;//wygaszenie anody<br /><br />//miejsce na obsługę katod<br /><br />ANODY_PORT &amp;= ~ANODA3;//zapalenie anody<br />}<br /><br />if (licznik==3*a){<br />ANODY_PORT |= ANODA3;//wygaszenie anody<br /><br />//miejsce na obsługę katod<br /><br />ANODY_PORT &amp;= ~ANODA4;//zapalenie anody<br />}<br /><br />if(licznik&gt;4*a){<br />ANODY_PORT &amp;= ~ANODA1;//zapalenie anody<br />licznik=0;}<br /><br />}//koniec pętli głównej<br /><br />}//koniec main<br /><br /><br />ISR(TIMER2_COMP_vect){<br /><br />licznik++;<br />}[/syntax]<br />multipleks.c[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &quot;multipleks.h&quot;<br /><br /><br />// definicja tablicy zawierającej definicje bitowe cyfr LED<br />const uint8_t cyfry&#91;11&#93; PROGMEM = {<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),// 0<br />~(SEG_B|SEG_C),// 1<br />~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),// 2<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),// 3<br />~(SEG_B|SEG_C|SEG_F|SEG_G),// 4<br />~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),// 5<br />~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 6<br />~(SEG_A|SEG_B|SEG_C|SEG_F),// 7<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 8<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),// 9<br />0xFF// NIC (puste miejsce)<br />};<br /><br /><br />void led_init(void){<br /><br />///////////////////////////////////////////////////konfiguracja anod///////////////////////////////<br /><br />PORTB |= (ANODA1|ANODA2|ANODA3|ANODA4);<br />DDRB |= (ANODA1|ANODA2|ANODA3|ANODA4); //piny PB1..PB4 wyjścia 0x1E<br /><br />//////////////////////////////////////////////////konfiguracja katod///////////////////////////////<br /><br />DDRD |= SEG_G|SEG_C|SEG_DP|SEG_D|SEG_E;//piny katod ustawione jako wyjścia<br />PORTD &amp;= ~(SEG_G|SEG_C|SEG_DP|SEG_D|SEG_E);//pint katod wyzerowane (segmenty wygaszone)<br /><br />DDRC |= SEG_A|SEG_B|SEG_F;//piny katod ustawione jako wyjścia<br />PORTC &amp;= ~(SEG_A|SEG_B|SEG_F);//pint katod wyzerowane (segmenty wygaszone)<br /><br />////////////////////////inicjalizacja przerwania///////////////////////////////////////////////////<br /><br />TCCR2 |= (1&lt;&lt;WGM21);//Tryb CTC<br />TCCR2 |= pre1024;//preskaler 1024<br />OCR2 = 0;//wartość przepełnienia<br />TIMSK |= (1&lt;&lt;OCIE2);//zezwolenie na przerwanie ComtareeMatch<br /><br />}<br />////////////////////////koniec funkcji led_init////////////////////////////////////////////////////<br /><br /><br />////////////////////////////dekodowanie liczby do wyświetlenia////////////////////////////////////[/syntax]<br />multipleks.h[syntax=c]/*WAGI BITÓW<br /> *      0x7654 3210<br /> * DDR  0b0001 1110=0x1E<br /> * PORT 0b1110 0001=0xE1<br /> * WAGI   8421 8421<br /> *        ---O OOO-<br /> */<br /><br />#ifndef MULTIPLEKS_H_<br />#define MULTIPLEKS_H_<br /><br />//////////////////////////////definicja portów anod////////////////////////////////////////////////<br />#define ANODY_DIR DDRB<br />#define ANODY_PORT PORTB<br /><br />/////////////////////////////definicja pinów anod//////////////////////////////////////////////////<br />#define ANODA1 (1&lt;&lt;PB1)<br />#define ANODA2 (1&lt;&lt;PB2)<br />#define ANODA3 (1&lt;&lt;PB3)<br />#define ANODA4 (1&lt;&lt;PB0)<br /><br />//////////////////////////////////definicja portów segmentów///////////////////////////////////////<br />#define SEGMENTY_DIRC DDRC<br />#define SEGMENTY_DIRD DDRD<br />#define SEGMENTY_PORTC PORTC<br />#define SEGMENTY_PORTD PORTD<br /><br />/////////////////////definicja pinów segmentów/////////////////////////////////////////////////////<br />#define SEG_A 1&lt;&lt;PC0<br />#define SEG_B 1&lt;&lt;PC2<br />#define SEG_C 1&lt;&lt;PD4<br />#define SEG_D 1&lt;&lt;PD6<br />#define SEG_E 1&lt;&lt;PD7<br />#define SEG_F 1&lt;&lt;PC1<br />#define SEG_G 1&lt;&lt;PD3<br />#define SEG_DP 1&lt;&lt;PD5<br /><br />#define NIC 10<br /><br />//szybkość multipleksowania<br />#define pre0 (1&lt;&lt;CS20)<br />#define pre8 (1&lt;&lt;CS21)<br />#define pre32 (1&lt;&lt;CS20)|(1&lt;&lt;CS21)<br />#define pre64 (1&lt;&lt;CS22)<br />#define pre128 (1&lt;&lt;CS20)|(1&lt;&lt;CS22)<br />#define pre256 (1&lt;&lt;CS21)|(1&lt;&lt;CS22)<br />#define pre1024 (1&lt;&lt;CS20)|(1&lt;&lt;CS21)|(1&lt;&lt;CS22)<br /><br /><br />extern int liczna; ////delaracja zmiennej której warość będzie wyświetlana la wyświetlaczu<br /><br />//funkcje<br />void led_init(void);<br /><br />#endif /* MULTIPLEKS_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12856">11jacekj</a> — 11 paź 2018, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[11jacekj]]></name></author>
<updated>2018-10-11T20:47:34+01:00</updated>
<published>2018-10-11T20:47:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212532#p212532</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212532#p212532"/>
<title type="html"><![CDATA[Re: Warning przy kompilacji tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212532#p212532"><![CDATA[
<div class="quotetitle">danny napisał(a):</div><div class="quotecontent"><br />Wpisałes const uint8_t cyfry czy const cyfry?<br /></div><br />const uint8_t cyfry.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12856">11jacekj</a> — 11 paź 2018, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[danny]]></name></author>
<updated>2018-10-11T20:45:14+01:00</updated>
<published>2018-10-11T20:45:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212531#p212531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212531#p212531"/>
<title type="html"><![CDATA[Re: Warning przy kompilacji tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212531#p212531"><![CDATA[
Wpisałes const uint8_t cyfry czy const cyfry?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1505">danny</a> — 11 paź 2018, o 20:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[11jacekj]]></name></author>
<updated>2018-10-11T20:42:46+01:00</updated>
<published>2018-10-11T20:42:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212530#p212530</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212530#p212530"/>
<title type="html"><![CDATA[Warning przy kompilacji tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21411&amp;p=212530#p212530"><![CDATA[
Witam. Mam taki problem, skopiowałem sobie tablicę znaków do multipleksowania wyświetlacza LED. jedyna różnica polega na tym że na początku deklaracji dodałem [syntax=c]const[/syntax] bo miałem komunikat [syntax=c]variable ‘cyfry’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’ uint8_t cyfry&#91;15&#93; PROGMEM = {[/syntax]. Po kompilacji mam też następujące warningi [syntax=c]../multipleks.c:9:3: warning: large integer implicitly truncated to unsigned type &#91;-Woverflow&#93;<br />   ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),   // 0<br />   ^<br />../multipleks.c:11:3: warning: large integer implicitly truncated to unsigned type &#91;-Woverflow&#93;<br />   ~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),    // 2<br />   ^<br />../multipleks.c:15:3: warning: large integer implicitly truncated to unsigned type &#91;-Woverflow&#93;<br />   ~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),   // 6<br />   ^<br />../multipleks.c:17:3: warning: large integer implicitly truncated to unsigned type &#91;-Woverflow&#93;<br />   ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G), // 8<br />   ^<br />subdir.mk:21: polecenia dla obiektu 'multipleks.o' nie powiodły się<br />make: *** &#91;multipleks.o&#93; Błąd 1[/syntax]<br />nie ogarniam dlaczego. W innym kodzie użyłem tej samej tablicy też na Atmegę8 i było wszystko w porządku. Co może być powodem tego błędu w tym kodzie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12856">11jacekj</a> — 11 paź 2018, o 20:42</p><hr />
]]></content>
</entry>
</feed>