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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-28T06:54:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18000&amp;mode</id>
<entry>
<author><name><![CDATA[fotograf9]]></name></author>
<updated>2017-03-28T06:54:06+01:00</updated>
<published>2017-03-28T06:54:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185763#p185763</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185763#p185763"/>
<title type="html"><![CDATA[Re: Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185763#p185763"><![CDATA[
W 11 linii kodu to może nie, ale gdzieś na pewno. Podsyłam część kodu, może ktoś będzie widział mój błąd<br />[syntax=c]#include &lt;string.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &quot;font.h&quot;<br />#include &quot;fonts/ArialB16.h&quot;<br />#include &quot;tablice/tablice.h&quot;<br />#include &quot;config.h&quot;<br /><br />uint16_t GFXWriteStringXY(uint8_t x,uint8_t y,const char *string,uint8_t color);<br />uint8_t GFXGetCharWidth(char c);<br />uint8_t CharIndexOfPixel(const char *s, uint16_t pixel);<br />void ScrollMsg(const char *msg);<br />void P10SelCh(uint8_t channel);<br />void P10DispOff();<br />void P10DispOn();<br /><br />uint8_t p10_vram&#91;GFX_SCREEN_MEMORY&#93;;<br />uint8_t p10_vram_kopia&#91;GFX_SCREEN_MEMORY&#93;;<br /><br />//Initialize HC595 System<br />void HC595Init(){<br />   //Make the Data(DS), Shift clock (SH_CP), Store Clock (ST_CP) lines output<br />   HC595_DDR|=((1&lt;&lt;HC595_SH_CP_POS)|(1&lt;&lt;HC595_ST_CP_POS)|(1&lt;&lt;HC595_DS_POS));<br />   P10_CH_DDR|=((1&lt;&lt;P10_CH_A_POS)|(1&lt;&lt;P10_CH_B_POS));<br />   P10_EN_DDR|=(1&lt;&lt;P10_EN_POS);<br />   P10SelCh(3);<br />}<br /><br />void P10SelCh(uint8_t channel){ //przełączanie kanału<br />P10_CH_PORT&amp;=(~((1&lt;&lt;P10_CH_A_POS)|(1&lt;&lt;P10_CH_B_POS)));<br />switch(channel){<br />case 0:<br />break;<br />case 1:<br />P10_CH_PORT|=(1&lt;&lt;P10_CH_A_POS);<br />break;<br />case 2:<br />P10_CH_PORT|=(1&lt;&lt;P10_CH_B_POS);<br />break;<br />case 3:<br />P10_CH_PORT|=((1&lt;&lt;P10_CH_A_POS)|(1&lt;&lt;P10_CH_B_POS));<br />break;<br />}<br />}<br />void P10DispOff(){<br />P10_EN_PORT&amp;=~(1&lt;&lt;P10_EN_POS);<br />}<br /><br />void P10DispOn(){<br />P10_EN_PORT|=(1&lt;&lt;P10_EN_POS);<br />}<br /><br />void P10PutPixel(uint8_t x,uint8_t y){ //funkcja wyliczająca miejsce piksela na matrycy<br />if(x&lt;0 || x&gt;=GFX_SCREEN_WIDTH || y&lt;0 || y&gt;=GFX_SCREEN_HEIGHT) return;<br />uint8_t xx=x/8;<br />uint8_t dd=x%8;<br />uint8_t d=p10_vram_kopia&#91;xx*16+y&#93;;<br />dd=7-dd;<br />d=d&amp;~(1&lt;&lt;dd);<br />p10_vram_kopia&#91;xx*16+y&#93;=d;// tu pomyslec nad tym!! zeby byla jedna tabica<br />//funkcja zmieniajca miejsca tablic odbicie lustrzane liter<br />if(x&lt;8){<br />if(y&lt;8) p10_vram&#91;GFX_SCREEN_HEIGHT-y-1&#93;=p10_vram_kopia&#91;y&#93;;<br />if(y&gt;=8 &amp;&amp; y&lt;16) p10_vram&#91;GFX_SCREEN_HEIGHT-y-1&#93;= p10_vram_kopia&#91;y&#93;;<br />}<br />else if(x&gt;=8){<br />if(y&lt;8) p10_vram&#91;((xx+1)*GFX_SCREEN_HEIGHT)-y-1&#93;=p10_vram_kopia&#91;xx*16+y&#93;;<br />if(y&gt;=8 &amp;&amp; y&lt;16) p10_vram&#91;((xx+1)*GFX_SCREEN_HEIGHT)-y-1&#93;=p10_vram_kopia&#91;xx*16+y&#93;;<br />}<br />}<br /><br />void P10Clear(){<br />for(uint8_t i=0;i&lt;GFX_SCREEN_MEMORY;i++){<br />p10_vram&#91;i&#93;=0xff;<br />p10_vram_kopia&#91;i&#93;=0xff;<br />}<br />}<br /><br /><br />void HC595Pulse(){ <br />   HC595_PORT|=(1&lt;&lt;HC595_SH_CP_POS);//HIGH<br />   HC595_PORT&amp;=(~(1&lt;&lt;HC595_SH_CP_POS));//LOW<br />}<br /><br />void HC595Latch(){<br />   //Pulse the Store Clock<br />   HC595_PORT|=(1&lt;&lt;HC595_ST_CP_POS);//HIGH<br />   _delay_loop_1(1);<br />   HC595_PORT&amp;=(~(1&lt;&lt;HC595_ST_CP_POS));//LOW<br />   _delay_loop_1(1);<br />}<br /><br />void HC595Write(uint8_t data)<br />{<br />   //Wysyłanie każdych 8 bitów seryjnie<br />   //Najpierw bit MSB<br />   for(uint8_t i=0;i&lt;8;i++){<br />      //Wpisywanie danych na linie DS zgodnie z wartością MSB<br />      if(data &amp; 0b10000000) HC595DataHigh(); //jeżeli MSB jest 1 to wyjście stan wysoki<br />      else  HC595DataLow(); //w przeciwnym wypadku stan niski<br />      HC595Pulse();  <br />      data=data&lt;&lt;1;  //Wprowadzenie kolejnego mitu na pozycję MSB<br />   }<br />}<br /><br />int main(void){<br />   HC595Init();<br />   GFXSetFont(ArialB16);<br />   P10Clear();<br />   //Setup timer 0 to automatically refresh the display<br />   TCCR0|=((1&lt;&lt;CS01)|(1&lt;&lt;CS00)); // Prescaler = FCPU/64<br />   TIMSK|=(1&lt;&lt;TOIE0);  //Enable Overflow Interrupt Enable<br />   TCNT0=60; //Initialize Counter<br />   sei();//Enable Global Interrupt<br />   while(1){<br />for(uint8_t i=0;i&lt;GFX_SCREEN_MEMORY;i++) p10_vram&#91;i&#93;=pgm_read_byte(&amp;BLAD_BARIER&#91;i&#93;);<br />   }<br />}<br /><br />ISR(TIMER0_OVF_vect){<br />   static uint8_t channel=0;<br />   for(uint8_t i=0;i&lt;GFX_TIMER_CLOCK;i++) HC595Write(p10_vram&#91;i*4+channel&#93;);<br />   P10DispOff();<br />   HC595Latch();<br />   P10SelCh(3-channel);<br />   P10DispOn();<br />   channel++;<br />   if(channel==4) channel=0;<br />}<br /><br />// FUNKCJE WYSYŁANIA ZNAKU, TESKTU, PRZEWIJANIA<br /><br />uint16_t GFXPutCharXY(uint8_t x, uint8_t y,char znak,uint8_t color){...}<br />uint16_t GFXWriteStringXY(uint8_t x,uint8_t y,const char *string,uint8_t color){...}<br />uint8_t GFXGetCharWidth(char c){...}<br />uint16_t GFXGetStringWidth(const char *string){...}<br /><br />unt16_t GFXGetStringWidthN(const char *string,uint8_t n){...}<br />void ScrollMsg(const char *msg){...}[/syntax]<br /><br />Konfiguracja<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />#ifndef CONFIG_H_<br />#define CONFIG_H_<br /><br />#define HC595_DDR    DDRB<br />#define HC595_PORT   PORTB<br />#define HC595_DS_POS PB5      //Data pin (DS) pin location<br />#define HC595_SH_CP_POS PB7      //Shift Clock (SH_CP) pin location<br />#define HC595_ST_CP_POS PB1      //Store Clock (ST_CP) pin location<br /><br />#define P10_CH_DDRDDRD<br />#define P10_CH_PORTPORTD<br />#define P10_CH_A_POSPD3<br />#define P10_CH_B_POSPD2<br /><br />#define P10_EN_DDRDDRB<br />#define P10_EN_PORTPORTB<br />#define P10_EN_POSPB0<br /><br />#define GFX_SCREEN_WIDTH128 //32,64,96,128<br />#define GFX_SCREEN_HEIGHT16<br />#define GFX_CHAR_SPACING 1<br />#define GFX_SCREEN_MEMORY   GFX_SCREEN_WIDTH*2 //pamięc tablicy<br />#define GFX_TIMER_CLOCK GFX_SCREEN_WIDTH/2 //liczba petli do wykonania w przerwaniu<br /><br />#define HC595DataHigh() (HC595_PORT|=(1&lt;&lt;HC595_DS_POS))<br />#define HC595DataLow() (HC595_PORT&amp;=(~(1&lt;&lt;HC595_DS_POS)))<br /><br />#endif /* CONFIG_H_ */[/syntax]<br /><br />I tak jak pisałem przy wielkości wpisanej 128 nic nie wyświetla matryca a przy 127 już wyświetla tyle że wiadomo test jest rozsypany na matrycy.<br /><br /><br />EDIT! EDIT!<br /><br />Opanowałem temat.<br /><br />Zmieniłem deklaracje<br />[syntax=c]#define GFX_SCREEN_MEMORY   GFX_SCREEN_WIDTH*2[/syntax]<br />na<br />[syntax=c]#define GFX_SCREEN_MEMORY  (GFX_SCREEN_WIDTH*2)-1[/syntax]<br />i zaczęło mi wyświetlać na pełnej matrycy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3647">fotograf9</a> — 28 mar 2017, o 06:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2017-03-27T21:42:37+01:00</updated>
<published>2017-03-27T21:42:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185748#p185748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185748#p185748"/>
<title type="html"><![CDATA[Re: Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185748#p185748"><![CDATA[
Cały problem sprowadza się jednak do tego, że masz błąd w 11 wierszu programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 27 mar 2017, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamBo]]></name></author>
<updated>2017-03-27T20:56:19+01:00</updated>
<published>2017-03-27T20:56:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185747#p185747</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185747#p185747"/>
<title type="html"><![CDATA[Re: Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185747#p185747"><![CDATA[
Sorry kolego zakreciłem. Nie wiem czemu ubzdurało mi się, że masz wyświetlacz 128x64 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />. W twoim przypadku matryca ma 256 bajtów i jak najbardziej twoją mega to obsłuży. <br /><br />Wysłane z mojego HTC One_M8 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9051">adamBo</a> — 27 mar 2017, o 20:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fotograf9]]></name></author>
<updated>2017-03-27T20:40:57+01:00</updated>
<published>2017-03-27T20:40:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185744#p185744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185744#p185744"/>
<title type="html"><![CDATA[Re: Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185744#p185744"><![CDATA[
Z dzieleniem matrycy musiałbym pomyśleć.<br /><br />Ale jeżeli matryca ma 256 bajtów (0-255) to tablica typu uint8_t powinna to ogarnąć, zgadza sie? Bo w takiej tablicy mam 256 znaków 8 bitowych tak? Czy źle coś kombinuje?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3647">fotograf9</a> — 27 mar 2017, o 20:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamBo]]></name></author>
<updated>2017-03-27T20:08:45+01:00</updated>
<published>2017-03-27T20:08:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185739#p185739</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185739#p185739"/>
<title type="html"><![CDATA[Re: Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185739#p185739"><![CDATA[
Tak sobie jeszcze myślę. Możesz spróbować zrobić bufor 512b i jakby &quot;multipleksować&quot; czyli algorytm byś miał taki: ładujesz do bufora pierwsze 0-31 linii, wyświetlasz, ładujesz do bufora 32-64 linii, wyświetlasz. Osobiście nie próbowałem ale powinno zadziałać.<br /><br />Wysłane z mojego HTC One_M8 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9051">adamBo</a> — 27 mar 2017, o 20:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fotograf9]]></name></author>
<updated>2017-03-27T19:43:27+01:00</updated>
<published>2017-03-27T19:43:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185735#p185735</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185735#p185735"/>
<title type="html"><![CDATA[Re: Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185735#p185735"><![CDATA[
Staram się przenieść go z ram do flash przez użycie polecenia PROGMEM i odwołań pgm_read_byte jednak jeszcze coś mi to nie wychodzi. Docelowo będzie pewnie trzeba dostawić zewnętrzną pamięć. Dzięki za sugestie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3647">fotograf9</a> — 27 mar 2017, o 19:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamBo]]></name></author>
<updated>2017-03-27T17:15:27+01:00</updated>
<published>2017-03-27T17:15:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185725#p185725</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185725#p185725"/>
<title type="html"><![CDATA[Re: Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185725#p185725"><![CDATA[
Dostaw 1k kostkę eeprom lub wymień megę na 32<br /><br />Wysłane z mojego HTC One_M8 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9051">adamBo</a> — 27 mar 2017, o 17:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fotograf9]]></name></author>
<updated>2017-03-27T17:11:22+01:00</updated>
<published>2017-03-27T17:11:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185724#p185724</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185724#p185724"/>
<title type="html"><![CDATA[Pełna pamięć data]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18000&amp;p=185724#p185724"><![CDATA[
Witam.<br />Mama problem z pełną pamięcia data. Wyśietlaczem led 128x16 chce sterować atmega16 testowo ale przy deklarowaniu pojemności pamięci wywala mi pełną pamięć data.<br /><br />mam tam dwie tablice jako uint16_t których wielkość jest 255 znaków. Wcześniej miałem je jako uint8_t ale pomimo mniejszej ilości pamięci nic i nie wyświetlało. Jak zmienię liczbę wierszy chociaż o jeden mniej na 127 to wyświetla mi na matrycy ale obraz wiadomo jest przestawiony.<br /><br />Nie chcę zbytnio udostępniać kodu bo to moje wypociny dlatego czy ma ktoś jakiś pomysł?<br /><br /><a href="https://obrazkiforum.atnel.pl/3647/eea1016fef08d7815b3f6f6f17192a74.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3647/eea1016fef08d7815b3f6f6f17192a74.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3647">fotograf9</a> — 27 mar 2017, o 17:11</p><hr />
]]></content>
</entry>
</feed>