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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-28T15:57:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=9464&amp;mode</id>
<entry>
<author><name><![CDATA[Rygart_z_Tarrs]]></name></author>
<updated>2014-11-28T15:51:21+01:00</updated>
<published>2014-11-28T15:51:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106412#p106412</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106412#p106412"/>
<title type="html"><![CDATA[Re: Mikrokontroler nie działa po odłączeniu programatora od ]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106412#p106412"><![CDATA[
Działa! Dziękuję serdecznie! A tyle się nad tym głowiłem i nie pomyślałem żeby odłączyć gniazdo isp...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4224">Rygart_z_Tarrs</a> — 28 lis 2014, o 15:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-28T15:47:14+01:00</updated>
<published>2014-11-28T15:47:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106409#p106409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106409#p106409"/>
<title type="html"><![CDATA[Re: Mikrokontroler nie działa po odłączeniu programatora od]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106409#p106409"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Po wyjęciu programatora z gniazda usb w komputerze płytka-cały czas podłączona do baterii przestaje działać<br /></div><br />I bardzo dobrze tak ma być, wtedy procek jest cały czas w stanie RESET. Odłączaj nie kabel USB tylko kabel ISP od gniazda programowania - wtedy będzie śmigać<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">Rygart_z_Tarrs napisał(a):</div><div class="quotecontent"><br />Do modów: Kilkukrotna próba wgrania powyższych obrazków na serwer zakończyła się niepowodzeniem-obrazek jest praktycznie nieczytelny.<br /></div><br /><span style="color: #FF0000">Bo albo działasz na linuxie i masz źle zainstalowany FLASH albo działasz w windowsie i albo masz źle zainstalowany Flash albo użyj innej przeglądarki - nie ma że boli - to ZAWSZE działa</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 lis 2014, o 15:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rygart_z_Tarrs]]></name></author>
<updated>2014-11-28T15:57:17+01:00</updated>
<published>2014-11-28T15:44:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106408#p106408</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106408#p106408"/>
<title type="html"><![CDATA[Mikrokontroler nie działa po odłączeniu programatora od usb]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9464&amp;p=106408#p106408"><![CDATA[
Witam, wracam do was z moim dalej nie dokończonym projektem...<br /><br />Po wyjęciu programatora z gniazda usb w komputerze płytka-cały czas podłączona do baterii przestaje działać(Sprawdziłem multimetrem wszystkie sygnały i nie zaobserwowałem żadnych anomalii... <br /><br /><br /><br />Link do poprzedniego tematu:<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic8695.html" >topic8695.html</a><!-- l --><br />Schemat:<br /><img src="http://forum.atnel.pl/_obrazki/o/4224/ccf4081b5563520b09ac6cb8c378c9e7.png" alt="Obrazek" /><br /><br />Projekt w eaglu: (Dodałem do niego więcej kondensatorów niż jest na schemacie)<br /><img src="http://forum.atnel.pl/_obrazki/o/4224/68c9b953ea336916fe1b99054a3571df.png" alt="Obrazek" /><br /><span style="color: #FF0000">[ obrazki na forum wgrywamy TAK: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic44.html" >topic44.html</a><!-- l --> - i nie ma innej drogi - mirekk36 ]</span><br /><br />Kod PWM:[syntax=c]/*<br /> * Data utworzenia: 14-10-2014<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;// 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=20; 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=20; i&lt;255; i++)<br />{<br />if(KEY2) // zmiana pwm tylko w trakcie trzymania KEY2<br />{<br />pwm1=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 /><br /><br />                    if(i&lt;255)<br />                    {<br />                    for(i=20; i&lt;255; i++)<br />                    {<br />                    if(KEY3) // zmiana pwm tylko w trakcie trzymania KEY1<br />                    {<br />                    pwm3=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 = 4;<br /><br /><br />                               if(i&lt;255)<br />                               {<br />                               for(i=20; i&lt;255; i++)<br />                               {<br />                               if(KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                               {<br />                               pwm4=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 = 5;<br /><br /><br /><br />                                         if(i&lt;255)<br />                                         {<br />                                         for(i=145; i&lt;255; i++)                                         {<br />                                         if(KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                         {<br />                                         pwm1=i;<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 = 6;<br /><br />                                       if(i&lt;255)<br />                                          {<br />                                            for(i=145; i&lt;255; i++)<br />                                            {<br />                                            if(KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                                   {<br />                                                   pwm1=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 = 7;<br /><br /><br /><br />                                                    if(i&lt;255)<br />                                                    {<br />                                                    for(i=10; i&lt;255; i++)<br />                                                    {<br />                                                    if(KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                                    {<br />                                                    pwm2=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 = 8;<br /><br /><br /><br />                                                               if(i&lt;255)<br />                                                               {<br />                                                               for(i=10; i&lt;255; i++)<br />                                                               {<br />                                                               if(KEY4) // zmiana pwm tylko w trakcie trzymania KEY1<br />                                                               {<br />                                                               pwm2=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; }<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF; }}<br /><br /><br />if(tryb == 2) {if ((cnt&lt;=pwm1)) { A_IN1_OFF; A_IN2_ON;B_IN1_ON; B_IN2_OFF; }<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;B_IN1_ON; B_IN2_OFF; }<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF; }}<br /><br /><br />if(tryb == 4) {if ((cnt&lt;=pwm4)) { A_IN1_OFF; A_IN2_ON;B_IN1_OFF; B_IN2_ON; }<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF; }}<br /><br /><br />if(tryb == 5) {if ((cnt&lt;=pwm1)) { A_IN1_ON; A_IN2_OFF;}<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF;}}<br /><br /><br />if(tryb == 6)  {if ((cnt&lt;=pwm1)) { B_IN1_OFF; B_IN2_ON;}<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF;}}<br /><br />if(tryb == 7) {if ((cnt&lt;=pwm2)) {  A_IN1_OFF; A_IN2_ON; }<br />else { A_IN1_OFF; A_IN2_OFF; B_IN1_OFF; B_IN2_OFF;}}<br /><br /><br />if(tryb == 8) {if ((cnt&lt;=pwm2)) {  B_IN1_ON; B_IN2_OFF; }<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 />[syntax=c]/*<br /> * hardware.h<br /> *<br /> *  Created on: 2014-10-15<br /> *       Autor: M.Bajgrowicz<br /> */<br /><br />#ifndef hardware_H_<br />#define hardware_H_<br /><br />// ********************************************************************************************<br />// ********* makrodefinicje dla preprocesora dotyczące lokalizacji LED i przycisków ***********<br />// ********************************************************************************************<br /><br />//zmienne adresowe dla LED (wszystkie LED na jednym porcie)<br />//silnik M1 znjaduje się po lewej stronie pojazdu<br />//silnik M2 znajduje się po prawej stronie pojazdu<br />#define A_IN1 (1&lt;&lt;PC3)// ( silnik M1 )<br />#define A_IN2 (1&lt;&lt;PC1)// ( silnik M1 )<br />#define B_IN1 (1&lt;&lt;PC2)// ( silnik M2 )<br />#define B_IN2(1&lt;&lt;PC0)// ( silnik M2 )<br />#define D5_PIN (1&lt;&lt;PC4)// dioda D5<br />#define D6_PIN (1&lt;&lt;PC5)// dioda D6<br />#define D7_PIN (1&lt;&lt;PC6)// dioda D7<br />#define D8_PIN (1&lt;&lt;PC7)// dioda D8<br />#define OUT_PORTPORTC// definicja portu wyjsciowego, do zapisu<br />#define OUT_PINPINC// definicja portu wyjściowego, do odczytu<br />#define OUT_DIRDDRC// definicja portu wyjściowego, kierunek WY<br /><br />//zmienne adresowe dla przycisków (wszystkie KEY na jednym porcie)<br />#define W1_PIN (1&lt;&lt;PD0)// S1<br />#define W2_PIN (1&lt;&lt;PD1)// S5<br />#define W3_PIN (1&lt;&lt;PD2)// S9<br />#define W4_PIN (1&lt;&lt;PD3)// S13<br />#define KEY_PORTPORTD// definicja portu przycisków, do zapisu<br />#define KEY_PINPIND// definicja portu przycisków, do odczytu<br />#define KEY_DIRDDRD// deginicja portu przycisków - kierunek WE/WY<br /><br />//stany pracy sygnałów sterownika H<br />#define A_IN1_ON OUT_PORT |=  A_IN1// WY uruchamiane stanem Vcc (logiczne 1)<br />#define A_IN2_ON OUT_PORT |=  A_IN2<br />#define B_IN1_ON OUT_PORT |=  B_IN1<br />#define B_IN2_ON OUT_PORT |=  B_IN2<br />#define A_IN1_OFF OUT_PORT &amp;= ~A_IN1// WY wyłączane stanem GND (logiczne 0)<br />#define A_IN2_OFF OUT_PORT &amp;= ~A_IN2<br />#define B_IN1_OFF OUT_PORT &amp;= ~B_IN1<br />#define B_IN2_OFF OUT_PORT &amp;= ~B_IN2<br />#define A_IN1_TOGOUT_PORT ^=  A_IN1// makrodefinicja – zmiana stanu na przeciwny<br />#define A_IN2_TOGOUT_PORT ^=  A_IN2<br />#define B_IN1_TOGOUT_PORT ^=  B_IN1<br />#define B_IN2_TOG OUT_PORT ^=  B_IN2<br /><br />//stany pracy diód i przycsków<br />#define D5_ON OUT_PORT |=  D5_PIN<br />#define D6_ON OUT_PORT |=  D6_PIN<br />#define D7_ON OUT_PORT |=  D7_PIN<br />#define D8_ON OUT_PORT |=  D8_PIN<br />#define D5_OFF OUT_PORT &amp;= ~D5_PIN<br />#define D6_OFF OUT_PORT &amp;= ~D6_PIN<br />#define D7_OFF OUT_PORT &amp;= ~D7_PIN<br />#define D8_OFF OUT_PORT &amp;= ~D8_PIN<br />#define D5_TOG OUT_PORT ^=  D5_PIN<br />#define D6_TOG OUT_PORT ^=  D6_PIN<br />#define D7_TOG OUT_PORT ^=  D7_PIN<br />#define D8_TOG OUT_PORT ^=  D8_PIN<br /><br />#define KEY1!(KEY_PIN &amp; W1_PIN)// makrodefinicja - sprawdzanie stanu przycisku ???<br />#define KEY2!(KEY_PIN &amp; W2_PIN)// lepiej używać funkcji klawisz()<br />#define KEY3!(KEY_PIN &amp; W3_PIN)<br />#define KEY4!(KEY_PIN &amp; W4_PIN)<br /><br /><br />#endif /* HARDWARE_H_ */[/syntax]<br /><br /><br /><br />Edit:<br /><br />Poprawione<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4224">Rygart_z_Tarrs</a> — 28 lis 2014, o 15:44</p><hr />
]]></content>
</entry>
</feed>