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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2022-04-10T13:55:18+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=24198&amp;mode</id>
<entry>
<author><name><![CDATA[anw]]></name></author>
<updated>2022-04-10T13:55:18+01:00</updated>
<published>2022-04-10T13:55:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235335#p235335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235335#p235335"/>
<title type="html"><![CDATA[Re: SERVO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235335#p235335"><![CDATA[
Mam problem serwem. Posiadam serwa zykłe chińskie oraz od firmy Faller (modelarskie). Podpinając wszystkie serwa chińskie do pinów PB1/PB2 i PB3 wszystkie działają poprawnie. Gdy podpinam serwa modelarskie Faller, serwo na pinie PB3 buczy, ale działa. Nie jest to ina serwa, ponieważ jak zamieniam z pozostałymi firmy Faller to zawsze buczy to na pinie PB3.<br />Co może być przyczyną?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17774">anw</a> — 10 kwi 2022, o 13:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario2015]]></name></author>
<updated>2022-04-04T15:11:05+01:00</updated>
<published>2022-04-04T15:11:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235312#p235312</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235312#p235312"/>
<title type="html"><![CDATA[Re: SERVO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235312#p235312"><![CDATA[
Przed wyjściem z każdej pętli while musisz zresetować zmienną pressed, najlepiej jeszcze przed instrukcją<br />   _delay_ms(50);.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8867">mario2015</a> — 4 kwi 2022, o 15:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anw]]></name></author>
<updated>2022-04-04T14:52:54+01:00</updated>
<published>2022-04-04T14:52:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235311#p235311</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235311#p235311"/>
<title type="html"><![CDATA[SERVO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24198&amp;p=235311#p235311"><![CDATA[
Witajcie,<br /><br />mam mały problem z programem. Ma on sterować docelowo 3 serwami. Po naciśnięciu przycisku, serwo powinno ustawić się w POZYCJI 1 i po ponownym naciśnięciu tego samego przycisku w POZYCJI 2. Dla każdego serwa jest jeden przycisk. Problem polega na tym, że po naciśnięciu przycisku program w koło wykonuje pętle dla obu stanów. Serwo przesuwa się od POZYCJI 1 do POZYCJI 2 następnie do POZYCJI 1 i tak w koło. Dopiero po naciśnięciu innego z trzech przycisków przestaje wykonywać obie pętle. Nie wiem dlaczego po sprawdzeniu i wykonaniu pierwszego <strong>if</strong> przechodzi i wykonuje to co jest po <strong>else</strong>.<br /><br />[syntax=c]//ATmega 328<br /><br /><br />#define F_CPU 8000000UL<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br /><br />#define PCINT_PD1 (1&lt;&lt;PD0) //PRZYCISK DRZWI 1<br />#define PCINT_PD2 (1&lt;&lt;PD1) //PRZYCISK DRZWI 2<br />#define PCINT_PD3 (1&lt;&lt;PD2) //PRZYCISK DRZWI 3<br /><br /><br />#define D1_ON PORTC &amp;= ~LB2<br />#define D1_OFF PORTC |= LB2<br />#define D1_TOG PORTC ^= LB2<br /><br />#define D2_ON PORTC &amp;= ~LN3<br />#define D2_OFF PORTC |= LN3<br />#define D2_TOG PORTC ^= LN3<br /><br />#define D3_ON PORTC &amp;= ~LB3<br />#define D3_OFF PORTC |= LB3<br />#define D3_TOG PORTC ^= LB3<br /><br />volatile uint8_t pressed;<br /><br /><br />uint8_t O1=50; //ZMIENNA DRZWI 1 OTWARTE<br />uint8_t Z1=150; //ZMIENNA DRZWI 1 ZAMKNIĘTE<br /><br />uint8_t O2=50; //ZMIENNA DRZWI 2 OTWARTE<br />uint8_t Z2=150; //ZMIENNA DRZWI 2 ZAMKNIĘTE<br /><br />uint8_t O3=50; //ZMIENNA DRZWI 3 OTWARTE<br />uint8_t Z3=150; //ZMIENNA DRZWI 3 ZAMKNIĘTE<br /><br />uint8_t D1=50; //ZMIENNA DRZWI 1<br />uint8_t D2=50; //ZMIENNA DRZWI 2<br />uint8_t D3=50; //ZMIENNA DRZWI 3<br /><br /><br />int main(void)<br />{<br />//Piny wyjściowe SERVO<br />    DDRB |= (1&lt;&lt;PB1) | (1&lt;&lt;PB2) | (1&lt;&lt;PB3);<br /><br />    // set non-inverting mode<br />    TCCR1A |= (1 &lt;&lt; COM1A1) | (1 &lt;&lt; COM1B1);<br />    TCCR2A |=  (1 &lt;&lt; COM2A0);<br /><br />    // set fast PWM Mode<br />    TCCR1A |= (1 &lt;&lt; WGM11);<br />    TCCR1B |= (1 &lt;&lt; WGM13) | (1 &lt;&lt; WGM12);<br /><br />    TCCR2A |= (1 &lt;&lt; WGM20) | (1 &lt;&lt; WGM21);<br />    TCCR2B |= (1 &lt;&lt; WGM22);<br /><br />    // set prescaler to 64<br />    TCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10);<br />    TCCR2B |= (1 &lt;&lt; CS22);<br /><br /><br />    // 2500 - 8MHz, 3456 - 11.0592MHz, 5000 - 16Mhz<br />    //liczenie od 0 - 2500<br />    ICR1 = 2499; //(F_CPU/64UL/50UL)-1; //39999<br /><br /><br />    PORTD |= PCINT_PD1|PCINT_PD2|PCINT_PD3;  // podciągnięcie klawiszy z portu D<br /><br />    PCICR |= (1&lt;&lt;PCIE2);                     // zezwolenie na przerwanie PCIE2<br />    PCMSK2 |= PCINT_PD1 | PCINT_PD2 | PCINT_PD3;<br /><br />    sei();<br /><br />    while(1)<br />    {<br />    _delay_ms(525);<br /><br />if (pressed == 1) {<br />if (D1 == O1)<br />while (D1&lt;Z1){<br />(D1 = D1+1);<br />OCR1A = D1;<br /><br />_delay_ms(50);<br />}<br />else<br />while (D1 &gt; O1){<br />(D1 = D1-1);<br />OCR1A = D1;<br /><br /><br />_delay_ms(20);<br />}<br /><br />}<br /><br /><br /><br /><br /><br /><br /><br />    }<br /><br />}<br /><br /><br />ISR( PCINT2_vect ) {<br /><br /><br />if( !(PIND &amp; PCINT_PD1) ) pressed=1;<br />if( !(PIND &amp; PCINT_PD2) ) pressed=2;<br />if( !(PIND &amp; PCINT_PD3) ) pressed=3;<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17774">anw</a> — 4 kwi 2022, o 14:52</p><hr />
]]></content>
</entry>
</feed>