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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-01-21T10:32:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10302&amp;mode</id>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2015-01-21T10:32:32+01:00</updated>
<published>2015-01-21T10:32:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=115089#p115089</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=115089#p115089"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=115089#p115089"><![CDATA[
Udało mi się zrobić to na timerach, wszystko śmiga jak należy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />(np. nadanie początku bez bitów stopu, areszty z bitami stopu)<br /></div><br />Jest możliwe wysyłanie bez bitów stopu? Z tego co wiem musi być chociaż 1 bit stopu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 21 sty 2015, o 10:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-01-21T02:04:29+01:00</updated>
<published>2015-01-21T02:04:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=115060#p115060</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=115060#p115060"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=115060#p115060"><![CDATA[
Witam,<br /><br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Tu wystarczy sam układ nadawania szeregowego. Nie potrzeba żadnego dodatkowego timera. Nikt przecież nie broni zmienić format ramki nadawania wlocie i nadawać same stany wysokie lub niskie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> Nawet można się zastanowić czy nietypowy format (nie 8N2), nie będzie wygodniejszy. ,,Przepołowienie bajtu&quot; (że tak ujmę kolokwialnie) może skutkować zrzuceniem na sprzęt większej części pracy i zostawi więcej mocy obliczeniowej w samym MCU (np. nadanie początku bez bitów stopu, areszty z bitami stopu). Ale to już zostawiam pytającemu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> Myślę że sam do tego dojdzie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /></div><br /><br />Do mi głowy nie przyszło, że przecież <strong> można zmieniać format danych i prędkość transmisji w locie, cenna wskazówka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /></strong>. Ale w tym konkretnym przypadku jakoś tak mi się wydaje, że te &quot;nietypowe&quot; BREAK i MAB prościej wysłać generując zbocza niż &quot;przenicowywać&quot; w locie UARTA, co kto lubi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />.<br /><br />P.S. No dobra <strong>@mokrowski</strong>, BREAK to co najmniej 88us , z kolei MAB to 8 us - ni jak nie mogę wykombinować jak prosto wysłać tą sekwencję UARTEM. Powiedzmy, że MAB to 1 bit stopu ( mniejsza o szybkość transmisji ), a przy takim założeniu wcześniej musimy wysłać 11 bitów ( BREAK ) pierwsze &quot;0&quot; - to bit startu, potrzebujemy jeszcze 10 bitów &quot;0&quot; - to se ne da pane Habranek <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />.  No chyba, że tak dobierzemy prędkość transmisji, że te 88 us to będzie 8n0 ( czyli 9 bitów ( licząc z bitem startu, bez bitu parzystości i bez bitu stopu ), ale wtedy MAB to już chyba lepiej zrobić programowo albo timerem ( bo to raptem 8 us ). Napisz proszę , jak Ty to widzisz.<br /> <br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 21 sty 2015, o 02:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2015-01-20T17:44:07+01:00</updated>
<published>2015-01-20T17:44:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114986#p114986</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114986#p114986"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114986#p114986"><![CDATA[
No i rozjaśniły się moje myśli <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 20 sty 2015, o 17:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2015-01-20T16:44:04+01:00</updated>
<published>2015-01-20T16:44:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114977#p114977</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114977#p114977"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114977#p114977"><![CDATA[
Ale Tx z PC idzie do Rx ATmegi, a dopiero Tx Atmegi idzie do świateł <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Rx w PC nie będzie używane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 20 sty 2015, o 16:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2015-01-20T14:21:31+01:00</updated>
<published>2015-01-20T14:21:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114967#p114967</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114967#p114967"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114967#p114967"><![CDATA[
Przychodzi mi do głowy pytanie<br />czy fizycznie podłączone jednej linii RX do dwóch odbiorników <br />(sytuacja : nadaje PC o odbiera uC i sterownik świateł)<br />nie będzie to się zakłócać . ?<br />Połączenie RS jest jeden do jeden.<br /><br />Takie moje luźne myśli <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=1044">Zaba</a> — 20 sty 2015, o 14:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2015-01-20T13:33:16+01:00</updated>
<published>2015-01-20T13:33:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114966#p114966</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114966#p114966"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114966#p114966"><![CDATA[
Właśnie tu jest problem, bo uC na jakim to robię to Atmega32. Jestem zmuszony &quot;pobawić&quot; się tym uartem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 20 sty 2015, o 13:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2015-01-20T11:48:54+01:00</updated>
<published>2015-01-20T11:48:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114954#p114954</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114954#p114954"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114954#p114954"><![CDATA[
Już mi się udało zaprzęgnąć do tego uarta i wysłanie sygnałów do świateł <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Tylko teraz problem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> tego uarta potrzebuję też używać do komunikacji o prędkości 9600 i nie wiem czy mogę &quot;dynamicznie&quot; zmieniać jego prędkość na początku funkcji BAUD=250000, a na koniec znowu BAUD=9600 ? Można w programie zmieniać tak często prędkość?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 20 sty 2015, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-01-20T00:23:44+01:00</updated>
<published>2015-01-20T00:23:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114942#p114942</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114942#p114942"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114942#p114942"><![CDATA[
Witam,<br /><br />Przecież to się samo prosi, aby wysyłać dane sprzętowo. Wygenerować Break i MAB w zmieniając zbocza w przerwaniu ( mierząc odstęp między nimi timerem )i po upływie czasu trwania MAB uruchomić nadajnik, wysłać UART-em bajt SC i później bajt danych( CD ). Cały bajt to też 44 us ( 11 bitów0, więc spokojnie zdążysz załadować kolejny do bufora nadawczego. Dla kolejnego kanału masz przecież dużo czasu (MTBF ), więc tu też spokojnie się wyrobisz. Tylko trzeba by tak dobrać kwarc, by osiągnąć szybkość transmisji 250kbps.<br /><br />Pozdrawiam, QuadMan.<br /><br />P.S. O... widzisz - gdy to pisałem, sam wymyśliłeś oczywiste rozwiązanie <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=5291">QuadMan</a> — 20 sty 2015, o 00:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2015-01-20T00:15:32+01:00</updated>
<published>2015-01-20T00:15:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114940#p114940</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114940#p114940"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114940#p114940"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />No a jeśli kolega się upiera że jednak nie wspomoże się sprzętowo tylko ,,międlenie bitów&quot; to sugeruję:<br /></div><br />Na pierwszy rzut oka myślałem, że nie będzie innej opcji, jak napisanie tego tym &quot;międleniem bitów&quot; <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> ,ale jak się dokładniej przyjrzałem to:<br /><a href="http://forum.atnel.pl/_obrazki/o/4851/9dd41cd00c2d982a8dae1dba26f5d802.gif"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4851/9dd41cd00c2d982a8dae1dba26f5d802.gif" alt="Obrazek" /></a><br />to co jest zaznaczone na czerwono to jest idealny odpowiednik dla uartu z parametrami: 250000 8N2 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> wcześniej tego nie zauważyłem, już zacząłem pisać nowy kod <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=4851">leonos2000</a> — 20 sty 2015, o 00:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2015-01-19T22:38:45+01:00</updated>
<published>2015-01-19T22:38:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114934#p114934</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114934#p114934"/>
<title type="html"><![CDATA[Re: Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114934#p114934"><![CDATA[
A może by wrzucić do FLASH'a zamiast do RAMu? <br />Odczytywać poprzez zmienną i tam ewentualnie zmieniać te bity co potrzebujesz (przed samym wysłaniem)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 19 sty 2015, o 22:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2015-01-19T22:22:13+01:00</updated>
<published>2015-01-19T22:22:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114928#p114928</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114928#p114928"/>
<title type="html"><![CDATA[Protokół DMX, jak napisać?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10302&amp;p=114928#p114928"><![CDATA[
Witam<br /><br />Potrzebuję napisać program do sterowania światłami poprzez właśnie DMX. Znalazłem opis: <a href="http://dmx512.krb.com.pl/dmx_prot.htm"  class="postlink">Opis protokołu DMX</a>. Według opisu napisałem program:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 14 sty 2015<br /> *      Author: Leon<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdbool.h&gt;<br />#include &quot;MKUART/mkuart.h&quot;<br /><br />#define DMXDDR DDRC<br />#define DMXPORT PORTC<br />#define DMXPIN (1&lt;&lt;PC7)<br />#define DMX1 DMXPORT |= DMXPIN<br />#define DMX0 DMXPORT &amp;= ~DMXPIN<br />#define LED PORTC &amp;= ~(1&lt;&lt;PC6)<br /><br />bool dmx=true;<br />bool sending=false;<br />uint8_t dmxframe=1;<br />uint8_t dmxdataframe=0;<br />uint16_t time=0;<br />uint16_t channel=0;<br />const uint8_t break_time=26;        //czas Break to 26 klatek czyli 104us<br />const uint8_t MAB_time=2;//czas MAB to 2 klatki czyli 8us<br />const uint8_t MTBF_time=125; //czas MTBF to 125 klatek czyli 500us<br />const uint8_t MTBP_time=250;//czas MTBP to 250 klatek czyli 1000us (1ms)<br /><br />uint8_t data&#91;512&#93;;//Bufor danych do dmx UWAGA data&#91;0&#93; to StartCode(SC) i nie wolno jego zmieniac!(musi byc data&#91;0&#93;=0; !)<br /><br />enum dmx_frame{//Bardzo pomocne typy wyliczeniowe<br />Nothing,<br />Break,<br />MAB,<br />Data,<br />MTBF,<br />MTBP<br />};<br />enum dmx_data_frame{<br />CDStart,<br />CD1,<br />CD2,<br />CD3,<br />CD4,<br />CD5,<br />CD6,<br />CD7,<br />CD8,<br />CDStop1,<br />CDStop2,<br />};<br /><br />void DMX_init(void);//funkcja inicjalizacji DMX<br /><br />int main(void){<br />DMX_init();//inicjalizuję DMX<br />DDRC |= (1&lt;&lt;PC6);<br />for(;;){<br />TIMSK |= (1&lt;&lt;OCIE0);<br />TIMSK |= (0&lt;&lt;OCIE0);<br />_delay_ms(500);<br />PORTC ^= (1&lt;&lt;PC6);<br />}<br />}<br /><br />void DMX_init(void){//funkcja inicjalizacji DMX<br />DMXDDR |= DMXPIN;//PIN DMX ustawiam na wyjście<br />DMX1;//Na pinie DMX ustawiam 1<br />TCCR0 |= (1&lt;&lt;WGM01) | (1&lt;&lt;CS00);//Kwarc 16Mhz więc bez preskalera, tryb CTC<br />OCR0=31;//Wpisuję wartośc 31 aby f=250 000hz<br />TIMSK |= (1&lt;&lt;OCIE0);//pozwalam na przerwania<br />sei();//globalnie odblokowuję przerwania<br />}<br /><br /><br /><br /><br />ISR( TIMER0_COMP_vect ) {//przerwanie z timera co 4us czyli f=250 000<br />if(dmx)DMX1; else DMX0;//natychmiastowo na początku przerwania zmieniam stan pinu na którym ma byc sygnał dmx<br /><br /><br />if(dmxframe==Nothing){dmx=1;sending=false;}<br /><br />else if(dmxframe==Break){//jeżeli ma byc break...<br />sending=true;<br />dmx=0;//informuję, że ma byc stan niski<br />time++;//inkrementuję zmienną<br />if(time==break_time){time=0;dmxframe++;}//jeżeli odpowiednio długo był break to przeskakuję do nastpnej ramki<br />}<br /><br />else if(dmxframe==MAB){<br />dmx=1;<br />time++;<br />if(time==MAB_time){time=0;dmxframe++;}<br />}<br /><br />else if(dmxframe==Data){<br />if(dmxdataframe==CDStart){dmx=0;dmxdataframe++;}<br />else if(dmxdataframe==CD1){dmx=data&#91;channel&#93;&amp;0x01;dmxdataframe++;}<br />else if(dmxdataframe==CD2){dmx=data&#91;channel&#93;&amp;0x02;dmxdataframe++;}<br />else if(dmxdataframe==CD3){dmx=data&#91;channel&#93;&amp;0x04;dmxdataframe++;}<br />else if(dmxdataframe==CD4){dmx=data&#91;channel&#93;&amp;0x08;dmxdataframe++;}<br />else if(dmxdataframe==CD5){dmx=data&#91;channel&#93;&amp;0x10;dmxdataframe++;}<br />else if(dmxdataframe==CD6){dmx=data&#91;channel&#93;&amp;0x20;dmxdataframe++;}<br />else if(dmxdataframe==CD7){dmx=data&#91;channel&#93;&amp;0x40;dmxdataframe++;}<br />else if(dmxdataframe==CD8){dmx=data&#91;channel&#93;&amp;0x80;dmxdataframe++;}<br />else if(dmxdataframe==CDStop1){dmx=1;dmxdataframe++;}<br />else if(dmxdataframe==CDStop2){dmx=1;dmxdataframe=0;}<br />channel++;<br />dmxframe++;<br />}<br /><br />else if(dmxframe==MTBF){<br />dmx=1;<br />time++;<br />if(time==MTBF_time){<br />time=0;<br />if(channel==512)dmxframe++;<br />else dmxframe=3;<br />}<br />}<br /><br />else if(dmxframe==MTBP){<br />sending=false;<br />dmx=1;<br />time++;<br />if(time==MTBP_time){time=0;dmxframe=1;}<br />}<br />TIMSK |= (0&lt;&lt;OCIE0);<br /><br />}[/syntax]<br />Oczywiście nie działa  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> . Problem polega na tym, że mam za dużo kodu w przerwaniu, które wykonuję się co 4us... Gdy zrobię eksperyment: nie uruchamiam przerwań(nie piszę sei()) to po wpisaniu w main kodu z delay do migania LED-em miga on co określony przeze mnie czas. Jednak gdy włącze przerwania (sei()) to np. _delay_ms(500) wykonuję się około 20 sekund  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> . Jak na tak krótki czas przerwania to chyba &quot;troszeczkę&quot; za dużo tych poleceń:<br />[syntax=asm]00000230 &lt;__vector_10&gt;:<br /> 230:1f 92       pushr1<br /> 232:0f 92       pushr0<br /> 234:0f b6       inr0, 0x3f; 63<br /> 236:0f 92       pushr0<br /> 238:11 24       eorr1, r1<br /> 23a:2f 93       pushr18<br /> 23c:3f 93       pushr19<br /> 23e:8f 93       pushr24<br /> 240:9f 93       pushr25<br /> 242:ef 93       pushr30<br /> 244:ff 93       pushr31<br /> 246:80 91 61 00 ldsr24, 0x0061<br /> 24a:88 23       andr24, r24<br /> 24c:11 f0       breq.+4      ; 0x252 &lt;__vector_10+0x22&gt;<br /> 24e:af 9a       sbi0x15, 7; 21<br /> 250:01 c0       rjmp.+2      ; 0x254 &lt;__vector_10+0x24&gt;<br /> 252:af 98       cbi0x15, 7; 21<br /> 254:30 91 60 00 ldsr19, 0x0060<br /> 258:31 11       cpser19, r1<br /> 25a:06 c0       rjmp.+12     ; 0x268 &lt;__vector_10+0x38&gt;<br /> 25c:81 e0       ldir24, 0x01; 1<br /> 25e:80 93 61 00 sts0x0061, r24<br /> 262:10 92 6b 00 sts0x006B, r1<br /> 266:f8 c0       rjmp.+496    ; 0x458 &lt;__vector_10+0x228&gt;<br /> 268:31 30       cpir19, 0x01; 1<br /> 26a:b1 f4       brne.+44     ; 0x298 &lt;__vector_10+0x68&gt;<br /> 26c:30 93 6b 00 sts0x006B, r19<br /> 270:10 92 61 00 sts0x0061, r1<br /> 274:80 91 68 00 ldsr24, 0x0068<br /> 278:90 91 69 00 ldsr25, 0x0069<br /> 27c:01 96       adiwr24, 0x01; 1<br /> 27e:90 93 69 00 sts0x0069, r25<br /> 282:80 93 68 00 sts0x0068, r24<br /> 286:4a 97       sbiwr24, 0x1a; 26<br /> 288:09 f0       breq.+2      ; 0x28c &lt;__vector_10+0x5c&gt;<br /> 28a:e6 c0       rjmp.+460    ; 0x458 &lt;__vector_10+0x228&gt;<br /> 28c:10 92 69 00 sts0x0069, r1<br /> 290:10 92 68 00 sts0x0068, r1<br /> 294:82 e0       ldir24, 0x02; 2<br /> 296:16 c0       rjmp.+44     ; 0x2c4 &lt;__vector_10+0x94&gt;<br /> 298:32 30       cpir19, 0x02; 2<br /> 29a:b9 f4       brne.+46     ; 0x2ca &lt;__vector_10+0x9a&gt;<br /> 29c:81 e0       ldir24, 0x01; 1<br /> 29e:80 93 61 00 sts0x0061, r24<br /> 2a2:80 91 68 00 ldsr24, 0x0068<br /> 2a6:90 91 69 00 ldsr25, 0x0069<br /> 2aa:01 96       adiwr24, 0x01; 1<br /> 2ac:90 93 69 00 sts0x0069, r25<br /> 2b0:80 93 68 00 sts0x0068, r24<br /> 2b4:02 97       sbiwr24, 0x02; 2<br /> 2b6:09 f0       breq.+2      ; 0x2ba &lt;__vector_10+0x8a&gt;<br /> 2b8:cf c0       rjmp.+414    ; 0x458 &lt;__vector_10+0x228&gt;<br /> 2ba:10 92 69 00 sts0x0069, r1<br /> 2be:10 92 68 00 sts0x0068, r1<br /> 2c2:83 e0       ldir24, 0x03; 3<br /> 2c4:80 93 60 00 sts0x0060, r24<br /> 2c8:c7 c0       rjmp.+398    ; 0x458 &lt;__vector_10+0x228&gt;<br /> 2ca:33 30       cpir19, 0x03; 3<br /> 2cc:09 f0       breq.+2      ; 0x2d0 &lt;__vector_10+0xa0&gt;<br /> 2ce:8c c0       rjmp.+280    ; 0x3e8 &lt;__vector_10+0x1b8&gt;<br /> 2d0:20 91 6a 00 ldsr18, 0x006A<br /> 2d4:21 11       cpser18, r1<br /> 2d6:04 c0       rjmp.+8      ; 0x2e0 &lt;__vector_10+0xb0&gt;<br /> 2d8:10 92 61 00 sts0x0061, r1<br /> 2dc:81 e0       ldir24, 0x01; 1<br /> 2de:0e c0       rjmp.+28     ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 2e0:80 91 66 00 ldsr24, 0x0066<br /> 2e4:90 91 67 00 ldsr25, 0x0067<br /> 2e8:21 30       cpir18, 0x01; 1<br /> 2ea:59 f4       brne.+22     ; 0x302 &lt;__vector_10+0xd2&gt;<br /> 2ec:fc 01       movwr30, r24<br /> 2ee:e0 56       subir30, 0x60; 96<br /> 2f0:ff 4f       sbcir31, 0xFF; 255<br /> 2f2:80 81       ldr24, Z<br /> 2f4:81 70       andir24, 0x01; 1<br /> 2f6:80 93 61 00 sts0x0061, r24<br /> 2fa:82 e0       ldir24, 0x02; 2<br /> 2fc:80 93 6a 00 sts0x006A, r24<br /> 300:68 c0       rjmp.+208    ; 0x3d2 &lt;__vector_10+0x1a2&gt;<br /> 302:22 30       cpir18, 0x02; 2<br /> 304:59 f4       brne.+22     ; 0x31c &lt;__vector_10+0xec&gt;<br /> 306:fc 01       movwr30, r24<br /> 308:e0 56       subir30, 0x60; 96<br /> 30a:ff 4f       sbcir31, 0xFF; 255<br /> 30c:80 81       ldr24, Z<br /> 30e:86 95       lsrr24<br /> 310:81 70       andir24, 0x01; 1<br /> 312:80 93 61 00 sts0x0061, r24<br /> 316:30 93 6a 00 sts0x006A, r19<br /> 31a:5b c0       rjmp.+182    ; 0x3d2 &lt;__vector_10+0x1a2&gt;<br /> 31c:23 30       cpir18, 0x03; 3<br /> 31e:59 f4       brne.+22     ; 0x336 &lt;__vector_10+0x106&gt;<br /> 320:fc 01       movwr30, r24<br /> 322:e0 56       subir30, 0x60; 96<br /> 324:ff 4f       sbcir31, 0xFF; 255<br /> 326:80 81       ldr24, Z<br /> 328:82 fb       bstr24, 2<br /> 32a:88 27       eorr24, r24<br /> 32c:80 f9       bldr24, 0<br /> 32e:80 93 61 00 sts0x0061, r24<br /> 332:84 e0       ldir24, 0x04; 4<br /> 334:e3 cf       rjmp.-58     ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 336:24 30       cpir18, 0x04; 4<br /> 338:59 f4       brne.+22     ; 0x350 &lt;__vector_10+0x120&gt;<br /> 33a:fc 01       movwr30, r24<br /> 33c:e0 56       subir30, 0x60; 96<br /> 33e:ff 4f       sbcir31, 0xFF; 255<br /> 340:80 81       ldr24, Z<br /> 342:83 fb       bstr24, 3<br /> 344:88 27       eorr24, r24<br /> 346:80 f9       bldr24, 0<br /> 348:80 93 61 00 sts0x0061, r24<br /> 34c:85 e0       ldir24, 0x05; 5<br /> 34e:d6 cf       rjmp.-84     ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 350:25 30       cpir18, 0x05; 5<br /> 352:51 f4       brne.+20     ; 0x368 &lt;__vector_10+0x138&gt;<br /> 354:fc 01       movwr30, r24<br /> 356:e0 56       subir30, 0x60; 96<br /> 358:ff 4f       sbcir31, 0xFF; 255<br /> 35a:80 81       ldr24, Z<br /> 35c:82 95       swapr24<br /> 35e:81 70       andir24, 0x01; 1<br /> 360:80 93 61 00 sts0x0061, r24<br /> 364:86 e0       ldir24, 0x06; 6<br /> 366:ca cf       rjmp.-108    ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 368:26 30       cpir18, 0x06; 6<br /> 36a:59 f4       brne.+22     ; 0x382 &lt;__vector_10+0x152&gt;<br /> 36c:fc 01       movwr30, r24<br /> 36e:e0 56       subir30, 0x60; 96<br /> 370:ff 4f       sbcir31, 0xFF; 255<br /> 372:80 81       ldr24, Z<br /> 374:85 fb       bstr24, 5<br /> 376:88 27       eorr24, r24<br /> 378:80 f9       bldr24, 0<br /> 37a:80 93 61 00 sts0x0061, r24<br /> 37e:87 e0       ldir24, 0x07; 7<br /> 380:bd cf       rjmp.-134    ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 382:27 30       cpir18, 0x07; 7<br /> 384:59 f4       brne.+22     ; 0x39c &lt;__vector_10+0x16c&gt;<br /> 386:fc 01       movwr30, r24<br /> 388:e0 56       subir30, 0x60; 96<br /> 38a:ff 4f       sbcir31, 0xFF; 255<br /> 38c:80 81       ldr24, Z<br /> 38e:86 fb       bstr24, 6<br /> 390:88 27       eorr24, r24<br /> 392:80 f9       bldr24, 0<br /> 394:80 93 61 00 sts0x0061, r24<br /> 398:88 e0       ldir24, 0x08; 8<br /> 39a:b0 cf       rjmp.-160    ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 39c:28 30       cpir18, 0x08; 8<br /> 39e:59 f4       brne.+22     ; 0x3b6 &lt;__vector_10+0x186&gt;<br /> 3a0:fc 01       movwr30, r24<br /> 3a2:e0 56       subir30, 0x60; 96<br /> 3a4:ff 4f       sbcir31, 0xFF; 255<br /> 3a6:80 81       ldr24, Z<br /> 3a8:88 1f       adcr24, r24<br /> 3aa:88 27       eorr24, r24<br /> 3ac:88 1f       adcr24, r24<br /> 3ae:80 93 61 00 sts0x0061, r24<br /> 3b2:89 e0       ldir24, 0x09; 9<br /> 3b4:a3 cf       rjmp.-186    ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 3b6:29 30       cpir18, 0x09; 9<br /> 3b8:29 f4       brne.+10     ; 0x3c4 &lt;__vector_10+0x194&gt;<br /> 3ba:81 e0       ldir24, 0x01; 1<br /> 3bc:80 93 61 00 sts0x0061, r24<br /> 3c0:8a e0       ldir24, 0x0A; 10<br /> 3c2:9c cf       rjmp.-200    ; 0x2fc &lt;__vector_10+0xcc&gt;<br /> 3c4:2a 30       cpir18, 0x0A; 10<br /> 3c6:29 f4       brne.+10     ; 0x3d2 &lt;__vector_10+0x1a2&gt;<br /> 3c8:81 e0       ldir24, 0x01; 1<br /> 3ca:80 93 61 00 sts0x0061, r24<br /> 3ce:10 92 6a 00 sts0x006A, r1<br /> 3d2:80 91 66 00 ldsr24, 0x0066<br /> 3d6:90 91 67 00 ldsr25, 0x0067<br /> 3da:01 96       adiwr24, 0x01; 1<br /> 3dc:90 93 67 00 sts0x0067, r25<br /> 3e0:80 93 66 00 sts0x0066, r24<br /> 3e4:84 e0       ldir24, 0x04; 4<br /> 3e6:6e cf       rjmp.-292    ; 0x2c4 &lt;__vector_10+0x94&gt;<br /> 3e8:34 30       cpir19, 0x04; 4<br /> 3ea:e9 f4       brne.+58     ; 0x426 &lt;__vector_10+0x1f6&gt;<br /> 3ec:81 e0       ldir24, 0x01; 1<br /> 3ee:80 93 61 00 sts0x0061, r24<br /> 3f2:80 91 68 00 ldsr24, 0x0068<br /> 3f6:90 91 69 00 ldsr25, 0x0069<br /> 3fa:01 96       adiwr24, 0x01; 1<br /> 3fc:90 93 69 00 sts0x0069, r25<br /> 400:80 93 68 00 sts0x0068, r24<br /> 404:8d 37       cpir24, 0x7D; 125<br /> 406:91 05       cpcr25, r1<br /> 408:39 f5       brne.+78     ; 0x458 &lt;__vector_10+0x228&gt;<br /> 40a:10 92 69 00 sts0x0069, r1<br /> 40e:10 92 68 00 sts0x0068, r1<br /> 412:80 91 66 00 ldsr24, 0x0066<br /> 416:90 91 67 00 ldsr25, 0x0067<br /> 41a:81 15       cpr24, r1<br /> 41c:92 40       sbcir25, 0x02; 2<br /> 41e:09 f0       breq.+2      ; 0x422 &lt;__vector_10+0x1f2&gt;<br /> 420:50 cf       rjmp.-352    ; 0x2c2 &lt;__vector_10+0x92&gt;<br /> 422:85 e0       ldir24, 0x05; 5<br /> 424:4f cf       rjmp.-354    ; 0x2c4 &lt;__vector_10+0x94&gt;<br /> 426:35 30       cpir19, 0x05; 5<br /> 428:b9 f4       brne.+46     ; 0x458 &lt;__vector_10+0x228&gt;<br /> 42a:10 92 6b 00 sts0x006B, r1<br /> 42e:21 e0       ldir18, 0x01; 1<br /> 430:20 93 61 00 sts0x0061, r18<br /> 434:80 91 68 00 ldsr24, 0x0068<br /> 438:90 91 69 00 ldsr25, 0x0069<br /> 43c:01 96       adiwr24, 0x01; 1<br /> 43e:90 93 69 00 sts0x0069, r25<br /> 442:80 93 68 00 sts0x0068, r24<br /> 446:8a 3f       cpir24, 0xFA; 250<br /> 448:91 05       cpcr25, r1<br /> 44a:31 f4       brne.+12     ; 0x458 &lt;__vector_10+0x228&gt;<br /> 44c:10 92 69 00 sts0x0069, r1<br /> 450:10 92 68 00 sts0x0068, r1<br /> 454:20 93 60 00 sts0x0060, r18<br /> 458:89 b7       inr24, 0x39; 57<br /> 45a:89 bf       out0x39, r24; 57<br /> 45c:ff 91       popr31<br /> 45e:ef 91       popr30<br /> 460:9f 91       popr25<br /> 462:8f 91       popr24<br /> 464:3f 91       popr19<br /> 466:2f 91       popr18<br /> 468:0f 90       popr0<br /> 46a:0f be       out0x3f, r0; 63<br /> 46c:0f 90       popr0<br /> 46e:1f 90       popr1<br /> 470:18 95       reti[/syntax]<br />Wpadłem na pomysł aby zrobić tablicę zmiennych i zrobić coś w stylu:<br />[syntax=c]bool dmx&#91;ERROR!nie ma tyle ramu!&#93;;<br />ISR( TIMER0_COMP_vect ) {//nazwa przerwania w asemblerze:  &lt;__vector_10&gt;:<br />if(dmx&#91;bit&#93;)DMX1;<br />else DMX0;<br />bit++;<br />}[/syntax]<br />W kodzie wyżej po prostu w jakiejś funkcji bym ustawił kolejne bity/ramki do wysłania, a w przerwaniu bym tylko zmieniał stan pinu. Na 3 kanały działało, ale za dużo by to ramu zżerało i to nie wypali (512 kanałów * 11 bitów/ramek + MTBF = dużooo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> )<br />Więc teraz nie wiem jak się napisać ten protokół..... Bardzo byłbym wdzięczny za podpowiedzi jak to można napisać i czy to wogóle możliwe  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <img src="https://forum.atnel.pl/images/smilies/icon_idea.gif" alt=":idea:" title="Pomysł" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 19 sty 2015, o 22:22</p><hr />
]]></content>
</entry>
</feed>