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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-26T08:15:07+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11445&amp;mode</id>
<entry>
<author><name><![CDATA[sMarek]]></name></author>
<updated>2015-04-26T08:15:07+01:00</updated>
<published>2015-04-26T08:15:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127488#p127488</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127488#p127488"/>
<title type="html"><![CDATA[Re: MagicLed problem z funkcją.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127488#p127488"><![CDATA[
@mirekk36 <br />Dziękuję, sprawa rozwiązana, brakowało funkcji opóźniającej, po wklepaniu - działa.<br /><br />@matw<br />A w jaki sposób proponujesz sprawdzić wydajność prądową? Wklepałem w googla, i jest propozycja podłączania żarówek ze skokiem +10W lub zmierzenie prądu zwarcia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9552">sMarek</a> — 26 kwi 2015, o 08:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matw]]></name></author>
<updated>2015-04-21T20:43:28+01:00</updated>
<published>2015-04-21T20:43:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127113#p127113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127113#p127113"/>
<title type="html"><![CDATA[Re: MagicLed problem z funkcją.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127113#p127113"><![CDATA[
@sMarek, sprawdziłem twój kod u siebie, na zestawie ATB i taśmie Magic LED.<br /><br />Wszystko wydaje się być poprawnie, poza tym, że twoje funkcje z main.c wyciągnąłem przed pętlę while(1) i ładnie zapala mi się druga dioda na taśmie.<br /><br />Zatem po zmianach funkcja main, wygląda tak:[syntax=c]int main(void){<br /><br />ws_set_pixel(pasek, 1, 0x0f0000);<br />ws281x_asm_send(pasek, 3, WS_PIN);<br /><br />while(1){<br /><br />}<br />}[/syntax]<br />Dodatkowo, jeśli nadal będziesz mieć &quot;dziwne objawy&quot; sprawdź dokładnie zasilanie i wydajność prądową, to jest bardzo ważne w przypadku taśm Magic LED i Mirek o tym dokładnie mówił w swoich poradnikach.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2394">matw</a> — 21 kwi 2015, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-21T20:43:02+01:00</updated>
<published>2015-04-21T20:43:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127112#p127112</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127112#p127112"/>
<title type="html"><![CDATA[Re: MagicLed problem z funkcją.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127112#p127112"><![CDATA[
dlaczego nie robisz przerwy po wysłaniu danych na magic led?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 kwi 2015, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sMarek]]></name></author>
<updated>2015-04-21T17:40:32+01:00</updated>
<published>2015-04-21T17:40:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127102#p127102</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127102#p127102"/>
<title type="html"><![CDATA[Re: MagicLed problem z funkcją.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127102#p127102"><![CDATA[
Jest ktoś w stanie mi pomóc?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9552">sMarek</a> — 21 kwi 2015, o 17:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sMarek]]></name></author>
<updated>2015-04-20T16:21:46+01:00</updated>
<published>2015-04-20T16:21:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127018#p127018</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127018#p127018"/>
<title type="html"><![CDATA[MagicLed problem z funkcją.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11445&amp;p=127018#p127018"><![CDATA[
Szanowni! <br /><br />Mam mały problem z pisaniem biblioteki do diod ws2812, a dokładniej, podejrzewam, że z funkcją ws_set_pixel. Wnioskuje to z tego, że gdy wywołuje taki prosty kod w funkcji main:<br />[syntax=c]ws_set_pixel(pasek, 1,0x0f0000);<br />ws281x_asm_send(pasek, 3,WS_PIN);[/syntax]<br />to nie ma żadnej reakcji ze strony diod. Kompilacja przebiega bezproblemowo, wgrywanie tak samo. <br />Sprawdziłem funkcję wywoływyjącą ws281x_asm_send(x,x,x) za pomocą funkcji ws_cnt i wszytsko gra.<br /><br />Pracuje na ATmega32, kwarc 11,0592 MHZ.<br /><br />Czy jes ktoś w stanie wskazać gdzie się pomyliłem? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Poniżej zamieszam kody: <br /><br />main.c<br />[syntax=c]#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 />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;W2812/ws281x.h&quot;<br /><br /><br />TWSRGB ws_rgb_leds &#91;WS_LED_CNT&#93;; //tworzenie tablicy<br />uint8_t * pasek = (uint8_t*)ws_rgb_leds;<br /><br />int main(void){<br /><br />while(1){<br /><br />ws_set_pixel(pasek, 1,0x0f0000);<br />ws281x_asm_send(pasek, 3,WS_PIN);<br /><br />        }<br />}[/syntax] <br /><br />ws281x.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<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 /><br />x=i*3;<br />*((uint8_t*)line + x) = color &gt;&gt; 8; //zielony<br />*((uint8_t*)line + x+1) = color &gt;&gt; 16;//czerwony<br />*((uint8_t*)line + x+2) = color;//niebieski<br /><br />}<br />}<br />ws281x_asm_send( (uint8_t*)line, WS_LED_CNT, WS_PIN );<br /><br />}<br /><br />void ws_set_pixel ( void * line, int x, uint32_t color){<br /><br />if( x&lt;0 ) return;<br />if( x &gt;= WS_LED_CNT) return;<br /><br />*((uint8_t*)line + x*3) = color &gt;&gt; 8; //zielony<br />*((uint8_t*)line + x*3+1)   = color &gt;&gt; 16;//czerwony<br />*((uint8_t*)line + x*3+2) = color;//niebieski<br />}<br /><br />void ws_line ( void *line, int x, uint16_t len, uint32_t color){<br /><br />int i;<br />for(i=0; i&lt;(int)x+len; i++){<br />ws_set_pixel(line,i, color);<br />}<br />}<br /><br />void ws281x_asm_send( void *data, uint16_t datlen, uint8_t pin){<br /><br />uint8_t databyte=0, cnt, pinLO=~pin; <br /> <br />WS_DIR |= pin; <br />datlen *=3; <br /><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; 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 /><br /><br />:&#91;cnt&#93;&quot;=&amp;d&quot; (cnt) <br /><br />:&#91;databyte&#93;&quot;r&quot;   (databyte),<br />&#91;ws_port&#93;&quot;M&quot; (_SFR_MEM_ADDR(WS_PORT)),<br />&#91;pinHI&#93;&quot;r&quot; (pin), <br />&#91;pinLO&#93;&quot;r&quot;(pinLO), <br />&#91;data&#93;&quot;x&quot;(data), <br />&#91;datlen&#93;&quot;r&quot;(datlen)<br />);<br /><br />#endif<br />}[/syntax]<br /><br /> ws281x.h<br /><br />[syntax=c]#ifndef WS281X_H_<br />#define WS281X_H_<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 59 <br /><br />typedef struct{<br />uint8_t g;<br />uint8_t r;<br />uint8_t b;<br />} TWSRGB;<br /><br /><br />void ws_cls( void *line, uint32_t color );<br />void ws281x_asm_send( void *data, uint16_t datlen, uint8_t pin);<br />void ws_debug_test (void * line, uint32_t color );<br />void ws_set_pixel ( void * line, int x, uint32_t color);<br />void ws_line ( void *line, int x, uint16_t len, uint32_t color);<br /><br /><br />#endif /* W2812_WS281X_H_ */[/syntax]<br /><br />@edit  Ma ktoś pomysł?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9552">sMarek</a> — 20 kwi 2015, o 16:21</p><hr />
]]></content>
</entry>
</feed>