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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=19966&amp;mode</id>
<entry>
<author><name><![CDATA[SP2LUB]]></name></author>
<updated>2018-01-29T17:31:30+01:00</updated>
<published>2018-01-29T17:31:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202878#p202878</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202878#p202878"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202878#p202878"><![CDATA[
<div class="quotetitle">StaryAnoda napisał(a):</div><div class="quotecontent"><br />Hej<br /><br />Czy to jest wyświetlacz 3.2'' 320 x 480 ? <br />Czemu link w pierwszym poście do przykładu na AVR jest niedostępny ? <br />Gdzie kupiłeś ten wyświetlacz ?<br /></div><br /><br />Tak to jest taki wyświetlacz<br /><a href="https://obrazkiforum.atnel.pl/12998/c8cdbf25d68e589a79752ddc4ce2b1fd.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/12998/c8cdbf25d68e589a79752ddc4ce2b1fd.jpg" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/12998/85fe923c47563c82fab68a3634c364f3.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/12998/85fe923c47563c82fab68a3634c364f3.jpg" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/12998/fa20f30e33cb55a40224b6c18d5ce5c0.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/12998/fa20f30e33cb55a40224b6c18d5ce5c0.jpg" alt="Obrazek" /></a><br /><br />Wątek który umieściłem wcześniej, a który dotyczył zastosowania tego wyświetlacza z AVR skasowałem w przypływie sceptycyzmu. To jest wyświetlacz który posiada wyłącznie magistralę 16bit i zastosowanie go z AVRem to chyba tylko w wersji na SPI i to minimum na Atmega32 (i raczej dla desperatów). Poza tym, ten kod dla CYCKITA nie wiele różni się od AVR, tam są tylko kwestie zmiany niektórych ustawień i w przypadku AVR przywrócenia Progmem. Cała biblioteka dla AVR po SPI jest dostępna w wątku kolegi Intre. <br />Takie wyświetlacze nabyłem już jakiś czas temu (wiosna ubiegłego roku) na jednym takim portalu aukcyjnym za jakieś 58zł sztuka. <br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br /><br /><br /><br /><br />Mirku ja jestem jeszcze programowym niemowlakiem, moje używanie języka C sprowadza się do lizania <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />  .... ale już nawet te zabawy pokazują że to czego nauczyłem się z Twoich książek i poradników w zastosowaniu do AVRów, to wiedza niebywale pomocna w poszerzaniu horyzontów. Wsiąkłem teraz w te CYCKI i wygrzebać się nie mogę, a większość problemów rozgryzam najpierw na AVR a potem przewalam to na Cypressa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> fajna zabawa, no po prostu bajka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12998">SP2LUB</a> — 29 sty 2018, o 17:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-01-29T16:11:44+01:00</updated>
<published>2018-01-29T16:11:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202871#p202871</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202871#p202871"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202871#p202871"><![CDATA[
<div class="quotetitle">SP2LUB napisał(a):</div><div class="quotecontent"><br />ale uwaga mamy też do dyspozycji bezpośredni dostęp do rejestru tego pinu (sposób przedstawiony przez Mirka w jego poradniku) i wtedy to samo banglowanie będzie wyglądać tak<br />Składnia: [ Pobierz ] [ Ukryj ]<br /></div><br />Teraz już wiesz dlaczego ja wolę taki, że tak powiem &quot;nasz bezpośredni&quot; dostęp <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> a nie przez jakieś kocie generowane makra ? <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> — 29 sty 2018, o 16:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[StaryAnoda]]></name></author>
<updated>2018-01-29T15:49:27+01:00</updated>
<published>2018-01-29T15:49:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202870#p202870</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202870#p202870"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202870#p202870"><![CDATA[
Hej<br /><br />Czy to jest wyświetlacz 3.2'' 320 x 480 ? <br />Czemu link w pierwszym poście do przykładu na AVR jest niedostępny ? <br />Gdzie kupiłeś ten wyświetlacz ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12916">StaryAnoda</a> — 29 sty 2018, o 15:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-01-16T20:34:46+01:00</updated>
<published>2018-01-16T20:34:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202148#p202148</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202148#p202148"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=202148#p202148"><![CDATA[
No to super, że udało się Tobie odnaleźć źródło problemu. To prawda, że API jest wygodne, ale wolne w porównaniu do bezpośredniego sterowania pinami. Na szczęście można sobie to uprościć korzystając z #define i wtedy portować można całą bibliotekę, jeśli tylko była dobrze napisana (np. Mirka do LCD).<br /><br />P. S. W Arduino podobnie - też jest digital write ale szybsze jest bezpośrednie sterowanie portami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 16 sty 2018, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SP2LUB]]></name></author>
<updated>2018-01-13T19:32:07+01:00</updated>
<published>2018-01-13T19:32:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201933#p201933</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201933#p201933"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201933#p201933"><![CDATA[
No i rozgryzłem orzeszka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tak jak pokazałem w poprzednim poście, pomiary czasów na banglowanym pinie trochę mnie zaniepokoiły. Cały czas byłem przekonany że mój problem powolnej pracy wyświetlacza jest związany raczej z hardwarem a dokładnie z konfiguracją zegara. <br />Ponieważ męczyłem się z ustawieniami zegara na wszystkie sposoby i nie uzyskałem niemal żadnej poprawy, zacząłem przewalać dostępne w internecie informacje udostępniane przez CYPRESS a dotyczące właśnie użycia i konfiguracji GPIO oraz zegara i w ogóle czasów...<br />W jednym z takich not znalazłem cenne informacje na których oparłem dalsze prace. <a href="http://www.cypress.com/file/45381/download"  class="postlink">http://www.cypress.com/file/45381/download</a><br />Po pierwsze przekonałem się że narzędzie PSoC Creator jest ok ale nie do końca należy się na nim opierać. <br />Przykład:<br />Po wybraniu Digital Output Pin z  Katalogu Komponentów i wygenerowaniu dla niego API czyli plików .c oraz .h zawierając makra pomocne przy obsłudze każdego komponentu. Jednak należy być ostrożnym przy używaniu zdefiniowanych przez kreator makr. <br />Jeżeli potrzebuje w moim projekcie banglować jakimś pinem, ma do dyspozycji proste makro:<br />[syntax=c]for(;;)<br /> {<br />// These are API functions<br />MyPin_Write(1); //set MyPin output<br />MyPin_Write(0); //clear MyPin output<br /> }[/syntax]<br />No i super <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  ale uwaga mamy też do dyspozycji bezpośredni dostęp do rejestru tego pinu (sposób przedstawiony przez Mirka w jego poradniku) i wtedy to samo banglowanie będzie wyglądać tak<br />[syntax=c]for(;;)<br />{<br />MyPin_DR |= MyPin_MASK; //Set MyPin<br />MyPin_DR &amp;= ~MyPin_MASK; //Clear<br />}[/syntax]<br />Porównanie działania obu makr jest po prostu powalające, otóż pin balglowany makrem _Write w moim układzie generował cztery razy wolniejszy przebieg od banglowania makrem dostępu do rejestru _DR. Tak tak różnica jest aż tak duża. Pewnie dla Tych z Was którzy obeznani jesteście w tych procesorach to nic nowego, dla mnie jednak to nauczka która pomogła mi opanować problem &quot; slimaczej pracy&quot;. <br />Po tym doświadczeniu przewaliłem całą bibliotekę i pozmieniałem wszystkie makra... <br />Mój projekt zaczął chodzić jak rakieta. Jednak pojawił się nowy problem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Po uzyskaniu wysokiej szybkości pracy mojej przeportowanej biblioteki, pojawiły się problemy z kolorami... czasami każdy font w stringu miał inny kolor albo pojawiały się dziwne echa.. Znowu zacząłem przyglądać się zawartości funkcji rysujących na wyświetlaczu i zacząłem wstawiać opóźnienia. Wszystko zaczęło działać prawidłowo po wstawieniu zwłoki 40uS w makro WR_STB. ale wtedy znowu wyświetlacz pracował w tempie ślimaczym <br />Wpadłem na pomysł przetestowania wyświetlacza na moim zestawie ATB 1.05 z zainstalowanym CYPRESS SHIELD na którym wlutowałem sobie CY8C5267AXI - LP051. No i biblioteka pracuje po prostu MEGA SZYBKO !!!! wywaliłem wszystkie delaye i testowałem na wiele sposobów i wszystko działa wręcz idealnie. <br />Ok co zatem jest nie tak  z CY8CKIT-059 PSoC® 5LP Prototyping Kit ?????<br />No problem okazał się banalny, to znaczy kondensatory które są umieszczone na niektórych pinach w tym module. Niestety ja potrzebowałem dwóch portów całych do sterowania wyświetlaczem i jeszcze czterech pinów do obsługi. Mimo iż testowałem wyświetlacz na trzech różnych portach, to zawsze trafiałem na jakieś piny na których siedział 1uF i który przy wyższych prędkościach powodował problemy. <strong>(Piny P0.2, P0.3, P0.4, P3.2 na tych pinach umieszczone są kondensatory 1uF)</strong><br />Dzielę się z Wami tym bo zapłaciłem za moją głupotę 3 dni !! a przecież na opisówce CYCKITu jest gwiazdeczka z opisem do których pinów dolutowano kondensatory.<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />a tak działa znowu na CYCKIT po wylutowaniu kondensatorów 1uF - C9, C12, C13 na porcie P0 oraz C7 na P3.2. Właśnie tych portów P0 i P3 używałem do transferu danych do wyświetlacza. <br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12998">SP2LUB</a> — 13 sty 2018, o 19:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SP2LUB]]></name></author>
<updated>2018-01-12T18:27:07+01:00</updated>
<published>2018-01-12T18:27:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201892#p201892</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201892#p201892"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201892#p201892"><![CDATA[
Zarówno analizator jak i oscyloskop są zgodne co do tego że mój CYCKIT pracuje za wolno <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><a href="https://obrazkiforum.atnel.pl/12998/4e4062fd251c28dc8397a4fe8189c7ae.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/12998/4e4062fd251c28dc8397a4fe8189c7ae.jpg" alt="Obrazek" /></a><br /><br /><a href="https://obrazkiforum.atnel.pl/12998/65866003b0f2dedc3aeac3df39badda5.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/12998/65866003b0f2dedc3aeac3df39badda5.jpg" alt="Obrazek" /></a><br /><br />1,7MHz jest raczej dalekie od spodziewanych 24MHz... nie bardzo wiem jak w kreatorze mogę się do tego dobrać. Próbowałem bawić się w ustawieniach z zakładki &quot;Cloks&quot; ale bez względu na to co tam ustawię, układ zachowuje się tak samo. <br /> <br />.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12998">SP2LUB</a> — 12 sty 2018, o 18:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-01-12T06:35:43+01:00</updated>
<published>2018-01-12T06:35:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201860#p201860</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201860#p201860"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201860#p201860"><![CDATA[
Żeby sprawdzić częstotliwość pracy procka to bangluj jednym z pinów (bez żadnych delayów) a analizatorem sprawdź częstotliwość migania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 12 sty 2018, o 06:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2018-01-11T20:52:02+01:00</updated>
<published>2018-01-11T20:52:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201843#p201843</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201843#p201843"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201843#p201843"><![CDATA[
Widzę, że są 8-bitowe; ale wysyłasz do funkcji &quot;writedata&quot; daną 8-bitową, następnie zerujesz ją (dat&gt;&gt;8), wpisujesz do &quot;górnego&quot; portu,<br />wpisujesz daną dat do &quot;dolnego&quot; portu i wysyłasz oba portu do sterownika. Jaki jest sens tej operacji : PORTA_Write (dat&gt;&gt;8) , jeżeli i tak zawsze argument będzie zerem ? <br /><br />Co do &quot;hx8357d_fillRect&quot; , szybsza będzie pojedyncza pętla np. <br /><br />for (uint16_t i=0; i&lt;w*h; i++) {...}<br />gdzie w*h liczba pikseli do zapisu ( być może trzeba dodać: w*h+1)<br /><br />ps. można także spróbować wyprowadzić sygnały CS_L/CS_H odpowiednio przed i za pętlę-powinno działać szybciej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 11 sty 2018, o 20:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SP2LUB]]></name></author>
<updated>2018-01-11T19:51:25+01:00</updated>
<published>2018-01-11T19:51:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201841#p201841</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201841#p201841"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201841#p201841"><![CDATA[
PORTA i PORTC to porty ośmiobitowe w obu przypadkach PSoC i AVR, te funkcje pracują poprawnie.. <br /><br />natomiast fillRect wygląda tak:<br />[syntax=c]// rysuje czworokat wypelniony<br />void  hx8357d_fillRect(int16 x, int16 y, int16 w, int16 h,  uint16 color) {<br /><br />  // rudimentary clipping (drawChar w/big text requires this)<br />  if ((x &gt;= _width) || (y &gt;= _height) || (w==0) || (h==0)) return;<br />  if ((x + w - 1) &gt;= _width)  w = _width  - x;<br />  if ((y + h - 1) &gt;= _height) h = _height - y;<br /><br />  hx8357d_setAddrWindow(x, y, x+w-1, y+h-1);<br />  uint8 hi = color &gt;&gt; 8, lo = color;<br /><br />  for(y=h; y&gt;0; y--) {<br />  for(x=w; x&gt;0; x--) {<br />     CS_L;<br />     PORTA_Write (hi);<br />     PORTC_Write (lo);<br />     WR_STB;<br />     CS_H;<br />     }<br />   }<br />}[/syntax]<br /><br />To raczej nie jest przyczyną wolnej pracy.. ponieważ stringi też piszą się jak krew z nosa <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12998">SP2LUB</a> — 11 sty 2018, o 19:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2018-01-11T19:35:16+01:00</updated>
<published>2018-01-11T19:35:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201840#p201840</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201840#p201840"/>
<title type="html"><![CDATA[Re: PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201840#p201840"><![CDATA[
Tutaj kluczowa dla szybkości jest funkcja  <em>hx8357d_fillRect ()</em>, której nie Pokazałeś.<br /><br />ps.<br />dlaczego w funkcji <em>writedata( uint8 dat )</em><br />&quot;dat&quot;  jest uint8 ?<br /><br />za chwilę w tej funkcji robisz operacje:<br /><br />    PORTA_Write (dat&gt;&gt;8);  co przy 8 bitach jest bez sensu (chyba że ma być wpisywane 0 )<br />    PORTC_Write  (dat);      czyli wpis 16 bitowy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 11 sty 2018, o 19:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SP2LUB]]></name></author>
<updated>2018-01-13T18:41:16+01:00</updated>
<published>2018-01-11T15:36:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201835#p201835</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201835#p201835"/>
<title type="html"><![CDATA[PSoC CY8CKIT-059 i wyswietlacz HX8357B]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19966&amp;p=201835#p201835"><![CDATA[
Dzien dobry <br /><br />Przeportowalem sobie dla Cypressa,  biblioteke wyswietlacza graficznego HX8357B z interfejsem rownoleglym 16 bit ktora przygotowalem tydzien temu dla procesora Atmega32. Biblioteka spisuje sie bardzo fajnie i jestem zadowolony. <br />Po kilku modyfiacjach tej biblioteki wyswietlacz  zaczal mi dzialac na CY8CKIT-059 na ktorym siedzi CY8C5888LTI - LP097. Wszystko by bylo jak w raju tylko mam jeden klopot. Wyswietlacz wyswietla wszysto poprawnie ale bardzo wolno. Wypelnienie ekranu kolorem trwa okolo 4 sekundy.... Pomyslalem ze przegapilem cos z ustawieniami zegrara w projekcie. Wczesniej uruchamialem kilka projektow na Cyprysie z uzyciem wyswietlacza znakowego, i kilku dodatkowych rzeczy jak Quadraturowy sterownik encodera,  czy transmisja po SPI do modulow zewnetrznych.. wszystko dzialalo sprawnie. Teraz uruchomilem ten nieszczesny wyswietlacz i dziala jak slimak. <br />Na Atmedze32 dziala wysmienicie a tutaj jakas kiszka <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Czy powinienem jakos inicjowac zegar przy tak prostej obsludze TFT czy moze sa inne przyczyny konfiguracyjne o ktorych nie wiem. Bawie sie Cyprysami od momentu kiedy Mirek wyemitowal swoje poradniki wiec moje doswiaczenie jest marne. <br /><br />Macie jakies sugestie? <br /><br />Jak wroce do domu przedstawie kod, ale nie wiele on sie rozni od tego ktory pokazalem tutaj dla AVR <a href="http://forum.atnel.pl/topic19932.html"  class="postlink">http://forum.atnel.pl/topic19932.html</a><br />Pokaze tez film z pracy tego wyswietlacza.. praca w naprawde zwolnionym tempie. (a przeciez steruje magistrala 16bit rownolegle) <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Tak to wygląda na żywo<br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br />funkcje czyszczenia ekranu kolorem czarnym, jeszcze raz kolorem niebieskim i kolejno funkcje wywalające stringi... bez delayów i innych spowalniaczy.<br /><br />Teraz fragmenty kodu<br />Funkcje wysyłania komendy i danych:<br />[syntax=c]// wysłanie komendy<br />void writecommand( uint8 cmd ) {<br />   <br />CS_L;<br />RS_L;<br />    PORTA_Write (0);<br />    PORTC_Write (cmd);<br />    WR_STB;<br />RS_H;<br />CS_H;<br />    <br />}<br /><br /><br /><br />//wysładnie danych<br />void writedata( uint8 dat ) {<br /><br />CS_L;<br />    PORTA_Write (dat&gt;&gt;8);<br />    PORTC_Write (dat);<br />WR_STB;   <br />CS_H;<br />}[/syntax]<br /><br />funkcja inicializacji wyświetlacza:<br />[syntax=c]// Inicjacja wyswietlacza HX8357-B 16bit<br />void hx8357d_init ( void ) {<br />   <br /><br />RST_H;<br />CyDelay (50);<br />    RST_L;<br />CyDelay (10);<br />RST_H;<br />CyDelay (10);<br /><br />    writecommand(0x11);<br />    CyDelay(120);<br />    writecommand(0xD0); // HX8357B_SETPOWER<br />   writedata(0x07);<br />   writedata(0x42);<br />   writedata(0x18);<br />   writedata(0x00);<br /><br />    writecommand(0xD1); //HX8357B_SETVCOM<br />   writedata(0x00);<br />   writedata(0x07);<br />   writedata(0x10);<br /><br />   writecommand(0xD2); //HX8357B_SETPWRNORMAL<br />   writedata(0x01);<br />   writedata(0x02);<br /><br />    writecommand(0xC0);<br />    writedata(0x10);<br />    writedata(0x3B);<br />    writedata(0x00);<br />    writedata(0x02);<br />    writedata(0x11);<br /><br />    writecommand(0xC5);<br />    writedata(0x08);<br /><br />    writecommand(0xC8);<br />    writedata(0x00);<br />    writedata(0x32);<br />    writedata(0x36);<br />    writedata(0x45);<br />    writedata(0x06);<br />    writedata(0x16);<br />    writedata(0x37);<br />    writedata(0x75);<br />    writedata(0x77);<br />    writedata(0x54);<br />    writedata(0x0C);<br />    writedata(0x00);<br /><br />    writecommand(0x36); // HX8357_MADCTL<br />    writedata(0x0a);<br /><br />    writecommand(0x3A); // Interface pixel format<br />    writedata(0x55);// 16 bits per pixel<br /><br />    writecommand(0x2A); // HX8357_CASET<br />    writedata(0x00);<br />    writedata(0x00);<br />    writedata(0x01);<br />    writedata(0x3F);<br /><br />    writecommand(0x2B); // HX8357_PASET<br />    writedata(0x00);<br />    writedata(0x00);<br />    writedata(0x01);<br />    writedata(0xDF);<br /><br />    CyDelay(120);<br />    writecommand(0x29);<br />    CyDelay(25);<br /><br /><br /><br />    //CS_L;<br />}[/syntax]<br /><br />funkcja obrotu ekranu:<br />[syntax=c]// obrót ekranu 0-3<br />void hx8357d_setRotation(uint8 rotation) {<br /><br />  writecommand(HX8357_MADCTL);<br /><br />  if (rotation &gt;=3 ) rotation=3;   // max 3; domyślnie 3<br />  switch (rotation) {<br />   case 0: // Portrait  <br />   writedata(MADCTL_BGR | MADCTL_SS);<br />   _width  = HX8357_TFTHEIGHT;<br />   _height = HX8357_TFTWIDTH;<br />     break;<br />   case 1: // landscape<br />   writedata(MADCTL_MV | MADCTL_BGR);<br />   _width  = HX8357_TFTWIDTH;<br />   _height = HX8357_TFTHEIGHT;<br />     break;<br />  case 2: // inverted portrait   <br /> writedata( MADCTL_BGR | MADCTL_GS);<br />  _width  = HX8357_TFTHEIGHT;<br />  _height = HX8357_TFTWIDTH;<br />    break;<br />   case 3: // inverted landscape<br />     writedata(MADCTL_MV | MADCTL_BGR | MADCTL_SS | MADCTL_GS);<br />     _width  = HX8357_TFTWIDTH;<br />     _height = HX8357_TFTHEIGHT;<br />     break;<br />  }<br />}[/syntax]<br /><br />Funkcja ustawiania okna<br />[syntax=c]// ustawia adres okna<br />void hx8357d_setAddrWindow(uint16 x0, uint16 y0, uint16 x1, uint16 y1) {<br /><br /><br />if (x0&gt;x1) swap(x0,x1);<br />  if (y0&gt;y1) swap(y0,y1);<br />  if((x1 &gt;= _width) || (y1 &gt;= _height)) return;<br />  CS_L;<br />  RS_L;  <br />    PORTC_Write (HX8357_CASET); <br />    WR_STB; <br />    RS_H;<br />  PORTC_Write (x0&gt;&gt;8); <br />    WR_STB;<br />  PORTC_Write (x0); <br />    WR_STB;<br />  PORTC_Write (x1&gt;&gt;8); <br />    WR_STB;<br />  PORTC_Write (x1); <br />    WR_STB;<br />RS_L; <br />    PORTC_Write (HX8357_PASET); <br />    WR_STB; <br />    RS_H;<br />  PORTC_Write (y0&gt;&gt;8); <br />    WR_STB;<br />  PORTC_Write (y0); <br />    WR_STB;<br />  PORTC_Write (y1&gt;&gt;8); <br />    WR_STB;<br />  PORTC_Write (y1); <br />     WR_STB;<br /> RS_L;<br />    <br />    PORTC_Write (HX8357_RAMWR); <br />    WR_STB; <br />    RS_H;<br />    CS_H;<br />}[/syntax]<br /><br />Czyszczenie kolorem<br /><br />[syntax=c]//czyszczenie wypełnieniem kolor<br />void hx8357d_cls(uint16 color) {<br /><br />hx8357d_fillRect(0, 0, _width, _height, color);<br />}[/syntax]<br /><br />No nie wiele się różnią te funkcje od tych dla AVRów.. a jednak jak widać na filmie, coś pominąłem <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> bawiłem się ustawieniami zegara w projekcie ale to nie ma żadnego wpływu na działanie wyświetlacza. Zmieniałem też porty, ale efekt zawsze ten sam. <br /><br />Szukam i szukam i nie znajduję a moja stara głowa już domaga się relaksu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jeszcze dodam funkcje rysującą pixel<br />[syntax=c]//Rysuje pixel<br />void hx8357d_drawPixel(int16 x, int16 y, uint16 color) {<br /><br />  if((x &lt; 0) ||(x &gt;= _width) || (y &lt; 0) || (y &gt;= _height)) return;<br /><br />  hx8357d_setAddrWindow(x,y,x+1,y+1);<br />  CS_L;<br />  RS_L;  <br />PORTC_Write (HX8357_CASET); <br />WR_STB; <br />    RS_H;<br />    PORTC_Write (x&gt;&gt;8);WR_STB;<br />    PORTC_Write (x);WR_STB;<br />    PORTC_Write (x&gt;&gt;8);WR_STB;<br />    PORTC_Write (x); WR_STB; RS_L; <br />    PORTC_Write (HX8357_PASET); WR_STB; RS_H;<br />    PORTC_Write (y&gt;&gt;8); WR_STB;<br />    PORTC_Write (y); WR_STB;<br />    PORTC_Write (y&gt;&gt;8); WR_STB;<br />    PORTC_Write (y); WR_STB; RS_L; <br />    PORTC_Write (HX8357_RAMWR); WR_STB; RS_H;<br />    PORTC_Write (color); <br />    PORTA_Write (color&gt;&gt;8); <br />    WR_STB;<br />  CS_H;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12998">SP2LUB</a> — 11 sty 2018, o 15:36</p><hr />
]]></content>
</entry>
</feed>