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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-08-06T16:22:00+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1095&amp;mode</id>
<entry>
<author><name><![CDATA[Kobuz]]></name></author>
<updated>2012-08-06T16:22:00+01:00</updated>
<published>2012-08-06T16:22:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11946#p11946</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11946#p11946"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11946#p11946"><![CDATA[
Zacząłem szukać jakiś przykładów PWMu programowego ale są one dla mnie trochę niejasne. Czy mógłby ktoś podpowiedzieć coś więcej? Chodzi mi głównie o ATtiny 13. Czytałem że potrzebne są dwa timery w innym przykładzie że tylko jeden wystarczy. Jak to wygląda w praktyce?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=509">Kobuz</a> — 6 sie 2012, o 16:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-05T21:22:03+01:00</updated>
<published>2012-08-05T21:22:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11877#p11877</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11877#p11877"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11877#p11877"><![CDATA[
<div class="quotetitle">Kobuz napisał(a):</div><div class="quotecontent"><br />... wystarczyłoby gdybym odkrył w jaki sposób to działa... jak wysterować no 2 serwa z jednego kanału PWM np. w ATtiny...<br /></div><br /><br />To wiesz co? gdybyś to kiedyś odkrył to daj nam znać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... żart oczywiście <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Z jednego kanału PWM nie wysterujesz więcej niż jednego serwa, ale jeśli sobie zrobisz programowe PWM'y to wtedy uzyskasz dowolną ilość kanałów i na pinach które ci się podobają, więc wtedy wysterujesz ich kilka.<br /><br />Oczywiście trochę przesadziłem z tą dowolną ilością kanałów programowych PWM ale kilka na pewno dasz radę zrobić <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> — 5 sie 2012, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kobuz]]></name></author>
<updated>2012-08-05T21:07:23+01:00</updated>
<published>2012-08-05T21:07:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11874#p11874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11874#p11874"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=11874#p11874"><![CDATA[
Witam, jestem co prawda nowy na forum ale to nie tak że wpadnę, zadam pytanie i uciekam. <br />Zacząłem uczyć się C, niedawno. Powili zaczynam to &quot;ogarniać&quot; jednak zagadkę stanowi dla mnie właśnie sterowanie kilkoma serwami...<br />Na przykład z takiej ATtiny13 czy ATmegi8 (z tymi do tej pory miałem kontakt) mają one odpowiednio dwa i 3 kanały PWM więc jak Wy podłączacie tam tyle serw? ;p<br />Staram się rozgryźć kod z poprzedniej strony ale idzie powoli.<br />Byłbym wdzięczny za wskazówki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Oczywiście nie mam zamiaru rzucać się na głęboką wodę, wystarczyłoby gdybym odkrył w jaki sposób to działa... jak wysterować no 2 serwa z jednego kanału PWM np. w ATtiny...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=509">Kobuz</a> — 5 sie 2012, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-06-17T19:36:28+01:00</updated>
<published>2012-06-17T19:36:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8161#p8161</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8161#p8161"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8161#p8161"><![CDATA[
hehehe no pewnie że tak <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=58">SunRiver</a> — 17 cze 2012, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-06-17T19:14:20+01:00</updated>
<published>2012-06-17T19:14:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8159#p8159</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8159#p8159"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8159#p8159"><![CDATA[
To już chyba prościej było by napisać od zera <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez Gość — 17 cze 2012, o 19:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-06-17T12:30:19+01:00</updated>
<published>2012-06-17T12:30:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8130#p8130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8130#p8130"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8130#p8130"><![CDATA[
nikt nie mówił że będzie prosto prawda ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 17 cze 2012, o 12:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janbernat]]></name></author>
<updated>2012-06-17T12:27:24+01:00</updated>
<published>2012-06-17T12:27:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8128#p8128</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8128#p8128"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8128#p8128"><![CDATA[
No ale jest to C++   <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=171">janbernat</a> — 17 cze 2012, o 12:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-06-16T22:10:01+01:00</updated>
<published>2012-06-16T22:10:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8126#p8126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8126#p8126"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8126#p8126"><![CDATA[
obiecałem i macie, teoretycznie max32 kanały ale używałem tylko 12stu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=c]<br /><br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/signal.h&gt;<br />#include &lt;avr/sleep.h&gt;<br /><br />#include &quot;common.h&quot;<br />#include &quot;opled.h&quot;<br />#include &quot;usart.h&quot;<br />#include &quot;twi_aap.h&quot;<br />#include &quot;eeprom.h&quot;<br /><br />namespace PWM0 {<br />void inline Init() {<br />CLRBIT(PRR,PRTIM0);<br />// fast PWM mode oraz ustwienie oby wyjść na plus<br />TCCR0A = (1 &lt;&lt; COM0A1) | (1 &lt;&lt; COM0B1) | (1 &lt;&lt; WGM01) | (1 &lt;&lt; WGM00);<br />TCCR0B = (1 &lt;&lt; CS01) | (1 &lt;&lt; CS00); //  clkI/O / 64 -&gt; full cycle  2.5ms  6.4MHz (6.5536MHz) <br />SETBIT(DDRD,0x40|0x20); // Port D pin 5 i 6 <br />CLRBIT(PORTD,0x40|0x20); <br />OCR0A = 0x00;<br />OCR0B = 0x00;<br />TCNT0 = 0x00;<br />}<br />void inline DisableChA() {               CLRBIT(TCCR0A,(1 &lt;&lt; COM0A1)); }<br />void inline DisableChB() {               CLRBIT(TCCR0A,(1 &lt;&lt; COM0B1)); }<br />void inline DisableChAB() {              CLRBIT(TCCR0A,(1 &lt;&lt; COM0A1) | (1 &lt;&lt; COM0B1)); }<br />void inline EnableChA() {                SETBIT(TCCR0A,(1 &lt;&lt; COM0A1)); }<br />void inline EnableChB() {                SETBIT(TCCR0A,(1 &lt;&lt; COM0B1)); }<br />void inline EnableChAB() {               SETBIT(TCCR0A,(1 &lt;&lt; COM0A1) | (1 &lt;&lt; COM0B1)); }<br />void inline SetChannelA(uint8_t aValue) { OCR0A = aValue; }<br />void inline SetChannelB(uint8_t aValue) { OCR0B = aValue; }<br />void inline EnableIRQ_A() {              SETBIT(TIMSK0,(1 &lt;&lt; OCIE0A)); }<br />void inline EnableIRQ_B() {              SETBIT(TIMSK0,(1 &lt;&lt; OCIE0B)); }<br />void inline EnableIRQ_Overflow() {       SETBIT(TIMSK0,(1 &lt;&lt; TOIE0)); }<br />void inline EnableOnlyIRQ_A() {          TIMSK0 = (1 &lt;&lt; OCIE0A); }<br />void inline EnableOnlyIRQ_B() {          TIMSK0 = (1 &lt;&lt; OCIE0B); }<br />void inline EnableOnlyIRQ_Overflow() {   TIMSK0 = (1 &lt;&lt; TOIE0); }<br />void inline DisableIRQ_A() {             CLRBIT(TIMSK0,(1 &lt;&lt; OCIE0A)); }<br />void inline DisableIRQ_B() {             CLRBIT(TIMSK0,(1 &lt;&lt; OCIE0B)); }<br />void inline DisableIRQ_Overflow() {      CLRBIT(TIMSK0,(1 &lt;&lt; TOIE0)); }<br />void inline DisableIRQ_All() {           TIMSK0 = 0; }<br />bool inline IsPendingIRQ_A() {           return (TESTBIT(TIFR0,(1 &lt;&lt; OCF0A)) != 0); }<br />bool inline IsPendingIRQ_B() {           return (TESTBIT(TIFR0,(1 &lt;&lt; OCF0B)) != 0); }<br />bool inline IsPendingIRQ_Overflow() {    return (TESTBIT(TIFR0,(1 &lt;&lt; TOV0)) != 0); }<br />void inline ClearPendingIRQ_A() {        TIFR0 = (1 &lt;&lt; OCF0A); }<br />void inline ClearPendingIRQ_B() {        TIFR0 = (1 &lt;&lt; OCF0B); }<br />void inline ClearPendingIRQ_Overflow() { TIFR0 = (1 &lt;&lt; TOV0); }<br />void inline ClearPendingIRQ_All() {      TIFR0 = (1 &lt;&lt; OCF0A) | (1 &lt;&lt; OCF0B) | (1 &lt;&lt; TOV0); }<br />}<br /><br />// 16-bit timer zdołowany do  8-bit<br />namespace PWM1 {<br />void inline Init() {<br />CLRBIT(PRR,PRTIM0);<br />// fast PWM mode  outA ioutB ---&gt;<br />TCCR1A = (1 &lt;&lt; COM1A1) | (1 &lt;&lt; COM1B1) | (1 &lt;&lt; WGM10);<br />TCCR1B = (1 &lt;&lt; CS01) | (1 &lt;&lt; CS00) | (1 &lt;&lt; WGM12); <br />SETBIT(DDRB,0x02|0x04); <br />CLRBIT(PORTB,0x02|0x04); <br />OCR1A = 0x0000;<br />OCR1B = 0x0000;<br />ICR1 = 0x0000;<br />TCNT1 = 0x0000;<br />}<br />void inline DisableChA() {               CLRBIT(TCCR1A,(1 &lt;&lt; COM1A1)); }<br />void inline DisableChB() {               CLRBIT(TCCR1A,(1 &lt;&lt; COM1B1)); }<br />void inline DisableChAB() {              CLRBIT(TCCR1A,(1 &lt;&lt; COM1A1) | (1 &lt;&lt; COM1B1)); }<br />void inline EnableChA() {                SETBIT(TCCR1A,(1 &lt;&lt; COM1A1)); }<br />void inline EnableChB() {                SETBIT(TCCR1A,(1 &lt;&lt; COM1B1)); }<br />void inline EnableChAB() {               SETBIT(TCCR1A,(1 &lt;&lt; COM1A1) | (1 &lt;&lt; COM1B1)); }<br /><br />void inline SetChannelA(uint8_t aValue) { OCR1AL = aValue; }<br />void inline SetChannelB(uint8_t aValue) { OCR1BL = aValue; }<br />void inline EnableIRQ_A() {              SETBIT(TIMSK1,(1 &lt;&lt; OCIE1A)); }<br />void inline EnableIRQ_B() {              SETBIT(TIMSK1,(1 &lt;&lt; OCIE1B)); }<br />void inline EnableIRQ_Overflow() {       SETBIT(TIMSK1,(1 &lt;&lt; TOIE1)); }<br />void inline EnableOnlyIRQ_A() {          TIMSK1 = (1 &lt;&lt; OCIE1A); }<br />void inline EnableOnlyIRQ_B() {          TIMSK1 = (1 &lt;&lt; OCIE1B); }<br />void inline EnableOnlyIRQ_Overflow() {   TIMSK1 = (1 &lt;&lt; TOIE1); }<br />void inline DisableIRQ_A() {             CLRBIT(TIMSK1,(1 &lt;&lt; OCIE1A)); }<br />void inline DisableIRQ_B() {             CLRBIT(TIMSK1,(1 &lt;&lt; OCIE1B)); }<br />void inline DisableIRQ_Overflow() {      CLRBIT(TIMSK1,(1 &lt;&lt; TOIE1)); }<br />void inline DisableIRQ_All() {           TIMSK1 = 0; }<br />bool inline IsPendingIRQ_A() {           return (TESTBIT(TIFR1,(1 &lt;&lt; OCF1A)) != 0); }<br />bool inline IsPendingIRQ_B() {           return (TESTBIT(TIFR1,(1 &lt;&lt; OCF1B)) != 0); }<br />bool inline IsPendingIRQ_Overflow() {    return (TESTBIT(TIFR1,(1 &lt;&lt; TOV1)) != 0); }<br />void inline ClearPendingIRQ_A() {        TIFR1 = (1 &lt;&lt; OCF1A); }<br />void inline ClearPendingIRQ_B() {        TIFR1 = (1 &lt;&lt; OCF1B); }<br />void inline ClearPendingIRQ_Overflow() { TIFR1 = (1 &lt;&lt; TOV1); }<br />void inline ClearPendingIRQ_All() {      TIFR1 = (1 &lt;&lt; OCF1A) | (1 &lt;&lt; OCF1B) | (1 &lt;&lt; TOV1); }<br />}<br /><br />// 32-kanały pwm  PWM0 i PWM1<br />namespace Servo32 {<br />const int ChNum = 32;<br />const uint8_t MaxData = 250;<br />uint8_t LedCnt;<br />uint8_t Data[ChNum];<br />uint8_t CurIdx;<br />const uint8_t AddrTable[8] PROGMEM = {0,4,2,6,1,5,3,7};<br /><br />void Advance();<br />void inline Init() {<br />GTCCR = (1 &lt;&lt; TSM) | (1 &lt;&lt; PSRSYNC); // Synchronizacja PWMów <br />PWM0::Init();<br />PWM1::Init();<br />CurIdx = 0;<br />LedCnt = 0;<br />for(int i=0;i&lt;ChNum;++i) Data[i] = 0;<br />SETBIT(DDRC,0x07); // Port C piny 0 1 2 --&gt;piny adresowe<br />SETBIT(PORTC,0x07); <br />Advance();<br />GTCCR = (1 &lt;&lt; PSRSYNC); <br />}<br /><br />void inline SetIRQToChannel0() { PWM1::DisableIRQ_All(); PWM0::EnableOnlyIRQ_A(); }<br />void inline SetIRQToChannel1() { PWM1::DisableIRQ_All(); PWM0::EnableOnlyIRQ_B(); }<br />void inline SetIRQToChannel2() { PWM0::DisableIRQ_All(); PWM1::EnableOnlyIRQ_A(); }<br />void inline SetIRQToChannel3() { PWM0::DisableIRQ_All(); PWM1::EnableOnlyIRQ_B(); }<br /><br />// następne 4 kanały<br />void Advance() {<br />PWM0::ClearPendingIRQ_All();<br />PWM1::ClearPendingIRQ_All();<br /><br />uint8_t MuxAddr = pgm_read_byte(AddrTable+(CurIdx &gt;&gt; 2));<br /><br />uint8_t Data0 = Data[CurIdx+0];<br />uint8_t Data1 = Data[CurIdx+1];<br />uint8_t Data2 = Data[CurIdx+2];<br />uint8_t Data3 = Data[CurIdx+3];<br /><br />if ((Data0 | Data1 | Data2 | Data3) == 0) {<br />// wszystkie kanały =0. czekanie na przerwanie<br />SetIRQToChannel0();<br /><br />// Update kanałów ....<br /><br />PORTC = (PORTC &amp; ~0x07) | (MuxAddr);<br />PWM0::DisableChA();<br />PWM0::DisableChB();<br />PWM1::DisableChA();<br />PWM1::DisableChB();<br />PWM0::SetChannelA(128);<br />PWM0::SetChannelB(1);<br />PWM1::SetChannelA(1);<br />PWM1::SetChannelB(1);<br />} else {<br />// ustawienie IRQ na max<br />if (Data0 &gt; Data1) {<br />if (Data2 &gt; Data3) {<br />if (Data0 &gt; Data2) {<br />// CH0 = max<br />SetIRQToChannel0();<br />} else {<br />// CH2 = max<br />SetIRQToChannel2();<br />}<br />} else {<br />if (Data0 &gt; Data3) {<br />// CH0 = max<br />SetIRQToChannel0();<br />} else {<br />// CH3 = max<br />SetIRQToChannel3();<br />}<br />}<br />} else {<br />if (Data2 &gt; Data3) {<br />if (Data1 &gt; Data2) {<br />// CH1 = max<br />SetIRQToChannel1();<br />} else {<br />// CH2 = max<br />SetIRQToChannel2();<br />}<br />} else {<br />if (Data1 &gt; Data3) {<br />// CH1 = max<br />SetIRQToChannel1();<br />} else {<br />// CH3 = max<br />SetIRQToChannel3();<br />}<br />}<br />}<br /><br />// Update danych na kanałach<br />PORTC = (PORTC &amp; ~0x07) | (MuxAddr);<br /><br />if (Data0 == 0) PWM0::DisableChA(); else PWM0::EnableChA();<br />if (Data1 == 0) PWM0::DisableChB(); else PWM0::EnableChB();<br />if (Data2 == 0) PWM1::DisableChA(); else PWM1::EnableChA();<br />if (Data3 == 0) PWM1::DisableChB(); else PWM1::EnableChB();<br />PWM0::SetChannelA(Data0+1);<br />PWM0::SetChannelB(Data1+1);<br />PWM1::SetChannelA(Data2+1);<br />PWM1::SetChannelB(Data3+1);<br />}<br />CurIdx+=4;<br />if (CurIdx &gt;= ChNum) CurIdx = 0;<br />PWM0::ClearPendingIRQ_All();<br />PWM1::ClearPendingIRQ_All();<br />if (++LedCnt == 200) {<br />LedCnt = 0;<br />OpLed::Toggle();<br />}<br />}<br />}<br /><br />SIGNAL(SIG_OUTPUT_COMPARE1A) {Servo32::Advance();}<br />SIGNAL(SIG_OUTPUT_COMPARE1B) {Servo32::Advance();}<br />SIGNAL(SIG_OVERFLOW1) {Servo32::Advance();}<br />SIGNAL(SIG_OUTPUT_COMPARE0A) {Servo32::Advance();}<br />SIGNAL(SIG_OUTPUT_COMPARE0B) {Servo32::Advance();}<br />SIGNAL(SIG_OVERFLOW0) {Servo32::Advance();}<br /><br />const uint8_t AddrTable[32] PROGMEM = {<br />0+0,4+0,8+0,12+0,16+0,20+0,24+0,28+0,<br />0+1,4+1,8+1,12+1,16+1,20+1,24+1,28+1,<br />0+2,4+2,8+2,12+2,16+2,20+2,24+2,28+2,<br />0+3,4+3,8+3,12+3,16+3,20+3,24+3,28+3<br />};<br />uint8_t Address;<br /><br />namespace UsartComm {<br />const uint8_t CmdSync = 'c';<br />const uint8_t CmdAddr = 'a';<br />const uint8_t CmdRead = 'r';<br />const uint8_t CmdWrite = 'w';<br />const uint8_t CmdReadNoInc = 'R';<br />const uint8_t CmdWriteNoInc = 'W';<br />const uint8_t StatOK = '*';<br />const uint8_t StatError = 'E';<br />enum States {<br />State_Idle = 0,<br />State_Address,<br />State_Data,<br />State_DataNoInc<br />} State;<br />inline void Init(uint16_t aBaudSetting) {<br />USART0::Init(aBaudSetting);<br />State = State_Idle;<br />Address = 0;<br />}<br />void StateMachine() {<br />uint8_t CurData = USART0::FastReceiveData();<br />uint8_t TranslatedAddress;<br />OpLed::Toggle();<br />if (State == State_Idle) {<br />if (CurData == CmdAddr) {<br />USART0::FastSendData(StatOK);<br />State = State_Address;<br />} else if (CurData == CmdWrite) {<br />USART0::FastSendData(StatOK);<br />State = State_Data;<br />} else if (CurData == CmdWriteNoInc) {<br />USART0::FastSendData(StatOK);<br />State = State_DataNoInc;<br />} else if (CurData == CmdRead) {<br />TranslatedAddress = pgm_read_byte(AddrTable+Address);<br />USART0::FastSendData(Servo32::Data[TranslatedAddress]);<br />++Address;<br />if (Address &gt;= Servo32::ChNum) Address = 0;<br />State = State_Idle;<br />} else if (CurData == CmdReadNoInc) {<br />TranslatedAddress = pgm_read_byte(AddrTable+Address);<br />USART0::FastSendData(Servo32::Data[TranslatedAddress]);<br />State = State_Idle;<br />} else if (CurData == CmdSync) {<br />USART0::FastSendData(CmdSync);<br />State = State_Idle;<br />} else {<br />//  Jesli bład ......<br />USART0::FastSendData(StatError);<br />State = State_Idle;<br />}<br />} else if (State == State_Data) {<br />TranslatedAddress = pgm_read_byte(AddrTable+Address);<br />if (CurData &gt; Servo32::MaxData) CurData = Servo32::MaxData;<br />Servo32::Data[TranslatedAddress] = CurData;<br />++Address;<br />if (Address &gt;= Servo32::ChNum) Address = 0;<br />USART0::FastSendData(StatOK);<br />State = State_Idle;<br />} else if (State == State_DataNoInc) {<br />TranslatedAddress = pgm_read_byte(AddrTable+Address);<br />if (CurData &gt; Servo32::MaxData) CurData = Servo32::MaxData;<br />Servo32::Data[TranslatedAddress] = CurData;<br />USART0::FastSendData(StatOK);<br />State = State_Idle;<br />} else if (State == State_Address) {<br />if (Address &gt;= Servo32::ChNum) {<br />USART0::FastSendData(StatError);<br />} else {<br />Address = CurData;<br />USART0::FastSendData(StatOK);<br />}<br />State = State_Idle;<br />}<br />}<br />}<br /><br />namespace TWI {<br />extern const sConfigRecord ConfigRecord PROGMEM = {UniqueIDUnassigned,DevClassServoController,DevUmServo32};<br /><br />enum UserStates {<br />US_ReceiveAddr = TWI::US_Base,<br />US_ReceiveData,<br />US_SendData<br />};<br /><br />void HandleUserReceive() {<br />State = US_ReceiveAddr;<br />}<br /><br />void HandleUserTransmit() {<br />uint8_t TranslatedAddress = pgm_read_byte(AddrTable+Address);<br />TWIPrevData = Servo32::Data[TranslatedAddress];<br />TWDR = TWIPrevData;<br />++Address;<br />if (Address &gt;= Servo32::ChNum) Address = 0;<br />State = US_SendData;<br />}<br /><br />void HandleUserState() {<br />uint8_t TranslatedAddress;<br />switch (State) {<br />case US_ReceiveAddr:<br />switch (TWIStatus) {<br />                case TW_SR_DATA_ACK:<br />                if (TWIData &gt;= Servo32::ChNum) Address = Servo32::ChNum - 1; else Address = TWIData;<br />State = US_ReceiveData;<br />break;<br />default:<br />ResetTWI();<br />break;<br />}<br />break;<br />case US_ReceiveData:<br />switch (TWIStatus) {<br />                case TW_SR_DATA_ACK:<br />TranslatedAddress = pgm_read_byte(AddrTable+Address);<br />                Servo32::Data[TranslatedAddress] = TWIData;<br />++Address;<br />if (Address &gt;= Servo32::ChNum) Address = 0;<br />                <br />break;<br />default:<br />ResetTWI();<br />break;<br />}<br />break;<br />case US_SendData:<br />switch (TWIStatus) {<br />                case TW_ST_DATA_ACK:<br />TranslatedAddress = pgm_read_byte(AddrTable+Address);<br />TWIPrevData = Servo32::Data[TranslatedAddress];<br />TWDR = TWIPrevData;<br />++Address;<br />if (Address &gt;= Servo32::ChNum) Address = 0;<br />            SETBIT(TWIControl,(1 &lt;&lt; TWEA)); // wymagany sygnał ACK<br />            break;<br />default:<br />ResetTWI();<br />break;<br />            }<br />break;<br />default:<br /><br />ResetTWI();<br />break;<br />}<br />}<br />}<br /><br />SIGNAL(SIG_USART_RECV) {UsartComm::StateMachine();}<br /><br />int main() {<br />OSCCAL = 0x7a; // kwarc 6.5MHz <br />cli();<br />EEPROM::Init();<br />OpLed::Init();<br />Servo32::Init();<br />UsartComm::Init(USART0::baud57600_6_5MHz);<br />TWI::Init();<br />sei();<br />while (true) {<br />    }<br />    return 0;<br />}<br />[/syntax]<br /><br />możecie rozgryzać a łatwo nie będzie <br /><img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 16 cze 2012, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janbernat]]></name></author>
<updated>2012-06-16T21:18:25+01:00</updated>
<published>2012-06-16T21:18:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8120#p8120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8120#p8120"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8120#p8120"><![CDATA[
No nie przyszło mi to do głowy.<br />Jakoś się zafiksowałem że wymagana rozdzielczość jest 16bit.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=171">janbernat</a> — 16 cze 2012, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-06-16T20:34:21+01:00</updated>
<published>2012-06-16T20:34:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8113#p8113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8113#p8113"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8113#p8113"><![CDATA[
ale przecież obsługę pilota można spokojnie przenieść do timera 8-bitowego i wtedy 16-bitowy będzie wolny <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> — 16 cze 2012, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janbernat]]></name></author>
<updated>2012-06-16T19:59:37+01:00</updated>
<published>2012-06-16T19:59:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8111#p8111</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8111#p8111"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8111#p8111"><![CDATA[
No to weź mój kod i sprawdź na większej ilości serw.<br />Wiem że działa bez pudła- ale...<br />Serwa mają dużą oporność wejściową i jakiekolwiek zakłócenia sprawiają że zaczynają drżeć.<br />Mimo że sygnał sterujący jest stabilny.<br />Trzeba jednak dać na linie sterujące jakiś opornik (1k) do masy i jakiś kondensator (100p-1n) też do masy.<br />A tanie serwa to już robią co chcą.<br />Wszystkie osiem serw podłaczyłem na płytce stykowej i początkowo muślałem że się załamię.<br />Serwa reagowały na sygnały z sąsiednich serw.<br />No ale się w końcu udało odkłócić i działało bez problemu.<br />W książce Mirka jest sterowanie pilotem- ale też wykorzystuje timer 16 bit.<br />Chyba Mirek powinien się przestawić na ARM- ten jeden timer 16bit w AVR to za mało.<br />Apetyt rośnie w miarę jedzenia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=171">janbernat</a> — 16 cze 2012, o 19:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-06-16T19:11:28+01:00</updated>
<published>2012-06-16T19:11:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8102#p8102</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8102#p8102"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8102#p8102"><![CDATA[
Janbernat, nie miałem nic złego na myśli, po prostu mam złe nawyki z elki, i elportalu, wiecznie ktoś czegoś chce by mu coś zrobić, zero własnej inwencji.<br />Sam ostatnio przebrnąłem przez sterowanie serwami <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Całe szczęście miałem tylko jedno, ale z moją wiedzą to i tak cud, że zadziałało.<p>Statystyki: Napisane przez Gość — 16 cze 2012, o 19:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-06-16T19:02:23+01:00</updated>
<published>2012-06-16T19:02:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8100#p8100</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8100#p8100"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8100#p8100"><![CDATA[
obiecuję że zamieszczę kod do hexapoda, ale musicie się w cierpliwość uzbroić bo mam sporo na głowie i wiele rzeczy robię na raz <br /><img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />twój kod jest całkiem całkiem muszę przyznać<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 16 cze 2012, o 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janbernat]]></name></author>
<updated>2012-06-16T18:48:18+01:00</updated>
<published>2012-06-16T18:48:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8098#p8098</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8098#p8098"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8098#p8098"><![CDATA[
No i na stare lata zostałem roszczeniowym pasożytem...   <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /> <br />Zamieszczam rozwiązanie dla ośmiu serw- to rozwiąże problem autora tematu.<br />Sterowanie z ośmiu potencjometrów podpiętych do ADC.<br />Można to przerobić na sterowanie z jakichś innych źródeł sygnałów.<br />Można to znaleźć na elce.<br />I parę innych moich gotowców też.<br />[syntax=c]<br />//Program do sterowania serwami<br />//Max 8 serw z 8 kanałów ADC<br />//Wszystko jest w pliku main- można to zrobić w serwa.c i serwa.h<br />//Nie jest to więc gotowiec- ale sprawdzony od 1-16MHz i od 1-8 serw.<br />//ATMega32<br /><br />#include &lt;avr\io.h&gt;<br />#include &lt;avr\interrupt.h&gt;<br /><br /><br />#define LICZBA_KANALOW 8 //maksymalnie-8<br />#if F_CPU&gt;2000000ul<br />#define PRESCALER 8<br />#else<br />#define PRESCALER 1<br />#endif<br /><br /><br /><br />#define OCR1A_VALUE ((2*F_CPU/PRESCALER/100)/LICZBA_KANALOW)// sygnał co 20ms<br />#define OCR1B_MIN (6*F_CPU/PRESCALER/10000) //Pozycja min serwa- tutaj 0.6ms- dopasować do serwa<br />#define OCR1B_ADC (18*F_CPU/PRESCALER/10000)//Pozycja max serwa- tutaj 1.8+0.6ms- dopasować do serwa <br />// Zwykle jest 1-2ms- no ale serwa są różne<br />volatile unsigned int kanal;<br /><br />static inline void init_ADC(void)<br />{<br />  ADMUX |= _BV(REFS0);<br /><br />  ADCSRA = _BV(ADEN);<br />#if F_CPU&gt;=8000000ul<br />ADCSRA|=_BV(ADPS0)|_BV(ADPS1)|_BV(ADPS2); <br />#endif<br />#if ((F_CPU&gt;=4000000ul)&amp;&amp;(F_CPU&lt;8000000ul))<br />ADCSRA|=_BV(ADPS0)|_BV(ADPS2);<br />#endif<br />#if ((F_CPU&gt;=2000000ul)&amp;&amp;(F_CPU&lt;4000000ul))<br />ADCSRA|=_BV(ADPS2);<br />#endif<br />#if ((F_CPU&gt;=1000000ul)&amp;&amp;(F_CPU&lt;2000000ul))<br />ADCSRA|= _BV(ADPS0)|_BV(ADPS1);<br />#endif<br />#if F_CPU&lt;1000000ul//poniżej 1MHz to już niedobrze działa<br />#error system timer is too slow<br />#endif<br /><br />  ADCSRA |= _BV(ADSC);<br />  while (!(ADCSRA &amp; _BV(ADIF)));<br />  ADCSRA |= _BV(ADIF);<br />}<br /> <br />static inline void init_Timer1(void)<br />{<br />  #if PRESCALER==1<br />  TCCR1B|=_BV(CS10)|_BV(WGM12);<br />#else<br />TCCR1B|=_BV(CS11)|_BV(WGM12);<br />#endif<br />  TIMSK|= _BV(OCIE1A)|_BV(OCIE1B);<br />OCR1A=OCR1A_VALUE;<br />  OCR1B=OCR1A_VALUE-5;<br /><br />  TIMSK|= _BV(OCIE1A)|_BV(OCIE1B);<br />}<br /> <br />static inline void init_Ports(void)<br />{<br />  PORTC=0;<br />DDRC=255;<br />}<br /><br />int main(void)<br />{<br />  init_Ports();<br />  init_ADC();<br />  init_Timer1();<br />  sei();<br /> <br />  while(1)<br />  {<br />    //a tu co chciał wstawić<br />}<br /> <br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />  PORTC=0;<br />  OCR1B = (OCR1A_VALUE - OCR1B_MIN) - OCR1B_ADC*ADCW/1024;<br />  kanal++;<br />  if(kanal&gt;=LICZBA_KANALOW) kanal=0;<br />  ADMUX = ((ADMUX&amp;0xF0)+ kanal);<br />}<br /> <br />ISR(TIMER1_COMPB_vect)<br />{<br />  static unsigned char port = 1;<br />  ADCSRA |= _BV(ADSC);<br />PORTC |= port;<br />  port &lt;&lt;= 1;<br />  if(kanal&gt;=LICZBA_KANALOW-1) port=1;<br />}<br />[/syntax]<br />Co nie zmienia mojej ciekawości jak to SunRiver rozwiązał dla 12 serw.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=171">janbernat</a> — 16 cze 2012, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kierlan]]></name></author>
<updated>2012-06-16T14:42:23+01:00</updated>
<published>2012-06-16T14:42:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8081#p8081</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8081#p8081"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8081#p8081"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />Gotowe rozwiązania masz na elce, tu gotowca nikt ci nie da <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Wysil trochę szare komórki.<br /></div><br /><br />Otóż to <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=84">kierlan</a> — 16 cze 2012, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-06-16T13:10:43+01:00</updated>
<published>2012-06-16T13:10:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8074#p8074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8074#p8074"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8074#p8074"><![CDATA[
Gotowe rozwiązania masz na elce, tu gotowca nikt ci nie da <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Wysil trochę szare komórki.<p>Statystyki: Napisane przez Gość — 16 cze 2012, o 13:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janbernat]]></name></author>
<updated>2012-06-16T12:26:36+01:00</updated>
<published>2012-06-16T12:26:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8073#p8073</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8073#p8073"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=8073#p8073"><![CDATA[
SunRiver- bardzo czekam na kod do sterowania 12serw.<br />Zrobiłem program do sterowania ośmiu na timerze 16bit.<br />Ale więcej niż osiem to się tam nie zmieści.<br />Zacząłem tworzyć na dwóch timerach dla większej ilości- ale ostatnio zmuszony byłem to odłożyć na potem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=171">janbernat</a> — 16 cze 2012, o 12:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elsat1]]></name></author>
<updated>2012-05-25T22:29:20+01:00</updated>
<published>2012-05-25T22:29:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7095#p7095</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7095#p7095"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7095#p7095"><![CDATA[
<div class="quotetitle">elsat1 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">kierlan napisał(a):</div><div class="quotecontent"><br />Albo nie umiesz czytać, albo nie myślisz lub  jedno i drugie. Istnieje jeszcze opcja, że czekasz znowu aż ktoś Ci poda na tacy gotowca.<br /></div></div><br /><br />Kto pyta nie błądzi.<br /><br /><br /><br /><span style="color: #FF0000"><strong>Właśnie za tego typu wypowiedzi dostałeś ostrzeżenie ....  (SunRiver)</strong></span>[/quote]<br /><br />Nie widzę w moich pytaniach na tym forum czegoś obraźliwego.... <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=151">elsat1</a> — 25 maja 2012, o 22:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-25T21:42:23+01:00</updated>
<published>2012-05-25T21:42:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7092#p7092</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7092#p7092"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7092#p7092"><![CDATA[
ejejej panowie spokojnie.<br /><br />Kol. ELSAT1 <br /><br />najpierw odpowiem na pytanie : <br /><br />1. Typowe serwo modelarskie ma kąt pracy 180 nie 120st  <br />2. Sterujesz tak samo jak nie przerobionym tyle tylko że serwo nie dotrze nigdy do końca w żadną stronę<br />    dlatego będzie mogło się obracać do okoła , i tu musisz tylko zadbać o to by ono wiedziało że  już ma stanąć <br /><br /><br />a druga sprawa w twoim poście.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 25 maja 2012, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kierlan]]></name></author>
<updated>2012-05-25T21:38:22+01:00</updated>
<published>2012-05-25T21:38:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7091#p7091</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7091#p7091"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7091#p7091"><![CDATA[
wiesz, ale tu już padła odpowiedź na to pytanie. Sam ją przytoczyłeś.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=84">kierlan</a> — 25 maja 2012, o 21:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elsat1]]></name></author>
<updated>2012-05-25T21:28:32+01:00</updated>
<published>2012-05-25T21:28:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7089#p7089</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7089#p7089"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7089#p7089"><![CDATA[
<div class="quotetitle">kierlan napisał(a):</div><div class="quotecontent"><br />Albo nie umiesz czytać, albo nie myślisz lub  jedno i drugie. Istnieje jeszcze opcja, że czekasz znowu aż ktoś Ci poda na tacy gotowca.<br /></div>[/quote]<br /><br />Kto pyta nie błądzi.<br /><br /><br /><br /><span style="color: #FF0000"><strong>Właśnie za tego typu wypowiedzi dostałeś ostrzeżenie ....  (SunRiver)</strong></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=151">elsat1</a> — 25 maja 2012, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kierlan]]></name></author>
<updated>2012-05-25T21:13:43+01:00</updated>
<published>2012-05-25T21:13:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7088#p7088</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7088#p7088"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7088#p7088"><![CDATA[
<div class="quotetitle">elsat1 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent">W przypadku przerabiania serwa na obrotowe 360st trzeba potencjometr skręcić w skrajne położenie lewe/prawe (niema znaczenia)<br />usunąć blokadę i klin obracający potencjometrem -- w ten sposób uzyskujemy silnik z przekładnią który możemy sterować <br />w obie strony L/P ale nie zatrzymuje się tylko kręci dookoła w żądanym impulsami kierunku.<br /></div><br />A jak to zrobić w typowych serwach modelarskich, gdzie jest kąt tylko 120' ?<br />Przydało by się pełne sterowanie kątem np. kamery o 360 '.<br />Pewnie potrzebna będzie przystawka do kanału x. Nie wiem czy to jest możliwe by zastosować taką przystawkę do standardowych nadajników.<br />Może masz pomysł ?</div><br /><br />Albo nie umiesz czytać, albo nie myślisz lub  jedno i drugie. Istnieje jeszcze opcja, że czekasz znowu aż ktoś Ci poda na tacy gotowca.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=84">kierlan</a> — 25 maja 2012, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elsat1]]></name></author>
<updated>2012-05-25T20:28:59+01:00</updated>
<published>2012-05-25T20:28:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7087#p7087</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7087#p7087"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7087#p7087"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />W przypadku przerabiania serwa na obrotowe 360st trzeba potencjometr skręcić w skrajne położenie lewe/prawe (niema znaczenia)<br />usunąć blokadę i klin obracający potencjometrem -- w ten sposób uzyskujemy silnik z przekładnią który możemy sterować <br />w obie strony L/P ale nie zatrzymuje się tylko kręci dookoła w żądanym impulsami kierunku.<br /></div><br />A jak to zrobić w typowych serwach modelarskich, gdzie jest kąt tylko 120' ?<br />Przydało by się pełne sterowanie kątem np. kamery o 360 '.<br />Pewnie potrzebna będzie przystawka do kanału x. Nie wiem czy to jest możliwe by zastosować taką przystawkę do standardowych nadajników.<br />Może masz pomysł ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=151">elsat1</a> — 25 maja 2012, o 20:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-25T20:05:45+01:00</updated>
<published>2012-05-25T20:05:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7082#p7082</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7082#p7082"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7082#p7082"><![CDATA[
hmmm ... to trochę dziwne jest poszukam na dysku gdzieś się chyba jeszcze wala , kiedyś robiłem hexapoda <br />sterowanie było na  12 serw zrobione --- po 2 na nogę zapodam i sprawdzisz <br />czy ci działają dobrze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 25 maja 2012, o 20:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ruben]]></name></author>
<updated>2012-05-25T16:06:32+01:00</updated>
<published>2012-05-25T16:06:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7053#p7053</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7053#p7053"/>
<title type="html"><![CDATA[Re: Pilny problem z wysterowaniem serwomechanizmów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1095&amp;p=7053#p7053"><![CDATA[
Serwa nie przerabiałem, niedawno je zakupiłem. Jednak sytuacja się powtarza na kilku różnych serwach.<br />Sprzętowo sterując za pomocą timera 16 bitowego, wszystko elegancko działa. <br />Dopiero jak próbuje programowo to mam problem. <br />Próbuje to zrobić z kolei programowo, ponieważ potrzebuje niezależnie sterować 3 serwami a sprzętowo udawało mi się jedynie dwoma. Jak próbowałem kolejne za pomocą timera 8 bitowego wysterować to nie działało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=77">ruben</a> — 25 maja 2012, o 16:06</p><hr />
]]></content>
</entry>
</feed>