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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-10T16:31:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9158&amp;mode</id>
<entry>
<author><name><![CDATA[xdf0r]]></name></author>
<updated>2014-11-10T16:31:41+01:00</updated>
<published>2014-11-10T16:31:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103191#p103191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103191#p103191"/>
<title type="html"><![CDATA[Re: WS2812 definiowanie pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103191#p103191"><![CDATA[
Ja steruję matrycę 10 x 10 z jednego pinu i wszystko śmiga <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=1008">xdf0r</a> — 10 lis 2014, o 16:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-11-10T11:40:20+01:00</updated>
<published>2014-11-10T11:40:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103144#p103144</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103144#p103144"/>
<title type="html"><![CDATA[Re: WS2812 definiowanie pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103144#p103144"><![CDATA[
Wielką zaletą tych diod jest to, że pozwalają pozbyć się plątaniny kabli. Połączenie matrycy w taki sposób jakbyś chciał trochę komplikuje hard- i software. Nie możesz przekonać w szkole, że sterowanie jednym pinem będzie lepsze?<br />Co prawda ta biblioteka była tworzona trochę pod takie połączenie, ale chyba nikt jeszcze czegoś takiego nie testował. <br />Na pierwszy rzut oka widać, że piny sterujące muszą być na jednym porcie. Jest to w tej chwili kompilowane &quot;na sztywno&quot;. Można to zmienić, ale zakładam, że zakres przeróbek ma być minimalny, więc zostaje tak jak jest. <br />Jeżeli chcesz korzystać z funkcji ws_cls to trzeba ją przerobić: w tej chwili pin jest wkompilowany na sztywno, trzeba go &quot;wyciągnąć&quot; do nagłówka funkcji:<br /><br />[syntax=c]void ws_cls (void * line, uint32_t color, uint8_t pin) {<br /> <br />...<br />        ws281x_asm_send ((uint8_t*)line, WS_LED_CNT, pin);<br />}[/syntax]<br />i oczywiście zmienić deklarację w ws281x.h. Można i trzeba by jeszcze podefiniować maski bitowe dla każdego pinu w pliku nagłówkowym.<br />To tyle co widać na szybko. Ale nie jest powiedziane, że w trakcie nie ujawni się jakiś zonk <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=1774">xor</a> — 10 lis 2014, o 11:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-10T09:03:28+01:00</updated>
<published>2014-11-10T09:03:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103126#p103126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103126#p103126"/>
<title type="html"><![CDATA[Re: WS2812 definiowanie pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103126#p103126"><![CDATA[
<div class="quotetitle">remi7 napisał(a):</div><div class="quotecontent"><br />Napisałeś że całą matrycę mogę sterować jednym pinem.<br /></div><br />no pomyśl - jakbyś miał jedną DŁUUGĄ linijkę - umiałbyś już chyba na niej wyświetlać no nie ?<br /><br />i teraz zawijasz ją w wiersze matrycy - więc nadal masz jedną długą linijkę ... a wyświetlenie w czegoś w wierszu X to po prostu wyświetlenie czegoś w odpowiedniej pozycji na linijce<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 lis 2014, o 09:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[remi7]]></name></author>
<updated>2014-11-10T08:53:09+01:00</updated>
<published>2014-11-10T08:53:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103124#p103124</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103124#p103124"/>
<title type="html"><![CDATA[Re: WS2812 definiowanie pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103124#p103124"><![CDATA[
A mógłbyś mi napisać konkretnie co mam dopisać do kodu żebym mógł zaświecić drugi wiersz z pinu np PC0? Resztę zrobię na podstawie tego co napiszesz. Napisałeś że całą matrycę mogę sterować jednym pinem. Robię to do szkoły i dostałem wytyczne żeby każdy wiersz był sterowany innym pinem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6216">remi7</a> — 10 lis 2014, o 08:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-11-09T17:06:03+01:00</updated>
<published>2014-11-09T17:06:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103026#p103026</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103026#p103026"/>
<title type="html"><![CDATA[Re: WS2812 definiowanie pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103026#p103026"><![CDATA[
Przede wszystkim potrzebujesz zapoznać się z tym: <a href="http://forum.atnel.pl/topic7402.html"  class="postlink">http://forum.atnel.pl/topic7402.html</a><br />A co do pytania: trzeba utworzyć dla każdego pinu odrębny bufor i odpowiednio zdefiniować piny. Poza tym funkcja ws_cls wymaga modyfikacji, ale dopóki nie poprawisz listingów wg powyższego przepisu to nie ma o czym mówić.<br />Tak na marginesie: przeróbka nie wydaje się potrzebna dla tak małej matrycy, można spoko ją sterować jednym pinem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 9 lis 2014, o 17:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[remi7]]></name></author>
<updated>2014-11-09T19:22:57+01:00</updated>
<published>2014-11-09T15:55:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103020#p103020</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103020#p103020"/>
<title type="html"><![CDATA[WS2812 definiowanie pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9158&amp;p=103020#p103020"><![CDATA[
Witam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Mam tablicę diod 6x8. Piszę z zapytaniem, jakie zmiany wprowadzić w kodzie aby np pierwszy wiersz programowany był przez pin PD7, drugi wiersz PC0, trzeci PC1 itd.?<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/6216/c949f5aaa48d9435268340514bafbe62.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/6216/c949f5aaa48d9435268340514bafbe62.jpg" alt="Obrazek" /></a><br /><br /><br /><br />main.c<br /><br />[syntax=c]* mian.c<br /> *<br /> *  Created on: 03-10-2014<br /> *      Author: Remi<br /> */<br /><br />#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 />#include &lt;string.h&gt; /* memset */<br />//#include &lt;unistd.h&gt; /* close */<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;WS2812/ws281x.h&quot;<br /><br /><br /><br /><br />TWSRGB ws_rgb_leds&#91; WS_LED_CNT&#93;;<br /><br />uint8_t * pasek = (uint8_t*)ws_rgb_leds;<br /><br /><br /><br /><br /><br />int main (void){<br /><br /><br />set_pixel ( pasek, 1 , 0x0f0000);<br /><br />set_pixel ( pasek, 2 , 0x0f0000);<br /><br />set_pixel ( pasek, 0 , 0x000f00);<br /><br /><br />ws281x_asm_send ( pasek, WS_LED_CNT, WS_PIN);<br /><br /><br />}[/syntax]<br /><br />ws281x.c<br /><br />[syntax=c]/*<br /> * ws281x_asm.c<br /> *<br /> *  Created on: 30-06-2014<br /> *      Author: Miros�aw Karda�<br /> *      F_CPU = 16 MHz<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;string.h&gt; /* memset */<br /><br />#include &quot;ws281x.h&quot;<br /><br />void ws_cls (void * line, uint32_t color) {<br /><br />if (!color) memset(line, 0, WS_LED_CNT*3 );<br />else {<br />uint16_t x, i;<br />for (i=0; i&lt;WS_LED_CNT; i++) {<br />x=i*3;<br />*((uint8_t*)line + x) = color &gt;&gt; 8;<br />*((uint8_t*)line + x+1) = color &gt;&gt; 16;<br />*((uint8_t*)line + x+2) = color;<br />}<br />}<br />ws281x_asm_send ((uint8_t*)line, WS_LED_CNT, WS_PIN);<br />}<br /><br /><br />void set_pixel(void * line, uint16_t x, uint32_t color){<br /><br />x *=3;<br />*((uint8_t*)line + x) = color &gt;&gt; 8;<br />*((uint8_t*)line + x+1) = color &gt;&gt; 16;<br />*((uint8_t*)line + x+2) = color;<br />}<br /><br /><br />//     bit = 0    bit = 1<br />//  +----+        |        +--------+    |<br />//  |    |        |        |        |    |<br />//  |    |        |        |        |    |<br />//  |    |        |        |        |    |<br />//  |    |        |        |        |    |<br />//  |    +--------+        |        +----+<br />//  400ns   800ns 800ns   400ns<br /><br />void ws281x_asm_send( void *data, uint16_t datlen, uint8_t pin ) {<br /><br />uint8_t databyte=0, cnt, pinLO=~pin;<br />WS_DIR |= pin;<br />datlen *= 3;<br /><br />#if F_CPU == 16000000<br /><br />asm volatile(<br />&quot;lds%&#91;cnt&#93;,%&#91;ws_port&#93;\n\t&quot;<br />&quot;or%&#91;pinHI&#93;,%&#91;cnt&#93;\n\t&quot;<br />&quot;and%&#91;pinLO&#93;,%&#91;cnt&#93;\n\t&quot;<br />&quot;mPTL%=:subi%A6,1\n\t&quot;<br />&quot;sbci%B6,0\n\t&quot;<br />&quot;brcsexit%=\n\t&quot;<br />&quot;ld%&#91;databyte&#93;,X+\n\t&quot;<br />&quot;ldi%&#91;cnt&#93;,8\n\t&quot;<br /><br />&quot;oPTL%=:sts%&#91;ws_port&#93;,%&#91;pinHI&#93;\n\t&quot;<br />&quot;rjmp .+0\n\t&quot;<br /><br />&quot;lsl%&#91;databyte&#93;\n\t&quot;<br />&quot;brcs.+2\n\t&quot;<br />&quot;sts%&#91;ws_port&#93;,%&#91;pinLO&#93;\n\t&quot;<br />&quot;rjmp .+0\n\t&quot;<br />&quot;rjmp .+0\n\t&quot;<br /><br />&quot;dec%&#91;cnt&#93;\n\t&quot;<br />&quot;sts%&#91;ws_port&#93;,%&#91;pinLO&#93;\n\t&quot;<br />&quot;breqmPTL%=\n\t&quot;<br />&quot;rjmp .+0\n\t&quot;<br /><br />&quot;rjmpoPTL%=\n\t&quot;<br />&quot;exit%=:\n\t&quot;<br />:&#91;cnt&#93;&quot;=&amp;d&quot; (cnt)<br />:&#91;databyte&#93;&quot;r&quot; (databyte), &#91;ws_port&#93;&quot;M&quot; (_SFR_MEM_ADDR(WS_PORT)),<br /> &#91;pinHI&#93;&quot;r&quot; (pin), &#91;pinLO&#93;&quot;r&quot; (pinLO), &#91;data&#93;&quot;x&quot; (data), &#91;datlen&#93;&quot;r&quot; (datlen)<br />);<br /><br />#endif<br /><br />#if F_CPU == 11059200<br /><br />asm volatile(<br />&quot;lds%&#91;cnt&#93;,%&#91;ws_port&#93;\n\t&quot;<br />&quot;or%&#91;pinHI&#93;,%&#91;cnt&#93;\n\t&quot;<br />&quot;and%&#91;pinLO&#93;,%&#91;cnt&#93;\n\t&quot;<br />&quot;mPTL%=:subi%A6,1\n\t&quot;<br />&quot;sbci%B6,0\n\t&quot;<br />&quot;brcsexit%=\n\t&quot;<br />&quot;ld%&#91;databyte&#93;,X+\n\t&quot;<br />&quot;ldi%&#91;cnt&#93;,8\n\t&quot;<br /><br />&quot;oPTL%=:sts%&#91;ws_port&#93;,%&#91;pinHI&#93;\n\t&quot;<br />&quot;nop\n\t&quot;<br /><br />&quot;lsl%&#91;databyte&#93;\n\t&quot;<br />&quot;brcs.+2\n\t&quot;<br />&quot;sts%&#91;ws_port&#93;,%&#91;pinLO&#93;\n\t&quot;<br />&quot;nop\n\t&quot;<br /><br />&quot;dec%&#91;cnt&#93;\n\t&quot;<br />&quot;sts%&#91;ws_port&#93;,%&#91;pinLO&#93;\n\t&quot;<br />&quot;breqmPTL%=\n\t&quot;<br /><br /><br />&quot;rjmpoPTL%=\n\t&quot;<br />&quot;exit%=:\n\t&quot;<br />:&#91;cnt&#93;&quot;=&amp;d&quot; (cnt)<br />:&#91;databyte&#93;&quot;r&quot; (databyte), &#91;ws_port&#93;&quot;M&quot; (_SFR_MEM_ADDR(WS_PORT)), &#91;pinHI&#93;&quot;r&quot; (pin),<br />&#91;pinLO&#93;&quot;r&quot; (pinLO), &#91;data&#93;&quot;x&quot; (data), &#91;datlen&#93;&quot;r&quot; (datlen)<br />);<br /><br />#endif<br /><br />}[/syntax]<br /><br />ws281x.h<br />[syntax=c]/*<br /> * ws281x.h<br /> *<br /> *  Created on: 03-10-2014<br /> *      Author: Remi<br /> */<br /><br />#ifndef WS281X_H_<br />#define WS281X_H_<br /><br />//#define F_CPU 11059200<br /><br />#define WS_PIN_NR PD7<br />#define WS_PIN (1&lt;&lt;WS_PIN_NR)<br />#define WS_PORT PORTD<br />#define WS_DIR DDRD<br /><br />#define WS_LED_CNT 6<br /><br />typedef struct {<br />uint8_t g;<br />uint8_t r;<br />uint8_t b;<br />} TWSRGB;<br /><br />void ws281x_asm_send( void *data, uint16_t datlen, uint8_t pin );<br /><br />void set_pixel(void * line, uint16_t x, uint32_t color);<br /><br />void ws_cls (void * line, uint32_t color);<br /><br /><br />#endif /* WS281X_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6216">remi7</a> — 9 lis 2014, o 15:55</p><hr />
]]></content>
</entry>
</feed>