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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-06T14:16:05+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4657&amp;mode</id>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-27T15:39:14+01:00</updated>
<published>2013-12-27T15:39:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62461#p62461</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62461#p62461"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62461#p62461"><![CDATA[
Nadal są dwie zmienne timeout<br />Jedna w pliku main druga w nagłówkowym<br /><br />zmień deklaracje zmiennej timeout w pliku nagłówkowym <br />poprzedzając ją słówkiem extern<br />Zmienna timeout ma być w pliku main przed funkcją main ().<br /><br />Co do warninga to nie mam pojęcia funkcja powinna zwracać w if<br />albo UDR jeśli timeout większe od zera albo '3' jeśli timeout równe zero<br /><br />Przenieś debuger przed return '3' <br />bo wyskoczysz z funkcji przed zapaleniem diody<br /><br /><br />Tak teraz zauważyłem czy ty w pliku *.h definiujesz funkcje ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 27 gru 2013, o 15:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-27T15:03:37+01:00</updated>
<published>2013-12-27T15:03:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62456#p62456</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62456#p62456"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62456#p62456"><![CDATA[
Teraz kod odbioru wygląda tak, nie wiem czy dobrze to zrobiłem.  Wyskakuje warning :No return, in function returning non-void. Podejrzewam ze instrukcja if jest źle napisana.<br />[syntax=c]#ifndef USART_OBSLUGA_H_<br />    #define USART_OBSLUGA_H_<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    volatile uint8_t timeout;<br />    #define LED (1&lt;&lt;PB0)<br /><br /><br />    void USART_Init( unsigned int ubrr)<br />    {<br />    /* Set baud rate */<br />    UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />    UBRRL = (unsigned char)ubrr;<br />    /* Enable receiver and transmitter */<br />    UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />    /* Set frame format: 8data, 1stop bit */<br />    UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;UCSZ0)|(1&lt;&lt;UCSZ1);<br />    }<br /><br />    void USART_Transmit( unsigned char data )<br />    {<br />    /* Wait for empty transmit buffer */<br />    while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />    /* Put data into buffer, sends the data */<br />    UDR = data;<br />    }<br /><br />    unsigned char USART_Receive(void)<br />    {<br />    DDRB |=LED;<br />    timeout = 255; //nakręcenie czasu do odbioru znaku<br />    /*Wait for data to be received*/<br />    while ( !(UCSRA &amp; (1&lt;&lt;RXC)) || timeout );<br /><br />    if (!timeout){<br />    return '3';<br />    PORTB ^= LED;<br />    }<br />    else return UDR;<br /><br />    }<br /><br /><br /><br />    #endif /* USART_OBSLUGA_H_ */[/syntax]<br /><br /><br />A w mainie wywaliłem diode z ifa.<br />[syntax=c]ISR(TIMER0_OVF_vect) //początek funkcji obsługi przerwania<br /><br />    {  //co 8ms<br />           TCNT0 = 6; //ustawienie wartości początkowej konieczne dla trybu przepełnienia licznika !!!!!!<br />           licznik++; //zwiększenie o 1<br /><br />           if (timeout)<br />           {<br /><br />           timeout-- ; //jeśli ustawiony timeout to zmniejsz<br /><br />           }<br />    }[/syntax]<br /><br /><br />Aha generalnie nic się nie dzieje , dioda nie mrugnie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 27 gru 2013, o 15:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-27T14:42:51+01:00</updated>
<published>2013-12-27T14:42:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62453#p62453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62453#p62453"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62453#p62453"><![CDATA[
Z funkcji <br />&quot;USART_Receive&quot;<br />usuń deklaracje zmiennej timeout<br />to ma być zmienna globalna żeby przerwanie i funkcja miała<br />dostęp do tej samej zmiennej.<br />Jeśli nie będzie się chciało kompilować ( a pewnie nie będzie)<br />dodaj w pliku z definicją tejże funkcji<br />[syntax=c]extern uint8_t timeout;[/syntax]<br />co poinformuje kompilator ,że ta zmienna jest deklarowana poza tym plikiem<br /><br />następnie przenieś &quot;debuger&quot; do if w funkcji odbierającej<br />Żeby zobaczyć czy po zerwaniu połączenia dioda <br />zmieni stan czy zmienia stan przy każdym odczycie <br /><br />No i zobaczymy co dalej <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=1044">Zaba</a> — 27 gru 2013, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-27T14:03:43+01:00</updated>
<published>2013-12-27T14:03:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62449#p62449</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62449#p62449"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62449#p62449"><![CDATA[
[syntax=c]#ifndef USART_OBSLUGA_H_<br />    #define USART_OBSLUGA_H_<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br /><br /><br />    void USART_Init( unsigned int ubrr)<br />    {<br />    /* Set baud rate */<br />    UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />    UBRRL = (unsigned char)ubrr;<br />    /* Enable receiver and transmitter */<br />    UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />    /* Set frame format: 8data, 1stop bit */<br />    UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;UCSZ0)|(1&lt;&lt;UCSZ1);<br />    }<br /><br />    void USART_Transmit( unsigned char data )<br />    {<br />    /* Wait for empty transmit buffer */<br />    while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />    /* Put data into buffer, sends the data */<br />    UDR = data;<br />    }<br /><br />    unsigned char USART_Receive(void)<br />    {<br />    volatile uint8_t timeout;<br />    timeout = 255; //nakręcenie czasu do odbioru znaku<br />    /*Wait for data to be received*/<br />    while ( !(UCSRA &amp; (1&lt;&lt;RXC)) || timeout );<br /><br />    if (!timeout) return '3';<br />    else return UDR;<br /><br />    }<br /><br /><br /><br />    #endif /* USART_OBSLUGA_H_ */[/syntax]<br /><br />Teraz plik main:<br />[syntax=c]#define FOSC 8000000// Clock Speed<br />    #define BAUD 19200<br />    #define MYUBRR ((FOSC+BAUD*8UL)/(16UL*BAUD)-1)<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/interrupt.h&gt; //dołączenie biblioteki z przerwaniami<br />    #include &quot;usart_obsluga.h&quot;<br />    volatile uint8_t timeout;<br />#define LED (1&lt;&lt;PB0)<br />    volatile uint16_t licznik; //teraz jako zmienna globalna zmieniana przez przerwanie i używana przez funkcje main dlatego z modyfikatorem volatile<br /><br />    int main(void) //program główny<br />    {<br /><br />/*-------------------------------------------------------------------------------------------------------*/<br />            //USTAWIENIE WYJSC POD PWM<br />            DDRB |= (1&lt;&lt;PB1);<br />            DDRB |= (1&lt;&lt;PB2);<br /><br />            //PWM FAST 8BIT<br />            TCCR1A |= (1&lt;&lt;WGM10);<br />            TCCR1B |= (1&lt;&lt;WGM12);<br />            //PRESKALER 64BIT<br />            TCCR1B |= (1&lt;&lt;CS10);<br />            TCCR1B |= (1&lt;&lt;CS11);<br />            //USTAWIENIE OC1A I OC1B<br />            TCCR1A |= (1&lt;&lt;COM1B1);<br />            TCCR1A |= (1&lt;&lt;COM1A1);<br /><br />            //deklaracja zmiennych<br /><br />            //ustawienie portow pc0-3 jak wyjscia<br />            DDRC |=(1&lt;&lt;PC0);<br />            DDRC |=(1&lt;&lt;PC1);<br />            DDRC |=(1&lt;&lt;PC2);<br />            DDRC |=(1&lt;&lt;PC3);<br />/*-----------------------------------------------------------------------------------------*/<br />            //--------------------------ustawienie timer 0-------------------------------------//<br /><br />                    TCCR0 |= (1&lt;&lt;CS02); //preskaler 256<br />                    TCCR0 &amp;= ~(1&lt;&lt;CS01);//preskaler 256<br />                    TCCR0 &amp;= ~(1&lt;&lt;CS00);//preskaler 256<br />                    TIMSK |= 1&lt;&lt;TOIE0; //włączenie przerwania od przepełnienia licznika<br />                    TCNT0 = 6;  //ustawienie wartości początkowej<br />                     sei(); //globalne włączenie przerwań*/<br />            //---------------------------------------------------------------------------------//<br />            USART_Init(MYUBRR);<br />            DDRB |=LED;<br /><br />            char input;<br /><br /><br /><br />            while(1)<br />             {<br />            input=USART_Receive();<br /><br />             if (input=='1') //? '1' czy 1<br />             {<br />                     PORTC |=(1&lt;&lt;PC0);<br />                     PORTC &amp;= ~ (1&lt;&lt;PC1);<br />                     OCR1A=255;<br /><br />             }<br /><br />             if (input=='2') //? '2' czy 2<br />             {<br />                     PORTC |=(1&lt;&lt;PC1);<br />                     PORTC &amp;= ~ (1&lt;&lt;PC0);<br />                     OCR1A=255;<br />             }<br /><br />             if (input=='3') //? '3' czy 3<br />             {<br />                    PORTC |=(1&lt;&lt;PC0);<br />                    PORTC |=(1&lt;&lt;PC1);<br /><br />             }<br />             //kod z przerwania<br />            if(licznik &gt; 375)<br />            {<br />                 if(licznik &lt; 500)<br />                {<br />                    if( input == '7')<br />                   {<br /><br />                   }<br />                   else<br />                   {<br />                        PORTC |=(1&lt;&lt;PC0);<br />                        PORTC |=(1&lt;&lt;PC1);<br />                   }<br />               }<br />            }<br />            if(licznik &gt; 500)<br />            {<br />                 licznik = 0;<br />            }<br /><br /><br />            }<br />    }<br /><br /><br />    ISR(TIMER0_OVF_vect) //początek funkcji obsługi przerwania<br /><br />    {  //co 8ms<br />           TCNT0 = 6; //ustawienie wartości początkowej konieczne dla trybu przepełnienia licznika !!!!!!<br />           licznik++; //zwiększenie o 1<br /><br />           if (timeout)<br />           {<br />           PORTB ^= LED;<br />           timeout-- ; //jeśli ustawiony timeout to zmniejsz<br /><br />           }<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 27 gru 2013, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-27T13:47:17+01:00</updated>
<published>2013-12-27T13:47:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62448#p62448</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62448#p62448"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62448#p62448"><![CDATA[
Wstaw &quot;debuger diodowy&quot; w if-a który sprawdza timeout<br />prawdopodobnie timeout jest za krótki i zawsze zdąży doliczyć do zera<br />zanim przyjdzie nowy znak<br /><br />Jaką częstotliwością napędzasz procka i jaki preskaler jest<br />ustawiony na timerze do tykania zmienną timeout<br /><br />Wrzuć jeszcze raz cały obecny kod wraz z funkcjami do komunikacji <br /><br />Średnik powinien tam być mój błąd <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=1044">Zaba</a> — 27 gru 2013, o 13:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-27T12:16:02+01:00</updated>
<published>2013-12-27T12:16:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62444#p62444</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62444#p62444"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62444#p62444"><![CDATA[
Teraz to silnik wogółe nie reaguje . brak reakcji na 1, 2,3 oraz  7 . Sprawdziłem to podpionajać diode do wyjscia uC i brak reakcji.<br />Dodałem średnik za '3' ponieważ były błedy moze to ma jakis wpływ.<br />[syntax=c]język c<br /><br />    unsigned char USART_Receive(void)<br />    {<br />    timeout = 255; //nakręcenie czasu do odbioru znaku<br />    /*Wait for data to be received*/<br />        while ( (!(UCSRA &amp; (1&lt;&lt;RXC)) )|| timeout );<br /><br />     <br />    if (!timeout) return '3' ;//jeśli timeuot jest zero to znaczy ,że minął czas i zwracamy to<br />                                  //wartość do zatrzymanie silnika<br />       else return UDR;<br />     <br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 27 gru 2013, o 12:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-26T20:01:41+01:00</updated>
<published>2013-12-26T20:01:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62384#p62384</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62384#p62384"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62384#p62384"><![CDATA[
Witam<br />Jeśli przepisałeś mój kod dosłownie to zrobiłem małego babola w <br />funkcji odbierającej w warunku powinno być użyte OR (<span style="color: #40FF00"> || </span>)<br />a ja przez pomyłkę użyłem ( | )<br />Wielkie Sorry<br /><br />napisałem :<br />[syntax=c]while ( !(UCSRA &amp; (1&lt;&lt;RXC)) | timeout );[/syntax]<br />a powinno być:<br />[syntax=c]while ( (!(UCSRA &amp; (1&lt;&lt;RXC)) )|| timeout );[/syntax]<br /><br />i jeszcze dla pewności dodałbym nawiasy<br /><br />Przez ten błąd mogło Ci to nie działać prawidłowo<br />jakbyś mógł to sprawdź czy po poprawce zatrybi<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 26 gru 2013, o 20:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-25T15:47:38+01:00</updated>
<published>2013-12-25T15:47:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62290#p62290</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62290#p62290"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62290#p62290"><![CDATA[
Ok teraz mój kod wygląda tak i nie bardzo wiem jak i co zrobić z tym timeoutem. Może ktoś ma jakiś program z realizacją zabezpieczenia przed utratą połączenia( np. jeśli uC straci połączenie to zostanie wykonane jakieś zadanie, funkcja).<br />[syntax=c]#ifndef USART_OBSLUGA_H_<br />    #define USART_OBSLUGA_H_<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    #define NO_DATA '0' //albo inny znak nie występujący w strumieniu wejściowym<br />    void USART_Init( unsigned int ubrr)<br />    {<br />    /* Set baud rate */<br />    UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />    UBRRL = (unsigned char)ubrr;<br />    /* Enable receiver and transmitter */<br />    UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />    /* Set frame format: 8data, 1stop bit */<br />    UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;UCSZ0)|(1&lt;&lt;UCSZ1);<br />    }<br /><br />    void USART_Transmit( unsigned char data )<br />    {<br />    /* Wait for empty transmit buffer */<br />    while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />    /* Put data into buffer, sends the data */<br />    UDR = data;<br />    }<br /><br />    unsigned char USART_Receive(void)<br />    {<br /><br />        return (UCSRA &amp; (1&lt;&lt;RXC)) ? UDR : NO_DATA;<br />    }<br /><br /><br />    #endif /* USART_OBSLUGA_H_ */[/syntax]<br /><br /><br /><br />[syntax=c]#define FOSC 8000000// Clock Speed<br />    #define BAUD 19200<br />    #define MYUBRR ((FOSC+BAUD*8UL)/(16UL*BAUD)-1)<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/interrupt.h&gt; //dołączenie biblioteki z przerwaniami<br />    #include &quot;usart_obsluga.h&quot;<br /><br />  <br /><br />    int main(void) //program główny<br />    {<br /><br />/*-------------------------------------------------------------------------------------------------------*/<br />            //USTAWIENIE WYJSC POD PWM<br />            DDRB |= (1&lt;&lt;PB1);<br />            DDRB |= (1&lt;&lt;PB2);<br /><br />            //PWM FAST 8BIT<br />            TCCR1A |= (1&lt;&lt;WGM10);<br />            TCCR1B |= (1&lt;&lt;WGM12);<br />            //PRESKALER 64BIT<br />            TCCR1B |= (1&lt;&lt;CS10);<br />            TCCR1B |= (1&lt;&lt;CS11);<br />            //USTAWIENIE OC1A I OC1B<br />            TCCR1A |= (1&lt;&lt;COM1B1);<br />            TCCR1A |= (1&lt;&lt;COM1A1);<br /><br />            //deklaracja zmiennych<br /><br />            //ustawienie portow pc0-3 jak wyjscia<br />            DDRC |=(1&lt;&lt;PC0);<br />            DDRC |=(1&lt;&lt;PC1);<br />            DDRC |=(1&lt;&lt;PC2);<br />            DDRC |=(1&lt;&lt;PC3);<br />/*-----------------------------------------------------------------------------------------*/<br />            USART_Init(MYUBRR);<br /><br /><br />            char input;<br /><br /><br /><br />            while(1)<br />             {<br />                    input=USART_Receive();<br /><br />                    char c;<br />                    if((c=USART_Receive)!=NO_DATA)<br />                    {<br />                    if (input=='1')<br />                                        {<br />                                                PORTC |=(1&lt;&lt;PC0);<br />                                                PORTC &amp;= ~ (1&lt;&lt;PC1);<br />                                                OCR1A=255;<br />                                       }<br />                     if (input=='3')<br />                                        {<br />                                               PORTC |=(1&lt;&lt;PC0);<br />                                               PORTC |=(1&lt;&lt;PC1);<br />                                        }<br />                    }<br />                    else<br />                    {<br />                    PORTC |=(1&lt;&lt;PC0);<br />                       PORTC |=(1&lt;&lt;PC1);<br />                    }<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 25 gru 2013, o 15:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T14:16:05+01:00</updated>
<published>2013-12-24T12:42:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62224#p62224</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62224#p62224"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62224#p62224"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 24 gru 2013, o 12:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-24T12:30:32+01:00</updated>
<published>2013-12-24T12:30:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62223#p62223</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62223#p62223"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62223#p62223"><![CDATA[
Po zmodyfikowaniu kodu teraz układ zachowuje się następująco odliczy timeout i wyśle 3. Ale podczas odliczania timeout program nie reaguje na wysyłanie 1 i 2 jak również po odliczeniu i wysłaniu 3 program nie reaguje na 1 i 2. Idę kombinować dalej jak ktoś by miał jakieś podpowiedzi to proszę pisać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 24 gru 2013, o 12:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-24T10:31:44+01:00</updated>
<published>2013-12-24T10:31:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62209#p62209</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62209#p62209"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62209#p62209"><![CDATA[
Witam <br />Ja proponowałbym tak:<br />Dodać globalną zmienną (w zależności od taktowania procka i preskalera Timera)<br />ośmio lub szesnasto bitową .<br />Chodzi o to by przy tykaniu Timera pomieściła czas który musi być większy<br />niż czas potrzebny do odbioru znaku <br />np:<br />[syntax=c]volatile uint8_t timeout;[/syntax]<br />następnie w przerwaniu zmniejszać wartość miennej <br />[syntax=c]ISR(TIMER0_OVF_vect) //początek funkcji obsługi przerwania<br /><br />{  //co 8ms <br />       TCNT0 = 6; //ustawienie wartości początkowej konieczne dla trybu przepełnienia licznika !!!!!!<br />       licznik++; //zwiększenie o 1<br /><br />       if (timeout) timeout-- ; //jeśli ustawiony timeout to zmniejsz<br />}[/syntax]<br />w funkcji odbierającej sprawdzamy czy nie minął czas na odbiór znaku<br />[syntax=c]unsigned char USART_Receive(void)<br />{<br />timeout = 255; //nakręcenie czasu do odbioru znaku<br />/*Wait for data to be received*/<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) | timeout );<br /><br />if (!timeout) return '3'  //jeśli timeuot jest zero to znaczy ,że minął czas i zwracamy to<br />                              //wartość do zatrzymanie silnika<br />   else return UDR;<br /><br />}[/syntax]<br /><br />Nie jestem pewny czy dokładnie taki kod będzie pasował ,piszę z głowy<br />bez sprawdzenia ale musiałby być mniej więcej taki scenariusz  <br /><br />Należy tylko obliczyć lub dobrać eksperymentalnie wartość zmiennej timeout<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 24 gru 2013, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-24T08:25:59+01:00</updated>
<published>2013-12-24T08:25:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62201#p62201</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62201#p62201"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62201#p62201"><![CDATA[
OK funkcja odbierająca i wysyłająca wygląda tak :<br />[syntax=c]#ifndef USART_OBSLUGA_H_<br />#define USART_OBSLUGA_H_<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />void USART_Init( unsigned int ubrr)<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />UBRRL = (unsigned char)ubrr;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 1stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;UCSZ0)|(1&lt;&lt;UCSZ1);<br />}<br /><br />void USART_Transmit( unsigned char data )<br />{<br />/* Wait for empty transmit buffer */<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />/* Put data into buffer, sends the data */<br />UDR = data;<br />}<br /><br />unsigned char USART_Receive(void)<br />{<br />/*Wait for data to be received*/<br />while<br />( !(UCSRA &amp; (1&lt;&lt;RXC)) );<br />/*Get and return received data from buffer*/<br />return UDR;<br />}<br /><br /><br />#endif /* USART_OBSLUGA_H_ */[/syntax]<br />I teraz pytanie jak to przerobić?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 24 gru 2013, o 08:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-23T23:29:40+01:00</updated>
<published>2013-12-23T23:29:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62189#p62189</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62189#p62189"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62189#p62189"><![CDATA[
Mam pewien pomysł <br />ale to wymaga przerobienia funkcji odbierającej dane.<br /><br />Myślę ,że trzeba tam ustawić takiego &quot;watch doga-a&quot;<br />tak jak radzi @Mirek wstawić Timeout przy odbiorze.<br />jeśli możesz to wstaw kod tej funkcji (jeśli nie jest z BB)<br />jak masz ją napisaną.<br /><br />Nie wiem czy coś z tego wyjdzie trochę jeszcze za mało umiem ale<br />może we dwóch damy radę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Tylko dzisiaj już mi szare komórki szwankują <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />a będę dopiero po nowym roku mógł przetestować coś<br />w na żywym organiźmie (zestawie )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 23 gru 2013, o 23:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-23T22:08:36+01:00</updated>
<published>2013-12-23T22:08:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62180#p62180</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62180#p62180"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62180#p62180"><![CDATA[
A wiec teraz gdy jest połączenie dioda miga natomiast jak wypnę moduł btm222 to dioda cały czas się świeci ( akurat wypiąłem w momencie świecenia) i nie zmienia stanu. Czyli na to wychodzi ze po odłączeniu (zerwaniu połączenia) program się blokuje tylko jak to obejść?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 23 gru 2013, o 22:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-23T21:39:12+01:00</updated>
<published>2013-12-23T21:39:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62175#p62175</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62175#p62175"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62175#p62175"><![CDATA[
Zmień<br />[syntax=c]PORTB |= led;[/syntax]<br />na<br />[syntax=c]PORTB ^= led;[/syntax]<br /><br />Twoim sposóbem tylko włączysz diodę<br />a jak wykorzystasz <span style="color: #0040BF">xor</span>  będzie za<br />każdym wejściem do warunku przełączać się z zapalonej na zgaszoną i na odwrót<br />(tylko jeśli będzie się to dziać za szybko to tylko lekko przygaśnie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />)<br /><br />wtedy dojdziemy czy po rozłączeniu połączenia program pracuje dalej<br />czy się blokuje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 23 gru 2013, o 21:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-23T20:43:31+01:00</updated>
<published>2013-12-23T20:43:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62174#p62174</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62174#p62174"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62174#p62174"><![CDATA[
Teraz zmieniłem kod na taki:<br />[syntax=c]if(licznik &gt; 375)<br />                   {<br />                        if(licznik &lt; 500)<br />                       {<br />                           if( input == '7')<br />                          {<br />                           PORTB|=led;<br />                          }<br />                          else<br />                          {<br />                               PORTC |=(1&lt;&lt;PC0);<br />                               PORTC |=(1&lt;&lt;PC1);<br />                               PORTB &amp;= ~ led;<br />                          }<br />                      }<br />                   }[/syntax]<br /><br /><br />I dioda się zapala ale jak wyłączę z zasilania btm to nie gaśnie. Aha jak wysyłam 1 z aplikacji do uC to dioda mignie. Czyli warunek za else działa. Tylko teraz pytanie jak to przekształcić aby efekt był taki ze po zerwaniu połączenia dioda zgasła.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 23 gru 2013, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-23T20:13:22+01:00</updated>
<published>2013-12-23T20:13:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62171#p62171</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62171#p62171"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62171#p62171"><![CDATA[
To teraz przenieś &quot;debuder&quot; do if  jako togled <br />tzn. do bloku if gdzie sprawdzasz czy input = 7<br />Jeśli Ci się zapali lub będzie szybko mrugać<br />to by znaczyło że zmienna input po rozłączeniu jest ciągle równa 7<br />i to by było prawidłowe bo nigdzie nie jest nadana nowa wartość.<br />Może tu w tym bloku trzeba nadać jej nieużywaną wartość i w nowym<br />obiegu pętli głównej dostane nową odczytaną wartość<br /><br />Jeśli dioda nie będzie mrugać to możliwe ,że<br />odbiór się blokuje po zerwaniu połączenia w funkcji odbierającej dane<br /><br />Tak to wykombinowałem może się uda <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=1044">Zaba</a> — 23 gru 2013, o 20:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-23T18:32:44+01:00</updated>
<published>2013-12-23T18:32:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62160#p62160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62160#p62160"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62160#p62160"><![CDATA[
Wstawiłem tą diodę do else i powinna się zapalić a niestety nie chce. Nie bardzo wiem jak zmienić kod aby to działało może w ogóle zmienić idee bo teraz z aplikacji wysyłam co 0,2 s znak 7 do uC może to powinno się inaczej robić? Może lepiej sprawdzać czy w ogóle doszedł jakikolwiek znak do uC jeśli tak to znaczy ze połączenie jest a jeśli nie przyszedł znak to znaczy ze połączenia niema. Ma ktoś może przykładowy kod?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 23 gru 2013, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-23T16:30:35+01:00</updated>
<published>2013-12-23T16:30:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62148#p62148</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62148#p62148"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62148#p62148"><![CDATA[
Witam<br />wygląda na to ,że nie wykonuje bloku else<br />możliwe ,że zmienna input po wysłaniu cały czas ma wartość 7<br />i jak rozłączysz połączenie to nic się nie zmienia<br /><br />Żeby być pewnym wstaw w blok else &quot;Mirkowy debuger&quot;<br />(migającą diodę)<br />Będziesz miał jakąś podpowiedź w którym miejscu szukać  <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=1044">Zaba</a> — 23 gru 2013, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-23T12:50:19+01:00</updated>
<published>2013-12-23T12:50:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62132#p62132</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62132#p62132"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62132#p62132"><![CDATA[
Ok teraz w kodzie uC mam '1' , '2', '3', '7'. Jak wyśle z aplikacji na telefonie 1 to silnik się kreci w prawo, jak wyśle 2 to w lewo a jak 3 to zatrzymuje się.<br />I podczas połączenia aplikacja wysyła 7 co 0,2 s. No i teraz jak wyłączę zasilanie btm222 albo jak stracę połączenie to silnik się dalej kreci a chciałbym aby w takim przypadku się zatrzymał.<br />poniżej filmik :<br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 23 gru 2013, o 12:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-12-23T11:57:44+01:00</updated>
<published>2013-12-23T11:57:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62126#p62126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62126#p62126"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62126#p62126"><![CDATA[
Obierz jeden kierunek albo 7 i 1 albo '7' i '1', bo sam się gubisz.<br />Do przerwania timera wrzuć tylko kod zmiany licznika, który obsługujesz z pętli głównej programu. To znacznie ułatwi analizę i zapanowanie nad kodem, bo teraz masz input=USART_Receive(); i w przerwaniu i w pętli while(1) co może powodować nieprzewidywalne zachowania. O przykładowo tak to można na szybko przerobić:<br />[syntax=c]#define FOSC 8000000// Clock Speed<br />#define BAUD 19200<br />#define MYUBRR ((FOSC+BAUD*8UL)/(16UL*BAUD)-1)<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt; //dołączenie biblioteki z przerwaniami<br />#include &quot;usart_obsluga.h&quot;<br /><br />volatile uint16_t licznik; //teraz jako zmienna globalna zmieniana przez przerwanie i używana przez funkcje main dlatego z modyfikatorem volatile<br /><br />int main(void) //program główny<br />{<br />        USART_Init(MYUBRR);<br /> <br />        //USTAWIENIE WYJSC POD PWM<br />        DDRB |= (1&lt;&lt;PB1);<br />        DDRB |= (1&lt;&lt;PB2);<br /> <br />        //PWM FAST 8BIT<br />        TCCR1A |= (1&lt;&lt;WGM10);<br />        TCCR1B |= (1&lt;&lt;WGM12);<br />        //PRESKALER 64BIT<br />        TCCR1B |= (1&lt;&lt;CS10);<br />        TCCR1B |= (1&lt;&lt;CS11);<br />        //USTAWIENIE OC1A I OC1B<br />        TCCR1A |= (1&lt;&lt;COM1B1);<br />        TCCR1A |= (1&lt;&lt;COM1A1);<br /> <br />        //deklaracja zmiennych<br /> <br />        //ustawienie portow pc0-3 jak wyjscia<br />        DDRC |=(1&lt;&lt;PC0);<br />        DDRC |=(1&lt;&lt;PC1);<br />        DDRC |=(1&lt;&lt;PC2);<br />        DDRC |=(1&lt;&lt;PC3);<br />        char input;<br />       <br />//--------------------------ustawienie timer 0-------------------------------------//<br /> <br />        TCCR0 |= (1&lt;&lt;CS02); //preskaler 256<br />        TCCR0 &amp;= ~(1&lt;&lt;CS01);//preskaler 256<br />        TCCR0 &amp;= ~(1&lt;&lt;CS00);//preskaler 256<br />        TIMSK |= 1&lt;&lt;TOIE0; //włączenie przerwania od przepełnienia licznika<br />        TCNT0 = 6;  //ustawienie wartości początkowej<br />         sei(); //globalne włączenie przerwań*/<br />//---------------------------------------------------------------------------------//<br /> <br />        while(1)<br />         {<br />                input=USART_Receive();<br /> <br />                if (input=='1') //? '1' czy 1<br />                {      <br />                        PORTC |=(1&lt;&lt;PC0);<br />                        PORTC &amp;= ~ (1&lt;&lt;PC1);<br />                        OCR1A=255;        <br />                }<br /> <br />                if (input=='2') //? '2' czy 2<br />                {<br />                        PORTC |=(1&lt;&lt;PC1);<br />                        PORTC &amp;= ~ (1&lt;&lt;PC0);<br />                        OCR1A=255;            <br />                }<br /> <br />                if (input=='3') //? '3' czy 3<br />                {<br />                       PORTC |=(1&lt;&lt;PC0);<br />                       PORTC |=(1&lt;&lt;PC1);<br />                }<br />                //kod z przerwania<br />                if(licznik &gt; 375)<br />               {<br />                    if(licznik &lt; 500)<br />                   {<br />                       if( input == 7)<br />                      {<br />                       <br />                      }<br />                      else<br />                      {<br />                           PORTC |=(1&lt;&lt;PC0);<br />                           PORTC |=(1&lt;&lt;PC1);<br />                      }<br />                  }<br />               }<br />               if(licznik &gt; 500)  <br />               {<br />                    licznik = 0;<br />               }<br />        }<br />}<br />ISR(TIMER0_OVF_vect) //początek funkcji obsługi przerwania<br />{  //co 8ms <br />       TCNT0 = 6; //ustawienie wartości początkowej konieczne dla trybu przepełnienia licznika !!!!!!<br />       licznik++; //zwiększenie o 1<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 23 gru 2013, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-22T21:10:55+01:00</updated>
<published>2013-12-22T21:10:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62083#p62083</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62083#p62083"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62083#p62083"><![CDATA[
Niestety wyzerowanie inputa nic nie dało. Jak przesyłam 1 do uC to silnik się nie kręci (PORTC |=(1&lt;&lt;PC0);PORTC &amp;= ~ (1&lt;&lt;PC1);) a chyba powinien. <br />No chyba ze ta funkcja działa tak ze podaje znak  7 i jest ok ale miedzy czasie podam znak 1 i wykona się operacja za else.<br />Jeśli tak jest to jak to przeskoczyć?<br />[syntax=c]if( input == 7)<br />               {<br />               <br />                }<br />                else<br />                {<br />                PORTC |=(1&lt;&lt;PC0);<br />                PORTC |=(1&lt;&lt;PC1);<br />                input = '0';<br />                  <br /><br />                }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 22 gru 2013, o 21:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2013-12-22T20:06:06+01:00</updated>
<published>2013-12-22T20:06:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62076#p62076</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62076#p62076"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62076#p62076"><![CDATA[
Witam <br />Ja bym jeszcze dla pewności wyzerował zmienną input<br />w przerwaniu lub nadał nieużywaną wartość.<br />[syntax=c]if( input == 7) <br />   {<br />   }<br />   else<br />       {<br />        PORTC |=(1&lt;&lt;PC0);<br />        PORTC |=(1&lt;&lt;PC1);<br />        input = '0';<br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 22 gru 2013, o 20:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vitor Borba]]></name></author>
<updated>2013-12-22T19:20:21+01:00</updated>
<published>2013-12-22T19:20:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62068#p62068</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62068#p62068"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=62068#p62068"><![CDATA[
Zacząłem testować program i niestety nie działa tak jak bym chciał a mianowicie:<br />Wysyłam znak 7 do mikroprocesora co 0,2 s i procesor sprawdza czy on wystąpił jeśli tak to nic nie robi a jeśli nie to podaje stan wysoki na pc0 i pc1. Niestety jeśli zerwę połączenie to silnik dalej się kręci. Proszę o jakiekolwiek podpowiedzi.<br /><br />Kod aplikacji odpowiedzialny za wysyłanie znaku 7:<br />[syntax=delphi]Sub Timer2_Tick<br />   Rozkaz(7)<br />End Sub[/syntax]<br /><br />Kod w uC:<br />[syntax=c]#define FOSC 8000000// Clock Speed<br />#define BAUD 19200<br />#define MYUBRR ((FOSC+BAUD*8UL)/(16UL*BAUD)-1)<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt; //dołączenie biblioteki z przerwaniami<br />#include &quot;usart_obsluga.h&quot;<br /><br /><br /><br /><br /> int main(void) //program główny<br />{<br />USART_Init(MYUBRR);<br /><br /><br /><br />//USTAWIENIE WYJSC POD PWM<br />DDRB |= (1&lt;&lt;PB1);<br />DDRB |= (1&lt;&lt;PB2);<br /><br />//PWM FAST 8BIT<br />TCCR1A |= (1&lt;&lt;WGM10);<br />TCCR1B |= (1&lt;&lt;WGM12);<br />//PRESKALER 64BIT<br />TCCR1B |= (1&lt;&lt;CS10);<br />TCCR1B |= (1&lt;&lt;CS11);<br />//USTAWIENIE OC1A I OC1B<br />TCCR1A |= (1&lt;&lt;COM1B1);<br />TCCR1A |= (1&lt;&lt;COM1A1);<br /><br />//deklaracja zmiennych<br /><br />//ustawienie portow pc0-3 jak wyjscia<br />DDRC |=(1&lt;&lt;PC0);<br />DDRC |=(1&lt;&lt;PC1);<br />DDRC |=(1&lt;&lt;PC2);<br />DDRC |=(1&lt;&lt;PC3);<br />char input;<br /><br />//--------------------------ustawienie timer 0-------------------------------------//<br /><br />TCCR0 |= (1&lt;&lt;CS02); //preskaler 256<br />TCCR0 &amp;= ~(1&lt;&lt;CS01);//preskaler 256<br />TCCR0 &amp;= ~(1&lt;&lt;CS00);//preskaler 256<br />TIMSK |= 1&lt;&lt;TOIE0; //włączenie przerwania od przepełnienia licznika<br />TCNT0 = 6;  //ustawienie wartości początkowej<br /> sei(); //globalne włączenie przerwań*/<br />//---------------------------------------------------------------------------------//<br /><br />while(1)<br /><br />{<br /><br /><br />input=USART_Receive();<br /><br />if (input=='1')<br />{<br /><br />PORTC |=(1&lt;&lt;PC0);<br />PORTC &amp;= ~ (1&lt;&lt;PC1);<br />OCR1A=255;<br /><br /><br />}<br /><br />if (input=='2')<br />{<br /><br />PORTC |=(1&lt;&lt;PC1);<br />PORTC &amp;= ~ (1&lt;&lt;PC0);<br /><br />OCR1A=255;<br /><br /><br />}<br /><br />if (input=='3')<br />{<br />PORTC |=(1&lt;&lt;PC0);<br />PORTC |=(1&lt;&lt;PC1);<br /><br />}<br />}<br /><br /><br />}<br />ISR(TIMER0_OVF_vect) //początek funkcji obsługi przerwania<br /><br />  {  //co 8ms<br />     char input;<br />   <br /><br />     input=USART_Receive();<br />     static uint16_t licznik=0; //dodano static zmieniono na 16-bit<br /><br /><br />      licznik++; //zwiększenie o 1<br /><br />      if(licznik &gt; 375) <br />        {<br />      if(licznik &lt; 500) <br />             {<br />                if( input == 7) <br />               {<br />             <br />                }<br />                else<br />                {<br />                PORTC |=(1&lt;&lt;PC0);<br />                PORTC |=(1&lt;&lt;PC1);<br />                 <br /><br />                }<br />        }<br />        }<br />        if(licznik &gt; 500)  <br />        {<br />           licznik = 0;<br />        }<br />     }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1652">Vitor Borba</a> — 22 gru 2013, o 19:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-11-06T19:45:17+01:00</updated>
<published>2013-11-06T19:45:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=55662#p55662</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=55662#p55662"/>
<title type="html"><![CDATA[Re: zerwanie polaczenia btm222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4657&amp;p=55662#p55662"><![CDATA[
[syntax=c]ISR(TIMER0_OVF_vect) //SIGNAL(SIG_OVERFLOW0) //początek funkcji obsługi przerwania<br />{  //co 8ms<br />   char input;<br />   TCNT0 = 6; //ustawienie wartości początkowej<br />   input=USART_Receive();<br />   static uint16_t licznik=0; //dodano static zmieniono na 16-bit<br />//------------- to powinno być na początku funkcji main a nie tutaj ---------------<br />   TCCR0 |= (1&lt;&lt;CS02);<br />   TCCR0 &amp;= ~(1&lt;&lt;CS01);<br />   TCCR0 &amp;= ~(1&lt;&lt;CS00);  //ustawienie preskalera na 256<br />   TIMSK |= 1&lt;&lt;TOIE0; //włączenie przerwania od przepełnienia licznika<br />   TCNT0 = 6;  //ustawienie wartości początkowej<br />   sei(); //globalne włączenie przerwań<br />//------------------------------------------------------------------------------<br />   licznik++; //zwiększenie o 1<br /> <br />   if(licznik &gt; 125) //sprawdzamy, czy nie minęło już 125 przepełnień<br />   {<br />      if(input==12) //bez ' ' bo one są dla używane np. tak 'A'<br />      {<br />      }<br />      else<br />      {<br />         PORTD |=(1&lt;&lt;PD7);<br />         PORTB |=(1&lt;&lt;PB0);<br />      } <br />   }<br />//przez 3 sekundy co 4 sekundy<br />   if(licznik &lt; 375) //0-3 sekundy<br />   {<br />      if( input != 12 ) //jeśli różne<br />      {<br />         PORTD |=(1&lt;&lt;PD7);<br />         PORTB |=(1&lt;&lt;PB0);<br />      }<br />   }<br />   if(licznik &gt; 500)  //po 4 sekundach<br />   {<br />      licznik = 0;<br />   }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 6 lis 2013, o 19:45</p><hr />
]]></content>
</entry>
</feed>