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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-09-22T18:18:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=23344&amp;mode</id>
<entry>
<author><name><![CDATA[AKNETA]]></name></author>
<updated>2020-09-22T18:18:29+01:00</updated>
<published>2020-09-22T18:18:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229066#p229066</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229066#p229066"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229066#p229066"><![CDATA[
Tak ale to nie problem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> zwyczajnie kiedy poproszono o kod napisałem tak jak było bez kopiowania. Niestety nie usuwa to mojego błędu, wciąż nie działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17778">AKNETA</a> — 22 wrz 2020, o 18:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[43kuku]]></name></author>
<updated>2020-09-22T15:01:07+01:00</updated>
<published>2020-09-22T15:01:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229065#p229065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229065#p229065"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229065#p229065"><![CDATA[
Spójrz na linię 36 i 37 - zaraz na początku jest błąd<br />powinno być TCCR2A a jest TCCR1A<br />w 37<br />[syntax=c]//FOR TIMER1<br />        TCCR1A|=(1&lt;&lt;COM1A1)|(1&lt;&lt;COM1B1)|(1&lt;&lt;WGM11);        //NON Inverted PWM<br />        TCCR1B|=(1&lt;&lt;WGM13)|(1&lt;&lt;WGM12)|(1&lt;&lt;CS11)|(1&lt;&lt;CS10); //PRESCALER=64 MODE 14(FAST PWM)<br />        ICR1=4999;  //fPWM=50Hz<br />        TCCR2A|=(1&lt;&lt;COM2A1)|(1&lt;&lt;COM2B1)|(1&lt;&lt;WGM21);        //NON Inverted PWM<br />        TCCR2B|=(1&lt;&lt;WGM23)|(1&lt;&lt;WGM22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20); //PRESCALER=64 MODE 14(FAST PWM)<br />ICR2=4999;  //fPWM=50Hz[/syntax]<br /><br />pisane z głowy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> sprawdź w nocie<br /><br />Po prostu nie było inicjacji timera 2<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3190">43kuku</a> — 22 wrz 2020, o 15:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKNETA]]></name></author>
<updated>2020-09-21T11:37:00+01:00</updated>
<published>2020-09-21T11:37:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229054#p229054</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229054#p229054"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229054#p229054"><![CDATA[
[syntax=c]#define F_CPU 16000000UL               <br />#include &lt;avr/io.h&gt;            <br />#include &lt;stdio.h&gt;             <br />#include &lt;util/delay.h&gt;        <br /> <br />#define Button1 (1&lt;&lt;PC6)<br />#define Button1_Click !(PINC &amp; Button1)<br /> <br /> <br /> <br />void initiation()<br />{<br />        OCR1B=0;<br />        OCR1A=0;<br />        _delay_ms(20);<br />        PORTD |= (1&lt;&lt;PD4);<br />        PORTD |= (1&lt;&lt;PD5);<br />        _delay_ms(3000);<br />}<br /> <br />void calibration()<br />{<br />        OCR1A=500;<br />        OCR1B=500;<br />        _delay_ms(2000);<br />        OCR1A=0;<br />        OCR1B=0;<br />        _delay_ms(2000);<br />}<br />void main()<br />{<br />        //FOR TIMER1<br />        TCCR1A|=(1&lt;&lt;COM1A1)|(1&lt;&lt;COM1B1)|(1&lt;&lt;WGM11);        //NON Inverted PWM<br />        TCCR1B|=(1&lt;&lt;WGM13)|(1&lt;&lt;WGM12)|(1&lt;&lt;CS11)|(1&lt;&lt;CS10); //PRESCALER=64 MODE 14(FAST PWM)<br />        ICR1=4999;  //fPWM=50Hz<br />        TCCR1A|=(1&lt;&lt;COM2A1)|(1&lt;&lt;COM2B1)|(1&lt;&lt;WGM11);        //NON Inverted PWM<br />        TCCR1B|=(1&lt;&lt;WGM13)|(1&lt;&lt;WGM12)|(1&lt;&lt;CS11)|(1&lt;&lt;CS10); //PRESCALER=64 MODE 14(FAST PWM)<br />       <br />        DDRD|=(1&lt;&lt;PD4)|(1&lt;&lt;PD5);   //PWM Pins as Output<br />        DDRC &amp;= ~Button1;<br />        PORTC |= Button1;<br />        //calibration();<br />        initiation();<br />        while(1)<br />        {<br />               <br />               <br />               <br />                if(Button1_Click)<br />                {<br />                        _delay_ms(80);<br />                        if(Button1_Click)<br />                        {<br />                                for(uint16_t j=0;j&lt;450;j++)<br />                                {<br />                                        OCR1B=j;<br />                                        OCR1A=j;<br />                                        OCR2A=j;<br />                                        _delay_ms(15);<br />                                }<br />                                _delay_ms(200);<br />                                OCR1A=0;<br />                                OCR1B=0;<br />                                OCR2A=0;<br />                        }<br />                }<br />               <br />               <br />               <br />               <br />               <br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17778">AKNETA</a> — 21 wrz 2020, o 11:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[43kuku]]></name></author>
<updated>2020-09-20T22:33:49+01:00</updated>
<published>2020-09-20T22:33:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229053#p229053</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229053#p229053"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229053#p229053"><![CDATA[
Pokaż kod z timerem 2<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3190">43kuku</a> — 20 wrz 2020, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKNETA]]></name></author>
<updated>2020-09-20T20:34:25+01:00</updated>
<published>2020-09-20T20:34:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229051#p229051</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229051#p229051"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229051#p229051"><![CDATA[
Zgadza się, w bb jest bardzo ładnie opisany sposób generowania sygnału pwm jednakże nie jestem w stanie znaleźć w nim odpowiedzi na swoje pytanie. Może ujmę to inaczej. W swoim programie używam Timera1 ustawionego do sygnału 50hz w preskalerze 64 aby używać jego portów (PD4 i PD5 podpisanych pod 0CR1A i OCR1B) do kontrolowania sterowników silników BLDC; potrzebuje sterować czterema takimi silnikami do czego próbowałem użyć portów Timera2 (PD6 i PD7) przy tej samej konfiguracji co Timer1 jednakże z moją wiedzą nie jestem w stanie ich uruchomić. Szukając w internecie i w książkach pana Mirka nie znajduje odpowiedzi co skłania mnie do myśli że może to być problem sprzętowy. Używam Atmega 644PA.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17778">AKNETA</a> — 20 wrz 2020, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[43kuku]]></name></author>
<updated>2020-09-20T12:10:07+01:00</updated>
<published>2020-09-20T12:10:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229049#p229049</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229049#p229049"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229049#p229049"><![CDATA[
W Bluebooku był opisywany sposób generowania sygnału PWM dla 6 kanałów (choć może być ich jeszcze więcej) w sposób programowy.<br />Chodziło o wygenerowanie przerwania zmiana stanu pinu w sposób programowy po przekroczeniu określonej wartości licznika.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3190">43kuku</a> — 20 wrz 2020, o 12:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKNETA]]></name></author>
<updated>2020-09-20T10:20:55+01:00</updated>
<published>2020-09-20T10:20:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229048#p229048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229048#p229048"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229048#p229048"><![CDATA[
<div class="quotetitle">Draxter32 napisał(a):</div><div class="quotecontent"><br />Zapewne jesteś ograniczony sprzętowo z generowaniem sygnału PWM. Można podejść inaczej do tematu i manualnie określać czas trwania stanu wysokiego/niskiego. Innym rozwiązaniem jest wykorzystanie specjalnego sterownika np. PCA9685, który posiada kilkanaście kanałów PWM.<br /></div><br /><br />Nie da się wykorzystać w AVR dwóch timerów? Timer 1 i 2 mają własne wyprowadzenia portów jednakże ja nie jestem w stanie a raczej brakuje mi wiedzy jak w tym samym czasie wykorzystywać wszystkie 4<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17778">AKNETA</a> — 20 wrz 2020, o 10:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Draxter32]]></name></author>
<updated>2020-09-19T22:11:16+01:00</updated>
<published>2020-09-19T22:11:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229046#p229046</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229046#p229046"/>
<title type="html"><![CDATA[Re: Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229046#p229046"><![CDATA[
Zapewne jesteś ograniczony sprzętowo z generowaniem sygnału PWM. Można podejść inaczej do tematu i manualnie określać czas trwania stanu wysokiego/niskiego. Innym rozwiązaniem jest wykorzystanie specjalnego sterownika np. PCA9685, który posiada kilkanaście kanałów PWM.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8185">Draxter32</a> — 19 wrz 2020, o 22:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKNETA]]></name></author>
<updated>2020-09-19T21:35:23+01:00</updated>
<published>2020-09-19T21:35:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229044#p229044</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229044#p229044"/>
<title type="html"><![CDATA[Sterowanie wieloma serwami przy użyciu jednej atmegi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23344&amp;p=229044#p229044"><![CDATA[
Panowie, problem mam  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Chciałem sterować wieloma silnikami BLDC poprzez sterowniki prędkości (ESC; steruje się jak serwo) jednakże mam problem z sterowaniem więcej niż dwoma silnikami przez własne ograniczenia wiedzy. czy ktokolwiek mógłby mi podpowiedzieć bądź zaspokoić moją ciekawość gotowym już kodem sterującym wieloma silnikami/serwami?<br /><br />Poniżej dołączam jakiś kod który udało mi się napisać do dość prymitywnego sterowania dwoma silnikami dla testów<br /><br /><br />[syntax=c]#define F_CPU 16000000UL<br />#include &lt;avr/io.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define Button1 (1&lt;&lt;PC6)<br />#define Button1_Click !(PINC &amp; Button1)<br /><br /><br /><br />void initiation()<br />{<br />OCR1B=0;<br />OCR1A=0;<br />_delay_ms(20);<br />PORTD |= (1&lt;&lt;PD4);<br />PORTD |= (1&lt;&lt;PD5);<br />_delay_ms(3000);<br />}<br /><br />void calibration()<br />{<br />OCR1A=500;<br />OCR1B=500;<br />_delay_ms(2000);<br />OCR1A=0;<br />OCR1B=0;<br />_delay_ms(2000);<br />}<br />void main()<br />{<br />//FOR TIMER1<br />TCCR1A|=(1&lt;&lt;COM1A1)|(1&lt;&lt;COM1B1)|(1&lt;&lt;WGM11);        //NON Inverted PWM<br />TCCR1B|=(1&lt;&lt;WGM13)|(1&lt;&lt;WGM12)|(1&lt;&lt;CS11)|(1&lt;&lt;CS10); //PRESCALER=64 MODE 14(FAST PWM)<br />ICR1=4999;  //fPWM=50Hz<br /><br />DDRD|=(1&lt;&lt;PD4)|(1&lt;&lt;PD5);   //PWM Pins as Output<br />DDRC &amp;= ~Button1;<br />PORTC |= Button1;<br />//calibration();<br />initiation();<br />while(1)<br />{<br /><br /><br /><br />if(Button1_Click)<br />{<br />_delay_ms(80);<br />if(Button1_Click)<br />{<br />for(uint16_t j=0;j&lt;450;j++)<br />{<br />OCR1B=j;<br />OCR1A=j;<br />_delay_ms(15);<br />}<br />_delay_ms(200);<br />OCR1A=0;<br />OCR1B=0;<br />}<br />}<br /><br /><br /><br /><br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17778">AKNETA</a> — 19 wrz 2020, o 21:35</p><hr />
]]></content>
</entry>
</feed>