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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-08T22:34:42+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=11641&amp;mode</id>
<entry>
<author><name><![CDATA[MichuO]]></name></author>
<updated>2015-05-08T22:34:42+01:00</updated>
<published>2015-05-08T22:34:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11641&amp;p=128627#p128627</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11641&amp;p=128627#p128627"/>
<title type="html"><![CDATA[ATB + BTM222]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11641&amp;p=128627#p128627"><![CDATA[
Witam wszystkich,<br />Z góry przepraszam za prawdopodobną trywialność mojego problemu dla bardziej zaawansowanych i proszę o pomoc.<br />Napisałem następujący program:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define FOSC 11059200 //Clock Speed<br />#define BAUD 19200<br />#define MYUBRR FOSC/16/BAUD-1<br /><br />void USART_Init(unsigned int ubrr){<br />UCSRB=(1&lt;&lt;RXEN);//Włączenie obsługi odbioru<br />UCSRC=(1&lt;&lt;URSEL)|(1&lt;&lt;UPM1)|(1&lt;&lt;UCSZ1)|(1&lt;&lt;UCSZ0);//URSEL: wł.UCSRC;UPM: Even Partity Mode;UCSZ:8bit (011)<br />UBRRL=35;//Z noty<br />}<br /><br />uint8_t GetData (void){//odbiór znaku<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) );//oczekiwanie na czysty bufor<br />return UDR;//zwrócenie zawartości funkcji<br />}<br /><br /><br />int main()<br />{<br />USART_Init(MYUBRR);<br /><br />    DDRB = 0xff;//ustawienie portu B jako wyjście<br />    PORTB = 0;<br /><br />    uint8_t ReceivedData;<br /><br />    while(1){<br /><br />    ReceivedData = GetData();//sprawdzanie bufora non stop<br /><br />    if(ReceivedData=='Q'){<br />    PORTB |= (1&lt;&lt;PB0);<br />    }<br /><br />    if(ReceivedData=='R'){<br />    PORTB &amp;= ~(1&lt;&lt;PB0);<br />    }<br /><br />    }<br />}[/syntax]<br /><br />Przez aplikację w telefonie wysyłam do modułu znaki Q i R, w terminalu widzę, że są one odbierane, jednak stan diody nie zmienia się, czy mógłby ktoś mnie naprowadzić dlaczego ? ATmega16, taktowana kwarcem z płytki ATB<br /><br />edit: Wydaje mi się, że program staje na funkcji GetData(), tylko nie rozumiem czemu. Tak jakby warunek ( !(UCSRA &amp; (1&lt;&lt;RXC)) ) nigdy nie był spełniony<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9228">MichuO</a> — 8 maja 2015, o 22:34</p><hr />
]]></content>
</entry>
</feed>