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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-07T10:19:57+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7321&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-06-07T10:19:57+01:00</updated>
<published>2014-06-07T10:19:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83583#p83583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83583#p83583"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83583#p83583"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Tylko to jest wyświetlacz 320x240 a 320 się nie zmieści w uint8_t.<br /></div> Dlatego zaproponowałem wysyłać dane o 2 pikselach, a wartość do porównania to MAX_X / 2. Nawet inkrementacja/dekrementacja 16-bitowej zmiennej to nie 2 operacje. Zmiana młodszego bajtu może wymagać zmiany starszego, a więc dochodzi to dodatkowe sprawdzenie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 7 cze 2014, o 10:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-06-06T21:49:14+01:00</updated>
<published>2014-06-06T21:49:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83570#p83570</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83570#p83570"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83570#p83570"><![CDATA[
Atmega8 bez problemu chodzi na 20MHz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 6 cze 2014, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-06-07T09:58:07+01:00</updated>
<published>2014-06-06T20:22:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83564#p83564</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83564#p83564"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83564#p83564"><![CDATA[
Wywołanie funkcji i powrót sporo taktów pożera. Najlepiej widać to w pliku lss z folderu Release (dodatkowo należy w specyfikacji procesora znaleźć tabelkę Instruction set summary). Wywołanie funkcji to instrukcja asemblerowa call - 5 cykli, a powrót to ret - 5 cykli. Możesz spróbować tak:<br />[syntax=c]void ILI9325c_Clear( uint16_t Color)<br />{<br />   uint32_t index=0;<br />   //...pozostały kod<br />   for( ; index &lt; (uint32_t)MAX_X * MAX_Y; index++ )<br />   {<br />      SPDR = color_high; /* Write D8..D15                */<br />      while( !(SPSR &amp; (1&lt;&lt;SPIF)) );      <br />      SPDR = color_low; /* Write D0..D7                 */<br />      while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); //możliwe że nie jest wymagany<br />   }<br />   //...pozostały kod<br />}[/syntax]<br />To coś da, ale pozostaje ten nieszczęsny for ze zmienną index o rozmiarze 32 bity. Procesor 8-bitowy wrzuci sobie tą zmienną do 4 rejestrów i porównanie ze stałą 32-bitową zajmie pewnie 4 cykle i inkrementacja też 4. Szybciej pewnie będzie jakbyś wysyłał po 2 piksele i miał 2 fory i w każdym zmienną 8-bitową np.:<br />[syntax=c]void ILI9325c_Clear( uint16_t Color)<br />{<br />   uint8_t index1=0;<br />   uint8_t index2=0;<br />   //...pozostały kod<br />   for( ; index1 &lt; MAX_Y; ++index1 )<br />   {<br />      for(index2=0; index2 &lt; MAX_X / 2; ++index2 )<br />      {<br />         SPDR = color_high; /* Write D8..D15                */<br />         while( !(SPSR &amp; (1&lt;&lt;SPIF)) );      <br />         SPDR = color_low; /* Write D0..D7                 */<br />         while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); <br />         /* i jeszcze raz */<br />         SPDR = color_high; /* Write D8..D15                */<br />         while( !(SPSR &amp; (1&lt;&lt;SPIF)) );      <br />         SPDR = color_low; /* Write D0..D7                 */<br />         while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); <br />      }<br />   }<br />   //...pozostały kod<br />}[/syntax]<br /><br />PS. do wstawiania kodu w C używa się samego syntax=C, a do kodu z pliku lss możesz sobie użyć Code<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 6 cze 2014, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2014-06-06T19:57:32+01:00</updated>
<published>2014-06-06T19:57:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83562#p83562</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83562#p83562"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83562#p83562"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />16 KB ROM. A ile rzeczy działało.<br /></div><br /><br />Tylko bierz uwagę, że to było przy rozdzielczości 320x240 przy 16kolorach <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bez przenikania, podwójnego buforowania, a spritów mogło być tylko 8 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 6 cze 2014, o 19:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MoherPower]]></name></author>
<updated>2014-06-06T17:09:13+01:00</updated>
<published>2014-06-06T17:09:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83554#p83554</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83554#p83554"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83554#p83554"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">MoherPower napisał(a):</div><div class="quotecontent">Teraz masz:<br />8MHz / 2 (dzielnik SPI) = 4 MHz (wysyłanie _bitów_) -&gt; 4.000.000 bit/s<br />możesz mieć:<br />25MHz / 2 (dzielnik SPI) = 12.5 MHz (wysyłanie _bitów_) -&gt; 12.500.000 bit/s<br /><br />Co do ustawień to SPI2X oraz dzielnik 2 to już szczyt możliwości samej kostki.<br /> <a href="http://3.14.by/en/read/arduino-liquid-nitrogen-overclocking"  class="postlink">http://3.14.by/en/read/arduino-liquid-nitrogen-overclocking</a><br /></div></div><br />zastanawiam się troszkę w kwesti tych wyliczeń. otóż. <br /><br />mam wyświetlacz 320*240 co daje mi 76800 pikseli.<br /><br />tak wygląda funkcja kasowania lcd.<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">&#91;syntax=c&#93;void ILI9325c_Clear( uint16_t Color)<br />{<br />   uint32_t index=0;<br />   uint8_t color_high=(Color &gt;&gt;  8), color_low=(Color &amp; 0xFF);<br />   ILI9325c_SetCursor(0,0);<br />   ILI9325c_WriteIndex(0x0022);<br />   SPI_ILI9325c_SELECT;<br />    ILI9325c_WriteDataStart();<br /><br /><br />   for( index = 0; index &lt; (uint32_t)MAX_X * MAX_Y; index++ )<br />   {<br />      SPI_Transmit(color_high);      /* Write D8..D15                */<br />      SPI_Transmit(color_low);      /* Write D0..D7                 */<br />   }<br />   SPI_ILI9325c_RELEASE;<br />}&#91;/syntax&#93;</div><br />a zatem poza stratą kilku taktów zegara na ustawienie lini CS, konwersje 16 bit na 2x8 bit i wyslanie komend sterujących, mamy praktycznie pentlę w której cały czas wysyłamy do SPI to samo. <br />i teraz tak ..<br />76800 pikseli * 16 bit = 1,228,800 bitów. czyli 1/10 ilości jaką mogę wysłać w 1 sek przy taktowaniu 25MHz (ja wsadziłęm kwarc 32Mhz). Z tego wynikało by że mogę mieć frame rate 10 klatek na sek.  Ale tu ciekawostka<br />przy wykożystaniu wskazanej funkcji oraz (dla całkowitej jasności) funkcji<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">&#91;syntax=c&#93;uint8_t SPI_Transmit( uint8_t bajt ) {<br />   SPDR = bajt;<br />   while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />   return SPDR;<br />}&#91;/syntax&#93;</div> <br />w rzeczywistości uzyskuję ok 1,5 sek na zapełnienie ekranu!!! to jest 15 razy wolniej niż byśmy oczekiwali na podstawie teoretycznych wyliczeń. gdzie tak mocno zatykamy transmisję???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2521">MoherPower</a> — 6 cze 2014, o 17:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PawelGaj]]></name></author>
<updated>2014-06-06T13:43:48+01:00</updated>
<published>2014-06-06T13:43:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83545#p83545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83545#p83545"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83545#p83545"><![CDATA[
Nie ma takiego procka. Z AVR to jedynie Xmega jest szybsza, bo domyślnie pędzi na 32 MHz, a pętla PLL pozwala jeszcze bardziej przyspieszać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Wysłane z mojego Nexusa 5 przy użyciu Tapatalka <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=784">PawelGaj</a> — 6 cze 2014, o 13:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MoherPower]]></name></author>
<updated>2014-06-06T13:38:13+01:00</updated>
<published>2014-06-06T13:38:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83544#p83544</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83544#p83544"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83544#p83544"><![CDATA[
Dziękuję za wypowiedzi<br /><br />@mokrowski - tak chodziło mi o porównanie prędkości tych 2 sposobów transmisji danych a nie zwiększenia mocy obliczeniowej, bo nawet przy 8Mhz procek się nudzi w moim programie. <br />Co do wyświetlacza to sterownik ili9325c 240x320TFT<br /><br />Czy są jakieś wersje procesorów z rodziny atmega które nie mają dzielnika częstotliwości dla SPI w stosunku do częstotliwości procesora? to /2 boli najbardziej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2521">MoherPower</a> — 6 cze 2014, o 13:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PawelGaj]]></name></author>
<updated>2014-06-06T11:55:33+01:00</updated>
<published>2014-06-06T11:55:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83539#p83539</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83539#p83539"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83539#p83539"><![CDATA[
Moja Atmega 32 bezproblemowo współpracowała z kwarcem 24,576MHz, SPI działało jak powinno, nie zauważyłem żadnych problemów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Wysłane z mojego Nexusa 5 przy użyciu Tapatalka <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=784">PawelGaj</a> — 6 cze 2014, o 11:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-06-06T11:39:57+01:00</updated>
<published>2014-06-06T11:39:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83538#p83538</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83538#p83538"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83538#p83538"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Co zadziała przez 5-10 min to nie wiem i producent także nie wie<br /></div><br />Akurat układ z tym generatorem 33 MHz działa u mnie już ponad poł roku.<br />Jest w nim tak:<br />1. LCD HD44780<br />2. 3 PWMy<br />3. Timer1 i jego ICP obsługujący podczerwień.<br />4. Przerwanie od Timera2 jako podstawa czasu<br />5. I teraz dodatkowo UART.<br /><br />MCU to ATmega328.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 6 cze 2014, o 11:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-06-06T11:12:31+01:00</updated>
<published>2014-06-06T11:12:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83534#p83534</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83534#p83534"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83534#p83534"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />ale mimo wszystko przewalanie nawet 32kb obrazka to dla AVRka trochę tytaniczna praca.<br /></div><br /><br />No 8 bitów to 8 bitów....<br />Ale ja tak sobie wspominam jak to było kiedyś. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> W latach 80-tych. Komputery typu Atari 800XL czy 65/130XE. Procesor 6502, taktowany 1,77 MHz <br />16 KB ROM. A ile rzeczy działało. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />W porównaniu z tym to AVRki to są demony prędkości.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 6 cze 2014, o 11:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2014-06-06T10:44:01+01:00</updated>
<published>2014-06-06T10:44:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83530#p83530</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83530#p83530"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83530#p83530"><![CDATA[
Jest kilka ciekawych graficznych projektów z użyciem AVR na forum. Ale rewelacji się po 8bitowym nie spodziewaj, to nie tylko kwestia prędkości SPI, ale i konieczności przerzucania sporej ilości danych.<br />Np. taki 429i STMa ma już podwójne buforowanie, wsparcie dla przeźroczystości itp. Można w sumie prostą implementacją biblioteki zrobić ikonki jak na win7 z obsługą dotykową.<br /><br />Na AVRku jest nawet &quot;palmtop&quot; na forum, oraz Mirek w zielonej pokazuje pazura, ale mimo wszystko przewalanie nawet 32kb obrazka to dla AVRka trochę tytaniczna praca.<p>Statystyki: Napisane przez Gość — 6 cze 2014, o 10:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-06-06T10:39:06+01:00</updated>
<published>2014-06-06T10:39:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83529#p83529</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83529#p83529"/>
<title type="html"><![CDATA[Re: Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83529#p83529"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />W praktyce możesz oczekiwać że MCU o katalogowym zegarze 20 MHz, możesz popędzić do 25 MHz &quot;na bank&quot; . W porównaniu do 8MHz więc będziesz miał ~ 3x szybciej. Niektóre egzemplarze wytrzymują 30MHz ale (myślę i przypuszczam) że jeśli coś ma nie zadziałać przy przetaktowaniu pierwsze to peryferia komunikacyjne. Rdzeń wysiada ostatni nie tylko w MCU :-/<br /></div><br /><br />Przy zewnętrznym generatorze nawet przy 40 MHz nie zauważyłem problemów.<br />Obecnie odpaliłem przy taktowaniu 33MHz UART i bez problemu działa 115200. RX i TX <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=1589">sq8dsr</a> — 6 cze 2014, o 10:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MoherPower]]></name></author>
<updated>2014-06-06T08:55:43+01:00</updated>
<published>2014-06-06T08:55:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83520#p83520</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83520#p83520"/>
<title type="html"><![CDATA[Przyśpieszenie magistrali SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7321&amp;p=83520#p83520"><![CDATA[
Witam <br /><br />Szukam rozwiązania jak w temacie. Mam wyświetlacz który działa po SPI. niestety przy wykonaniu jakiej kolwiek operacji  na nim otrzymuję efekt &quot;wlewania&quot; zmian na ekran. Narazie pracuję na procku z 8MHz zegarem planuję przyśpieszyć do 12-16Mhz na zewnętrznym kwarcu. i tu pytanie<br /><br />1) znam noty katalogowe dla procesorów atmega ale czy ktoś przyśpieszał te procki powyżej podanych częstotliwości w nocie? Jeżeli tak to jakie i na ile dało się je podkręcic? czy potrzebne było jakieś chłodzenie czy co kolwiek? <br /><br />2) inicjalizuję moje SPI tak<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">SPCR |= (1&lt;&lt;SPE)|(1&lt;&lt;MSTR)|(1&lt;&lt;CPOL)|(1&lt;&lt;CPHA);<br />   SPSR |= (1&lt;&lt;SPI2X);</div><br />czy mogę jeszcze coś ustawić aby zwiększyć SCK? teoretycznie ten wiświetlacz może działać przy SCK 25Mhz.<br /><br />3) zanim zabiorę się za napisanie biblioteki dla komunikacji równoległej po D[0-17] chciał bym się upewnić że taka komunikacja jest szybsza niż SPI. Czy może się ktoś wypowiedzieć?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2521">MoherPower</a> — 6 cze 2014, o 08:55</p><hr />
]]></content>
</entry>
</feed>