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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-02T22:20:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=11255&amp;mode</id>
<entry>
<author><name><![CDATA[Rygart_z_Tarrs]]></name></author>
<updated>2015-04-02T22:20:06+01:00</updated>
<published>2015-04-02T22:20:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125452#p125452</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125452#p125452"/>
<title type="html"><![CDATA[Re: PWM i zwieszanie się procesora]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125452#p125452"><![CDATA[
Gdy używałem programu:[syntax=c]/*<br />     * main.c<br />     * Created on: 2014-06-13<br />     * Autor: M.Bajgrowicz<br />     * ------------<br />     * | |          | |<br />     * | |          | |<br />     * | |          | |<br />     * | M1   M2 |<br />     * | |          | |<br />     * ------------<br />     *<br />     */<br /><br />    #include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &quot;hardware.h&quot;                           // plik nagłówkowy z ustawieniami PCB<br /><br /><br />     int main(void)<br />     {<br /><br />            LED_DIR |= 0xFF;                                                                                // kierunek portu z diodami - WYjściowy<br />            KEY_DIR &amp;= ~(W1_PIN | W2_PIN | W3_PIN | W4_PIN);                // kierunek pinów przycisków - WEjściowy<br />            KEY_PORT |= W1_PIN | W2_PIN | W3_PIN | W4_PIN;                  // podciagniecie pinów rezystorem do +Vcc<br />            _delay_ms(20);                                                                                  // czas potrzebny na podciągnięcie pinów do +Vcc<br /><br /><br /><br />            while(1)<br />            {<br /><br />                    if ( !KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp; !KEY4 )  // Brak czynności<br />                    {<br />                        LED_PORT = 0x00;<br />                    }<br /><br /><br />                    else if (  KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp; !KEY4 )         // Do Przodu (M1 i M2 obr Prawe)<br />                             { D1_ON; D4_ON;}<br />                                //else { D1_OFF; D4_OFF;}<br /><br /><br />                    else if ( !KEY1 &amp;&amp;  KEY2 &amp;&amp; !KEY3 &amp;&amp; !KEY4 )         // Do Tyłu (M1 i M2 obr Lewe)<br />                             { D2_ON; D3_ON; }<br />                                //else { D2_OFF; D3_OFF; }<br /><br /><br />                    else if ( !KEY1 &amp;&amp; !KEY2 &amp;&amp;  KEY3 &amp;&amp; !KEY4 )         // W Prawo (M1 obr prawe, M2 obr lewe)<br />                             { D3_ON; D4_ON; }<br />                                //else { D3_OFF; D4_OFF; }<br /><br /><br />                    else if ( !KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp;  KEY4 )         // W Lewo (M1 obr lewe, M2 obr Prawe)<br />                             { D1_ON; D2_ON;}<br />                                //else { D1_OFF; D2_OFF; }<br /><br /><br />                    else if (  KEY1 &amp;&amp; !KEY2 &amp;&amp;  KEY3 &amp;&amp; !KEY4 )         // Do przodu i w prawo (M1 obr Prawe)<br />                             { D4_ON; }<br />                                //else { D4_OFF; }<br /><br /><br />                    else if (  KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp;  KEY4 )         // Do przodu i w lewo (M2 obr Prawe)<br />                             { D1_ON; }<br />                                //else { D1_OFF; }<br /><br /><br />                    else if ( !KEY1 &amp;&amp;  KEY2 &amp;&amp;  KEY3 &amp;&amp; !KEY4 )         // Do tyłu i w prawo (M1 obr Lewe)<br />                             { D3_ON; }<br />                                //else { D3_OFF; }<br /><br /><br />                    else if ( !KEY1 &amp;&amp;  KEY2 &amp;&amp; !KEY3 &amp;&amp;  KEY4 )         // Do tyłu i w lewo (M2 obr Lewe)<br />                             { D2_ON; }<br />                                //else { D2_OFF; }<br /><br /><br /><br /><br />            }       //koniec pętli while(1)<br />     }              //koniec programu[/syntax] To nie występowało &quot;blokowanie się&quot; procesora a jedynie działo się coś w rodzaju bardzo częstej utraty sygnału-tj po kilku sekundach jakby gubił sygnał i trzeba było ponawiać komendę..<br /><br />Myślałem nad czymś w rodzaju watchdoga ale nie wiem jak to zrealizować<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4224">Rygart_z_Tarrs</a> — 2 kwi 2015, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ds3]]></name></author>
<updated>2015-04-02T19:39:51+01:00</updated>
<published>2015-04-02T19:39:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125434#p125434</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125434#p125434"/>
<title type="html"><![CDATA[Re: PWM i zwieszanie się procesora]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125434#p125434"><![CDATA[
<div class="quotetitle">WoodPaker napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Ds3 napisał(a):</div><div class="quotecontent">Albo ja dzisiaj dziwnie widzę, albo ten schemat nie jest pełny, albo jest coś z nim nie tak.!<br /></div><br /><br />Dziwnie widzisz bo nie ma przecież żadnego schematu.</div><br /><br />To bardzo ciekawe... Widziałem go od samego początku. Niemniej chodziło mi o płytkę PCB <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />A jeśli napiszesz prosty program - samo PWM to też po jakimś czasie zawiesza się mikrokontroler? <br /><br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1783">Ds3</a> — 2 kwi 2015, o 19:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rygart_z_Tarrs]]></name></author>
<updated>2015-04-02T17:47:23+01:00</updated>
<published>2015-04-02T17:47:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125418#p125418</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125418#p125418"/>
<title type="html"><![CDATA[Re: PWM i zwieszanie się procesora]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125418#p125418"><![CDATA[
Tam jest kabelek;] Silniki raczej nie generują aż takich zakłóceń(jak już to biją po przetwornicy)-a na 100% nie maja wpływu na sygnały wejściowe;]<br /><br />PS linki naprawione<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4224">Rygart_z_Tarrs</a> — 2 kwi 2015, o 17:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2015-04-02T16:29:37+01:00</updated>
<published>2015-04-02T16:29:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125414#p125414</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125414#p125414"/>
<title type="html"><![CDATA[Re: PWM i zwieszanie się procesora]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125414#p125414"><![CDATA[
<div class="quotetitle">Ds3 napisał(a):</div><div class="quotecontent"><br />Albo ja dzisiaj dziwnie widzę, albo ten schemat nie jest pełny, albo jest coś z nim nie tak.!<br /></div><br /><br />Dziwnie widzisz bo nie ma przecież żadnego schematu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 2 kwi 2015, o 16:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ds3]]></name></author>
<updated>2015-04-02T15:53:18+01:00</updated>
<published>2015-04-02T15:53:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125408#p125408</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125408#p125408"/>
<title type="html"><![CDATA[Re: PWM i zwieszanie się procesora]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125408#p125408"><![CDATA[
Albo ja dzisiaj dziwnie widzę, albo ten schemat nie jest pełny, albo jest coś z nim nie tak.<br />Gdzie na płytce jest podłączony pin reset do VCC przez rezystor? <br />Część kondensatorów wisi w powietrzu, a część jest zwarta ścieżką. <br />Gdzie jest podłączona połowa masy mikrokontrolera - nóżka 8?<br /><br />Dobrze byłoby dodać kondensator 10uF przy mikrokontrolerze. <br /><br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1783">Ds3</a> — 2 kwi 2015, o 15:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[0livaw]]></name></author>
<updated>2015-04-02T12:49:15+01:00</updated>
<published>2015-04-02T12:49:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125376#p125376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125376#p125376"/>
<title type="html"><![CDATA[Re: PWM i zwieszanie się procesora]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125376#p125376"><![CDATA[
Może zawiesza się od zakłóceń generowanych przez silniki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1304">0livaw</a> — 2 kwi 2015, o 12:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rygart_z_Tarrs]]></name></author>
<updated>2015-04-02T17:56:49+01:00</updated>
<published>2015-04-02T12:09:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125366#p125366</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125366#p125366"/>
<title type="html"><![CDATA[PWM i zwieszanie się procesora]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11255&amp;p=125366#p125366"><![CDATA[
Witam, napisałem prosty program PWM dla pojazdu gąsienicowego (Napędzany 2 silnikami dc 3V)<br />Schemat:<a href="http://forum.atnel.pl/_obrazki/o/4224/3e3ac189a8417b7b33c16e7332d2a671.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4224/3e3ac189a8417b7b33c16e7332d2a671.png" alt="Obrazek" /></a><br />Schemat PCB:<a href="http://forum.atnel.pl/_obrazki/o/4224/410824c135a6bc54c8fd3050e13422f9.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4224/410824c135a6bc54c8fd3050e13422f9.png" alt="Obrazek" /></a><br />(Doszło kilka dodatkowych kondensatorów-ale to nie ma wpływu na program) Sterowanie robotem zostało zrealizowane za pomocą &quot;modułu radiowego&quot; ze zdalnie sterowanego autka(kable które bezpośrednio zasilały silniki teraz służą do podawania sygnałów binarnych-Za pomocą tranzystorów NPN zwierają piny procesora do masy<br />A teraz najważniejsze(program):<br /><br />[syntax=c]/*<br /> * Data utworzenia: 14-3-2015<br /> * Author: M.Bajgrowicz<br /> *<br /> *  ------------<br /> * | |          | |<br /> * | |          | |<br /> * | |          | |<br /> * | M1        M2 |<br /> * | |          | |<br /> *  ------------<br /> *<br /> *<br /> *DRV8833 - dwukanałowy sterownik silników DC, prąd na kanał 1,2 A (chwilowy do 2 A), zasilanie od 2,7 do 10,8 V.<br /> *<br /> *<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 &quot;hardware.h&quot;<br /><br />volatile uint8_t pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, pwm8, pwm9, pwm10;  // programowy OCR, określa współczynnik wypełnienia PWM<br />volatile uint8_t tryb=0;// 8 - bitowa zmienna trybów jazdy (256 trybów)<br />uint8_t i;// licznik zmiany współczynnika wypełnienia kanałów PWM<br /><br />int main(void)<br />{<br /><br />//***** PROGRAMOWY PWM - 4 KANAŁOWY, Generator zewnętrzny 16MHz, uP = ATmega8 *******<br /><br />        OUT_DIR  |=  ( (1&lt;&lt;A_IN1)|(1&lt;&lt;A_IN2)|(1&lt;&lt;B_IN1)|(1&lt;&lt;B_IN2) );// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />        OUT_PORT &amp;= ~( (1&lt;&lt;A_IN1)|(1&lt;&lt;A_IN2)|(1&lt;&lt;B_IN1)|(1&lt;&lt;B_IN2) );   // ustawienie stanu niskiego na wyjściach pwm (wybieg silników)<br /><br />        KEY_DIR  &amp;= ~( W1_PIN | W2_PIN | W3_PIN | W4_PIN );// kierunek pinów przycisków - WEjściowy<br />        KEY_PORT |=  ( W1_PIN | W2_PIN | W3_PIN | W4_PIN ); // podciagniecie pinów rezystorem do +Vcc<br />        _delay_ms(20);<br /><br />        // zegar dla sygnału PWM z 8-bitowego TIMER2 w trybie CTC<br />        TCCR2 |= (1&lt;&lt;WGM21);   // tryb CTC timera 2<br />        TCCR2 |= (1&lt;&lt;CS21);   // 16MHz / preskaler(8) = 2MHz<br />        OCR2 = 100;   // zliczamy od 0 do 100, f = 2MHz/100 = 20kHz, przerwanie co 50us (T=1/f)<br />        TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie typu CompareMatch od timera 2<br /><br />        sei();                          // odblokowanie globalne przerwań<br /><br /><br /><br /><br /><br />        while(1)<br />        {<br /><br /><br />/***************************************************************************************************/<br />//                      TRYB 0: HAMOWANIE<br />/***************************************************************************************************/<br /><br />        if ( !KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp; !KEY4 )<br />        {<br />        tryb = 0;<br />        i=0;// resetuje podtrzymanie PWM max<br /><br />        // Sposób zatrzymywania silników A i B:<br />        A_IN1_OFF; A_IN2_OFF;// wybieg silnika M1, A_IN1 = 0, A_IN2 = 0<br />        B_IN1_OFF; B_IN2_OFF;// wybieg silnika M2, B_IN1 = 0, B_IN2 = 0<br /><br />        //A_IN1_ON; A_IN2_ON;// hamowanie silnika M1, A_IN1 = 1, A_IN2 = 1<br />        //B_IN1_ON; B_IN2_ON;// hamowanie silnika M2, B_IN1 = 1, B_IN2 = 1<br /><br />         //_delay_ms(30);<br />            }<br /><br /><br /><br />/***************************************************************************************************/<br />//                      TRYB 1: DO PRZODU (KEY1)<br />/***************************************************************************************************/<br /><br />        if ( KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp; !KEY4 )<br />        {<br />        tryb = 1;<br /><br /><br />        if(i&lt;255)<br />        {<br />        for(i=254; i&lt;255; i++)<br />        {<br />        if(KEY1) // zmiana pwm tylko w trakcie trzymania KEY1<br />        {<br />        pwm1=i;<br />        //_delay_ms(10);<br />        }<br /><br />        }<br />        }<br />        }<br /><br /><br /><br />/***************************************************************************************************/<br />//                      TRYB 2: DO TYŁU (KEY2)<br />/***************************************************************************************************/<br /><br />            if ( !KEY1 &amp;&amp;  KEY2 &amp;&amp; !KEY3 &amp;&amp; !KEY4 )<br />           {<br />            tryb = 2;<br /><br /><br />            if(i&lt;255)<br />{<br />for(i=254; i&lt;255; i++)<br />{<br />if(KEY2) // zmiana pwm tylko w trakcie trzymania KEY2<br />{<br />pwm2=i;<br />//_delay_ms(10);<br />}<br /><br />}<br />}<br /><br /><br /><br />           }<br /><br /><br /><br />/***************************************************************************************************/<br />//                      TRYB 3: OBRÓT W PRAWO (KEY3)<br />/***************************************************************************************************/<br />            if ( !KEY1 &amp;&amp; !KEY2 &amp;&amp; KEY3 &amp;&amp; !KEY4 )<br />                    {<br />                    tryb = 3;<br />                    tryb = 4;<br /><br />                    if(i&lt;255)<br />                    {<br />                    for(i=254; i&lt;255; i++)<br />                    {<br />                    if(KEY3) // zmiana pwm tylko w trakcie trzymania KEY1<br />                    {<br />                    pwm3=i;<br />                    pwm4=i;<br />                    //_delay_ms(10);<br />                    }<br /><br />                    }<br />                    }<br />                    }<br /><br />/***************************************************************************************************/<br />//                      TRYB 4: OBRÓT W LEWO (KEY4)<br />/***************************************************************************************************/<br />            if ( !KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp; KEY4 )<br />                             {<br />                              // tryb = 5;<br />                               tryb = 6;<br /><br />                               if(i&lt;255)<br />                               {<br />                               for(i=254; i&lt;255; i++)<br />                               {<br />                               if(KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                               {<br />                               //pwm5=i;<br />                               pwm6=i;<br />                               //_delay_ms(10);<br />                               }<br /><br />                               }<br />                               }<br />                             }<br /><br /><br />/***************************************************************************************************/<br />//                      TRYB 5: DO PRZODU I OBRÓT W PRAWO (KEY1 i KEY3)<br />/***************************************************************************************************/<br />            if ( KEY1 &amp;&amp; !KEY2 &amp;&amp; KEY3 &amp;&amp; !KEY4 )<br />                                       {<br />                                         tryb = 7;<br /><br /><br /><br />                                         if(i&lt;255)<br />                                         {<br />                                         for(i=254; i&lt;255; i++)                                         {<br />                                         if(KEY1 &amp;&amp; KEY3) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                         {<br />                                         pwm7=i;<br /><br />                                         //_delay_ms(10);<br />                                         }<br /><br />                                         }<br />                                         }<br />                                       }<br /><br />/***************************************************************************************************/<br />//                      TRYB 6: DO PRZODU I OBRÓT W LEWO (KEY1 i KEY4)<br />/***************************************************************************************************/<br />            if ( KEY1 &amp;&amp; !KEY2 &amp;&amp; !KEY3 &amp;&amp; KEY4 )<br />                                   {<br />                                        tryb = 8;<br /><br />                                       if(i&lt;255)<br />                                          {<br />                                            for(i=254; i&lt;255; i++)<br />                                            {<br />                                            if(KEY1 &amp;&amp; KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                                   {<br />                                            pwm8=i;<br />                                                 //  _delay_ms(10);<br />                                                   }<br /><br />                                             }<br />                                          }<br />                                     }<br /><br />/***************************************************************************************************/<br />//                      TRYB 7: DO TYŁU I OBRÓT W PRAWO (KEY2 i KEY3)<br />/***************************************************************************************************/<br />            if ( !KEY1 &amp;&amp; KEY2 &amp;&amp; KEY3 &amp;&amp; !KEY4 )<br />                                                  {<br />                                                    tryb = 9;<br /><br /><br /><br />                                                    if(i&lt;255)<br />                                                    {<br />                                                    for(i=200; i&lt;255; i++)<br />                                                    {<br />                                                    if(KEY2 &amp;&amp; KEY3) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                                    {<br />                                                    pwm9=i;<br />                                                    //_delay_ms(10);<br />                                                    }<br /><br />                                                    }<br />                                                    }<br />                                                  }<br /><br />/***************************************************************************************************/<br />//                      TRYB 8: DO TYŁU I OBRÓT W LEWO (KEY2 i KEY4)<br />/***************************************************************************************************/<br /><br />            if ( !KEY1 &amp;&amp; KEY2 &amp;&amp; !KEY3 &amp;&amp; KEY4 )<br />                                         {<br />                                            tryb = 10;<br />                                            if(i&lt;255)<br />                                                {<br />                                                       for(i=200; i&lt;255; i++)<br />                                               {<br />                                             if(KEY2 &amp;&amp; KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                                               {<br />                                                               pwm10=i;<br />                                                              // _delay_ms(10);<br />                                                               }<br /><br />                                               }<br />                                                 }<br />                                       }<br /><br /><br /><br /><br />        }//while<br />}//main<br /><br /><br /><br /><br />// ciało procedury obsługi przerwania Compare Match Timera2<br /><br />ISR( TIMER2_COMP_vect )<br />        {<br />static uint8_t cnt; // definicja licznika PWM<br /><br />if(tryb == 1) {if ((cnt&lt;=pwm1)) { A_IN1_ON; A_IN2_OFF;B_IN1_OFF; B_IN2_ON; } //m1 i m2 przód<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF; }}<br /><br /><br />if(tryb == 2) {if ((cnt&lt;=pwm2)) { A_IN1_OFF; A_IN2_ON;B_IN1_ON; B_IN2_OFF; } // m1 i m2 tył<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF; }}<br /><br /><br />if(tryb == 3) {if ((cnt&lt;=pwm3)) { A_IN1_ON; A_IN2_OFF;} //m1 przód<br />else { A_IN1_OFF; A_IN2_OFF;  }}<br />if(tryb == 4) {if ((cnt&lt;=pwm3)) {B_IN1_ON; B_IN2_OFF; } // m2 tył<br />else {  B_IN1_OFF; B_IN2_OFF; }}<br /><br /><br />if(tryb == 5) {if ((cnt&lt;=pwm4)) { A_IN1_OFF; A_IN2_ON; } //m1 tył,<br />else { A_IN1_OFF; A_IN2_OFF; }}<br />    if(tryb == 6) {if ((cnt&lt;=pwm4)) { B_IN1_OFF; B_IN2_ON; }<br />else { B_IN1_OFF; B_IN2_OFF; }    } // m2 przód<br /><br />if(tryb == 7) {if ((cnt&lt;=pwm1)) { A_IN1_ON; A_IN2_OFF; }   //m1 przód<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF;}}<br /><br /><br />if(tryb == 8)  {if ((cnt&lt;=pwm1)) { B_IN1_OFF; B_IN2_ON;} //m2 przód<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF;}}<br /><br /><br />if(tryb == 9) {if ((cnt&lt;=pwm2)) {  A_IN1_OFF; A_IN2_ON; }  //m1 tył<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF;}}<br /><br /><br />if(tryb == 10) {if ((cnt&lt;=pwm2)) {  B_IN1_ON; B_IN2_OFF; }  //m2 tył<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF;}}<br /><br />cnt++;        // zwiększanie licznika ilości przerwań<br /><br />// Przerwanie występuje co T(int) = 50us (ustawienie timera 2 w trybie CTC), czyli f(int) = 20kHz<br />// Przerwanie zliczane jest 256 razy dzięki zwiększaniu zmiennej cnt (tzw. PWM 8-bitowy)<br />// Okres sygnału PWM wynosi więc: T(pwm) = 256 * T(int) = 256 * 50us = 12,8ms<br />// Stąd f(pwm) = 78,125Hz<br /><br /><br />        }[/syntax]<br /><br />Opis Problemu: Po kilku sekundach otrzymywania tego samego sygnału wejściowego procesor zwiesza się-na dwa sposoby(albo wystawia inną kombinację wyjść albo po prostu przestaje działać) Występuje też &quot;zapamiętywanie&quot; ostatniego polecenia i gdy po kilku sekundach skrętu w prawo zmieniam sygnał na Lewo to czołg uparcie kręci w prawo.<br /><br />W każdym z tych stanów sygnały wejściowe są ignorowane-dopiero odłączenie zasilania przywraca procek do normalnego działania<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4224">Rygart_z_Tarrs</a> — 2 kwi 2015, o 12:09</p><hr />
]]></content>
</entry>
</feed>