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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-02-06T21:38:40+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20166&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2018-02-06T21:38:40+01:00</updated>
<published>2018-02-06T21:38:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203465#p203465</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203465#p203465"/>
<title type="html"><![CDATA[Re: ATmega 644PA, USART + Putty i proste sterowanie diodą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203465#p203465"><![CDATA[
Tak. Za pierwszym odczytem UDR0 odczytasz jakiś znak a za drugim 0x00 co nie jest żadnym znakiem. Dodatkowo jest tam FIFO na 2 znaki dlatego sprawdza się bit RXC0, który informuje czy jest coś co warto czytać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 6 lut 2018, o 21:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mtbchn]]></name></author>
<updated>2018-02-06T21:21:14+01:00</updated>
<published>2018-02-06T21:21:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203462#p203462</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203462#p203462"/>
<title type="html"><![CDATA[Re: ATmega 644PA, USART + Putty i proste sterowanie diodą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203462#p203462"><![CDATA[
Super, dziękuję bardzo. Oczywiście po tej korekcie wszystko działa zgodnie z założeniem.<br />Czyli w momencie, kiedy odczytuję zawartość rejestru UDR0, to jest ona automatycznie kasowana, tak? Dlatego konieczne jest zastosowanie zmiennej, by chwilową zawartość tego rejestru, móc do niej bardziej &quot;trwale&quot; przypisać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18960">mtbchn</a> — 6 lut 2018, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2018-02-06T21:13:04+01:00</updated>
<published>2018-02-06T21:13:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203461#p203461</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203461#p203461"/>
<title type="html"><![CDATA[Re: ATmega 644PA, USART + Putty i proste sterowanie diodą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203461#p203461"><![CDATA[
Aby sprawdzić warunek &quot;wyciągasz znak&quot; i już go nie ma dla kolejnego sprawdzenia. A gdyby zrobić tak:<br />[syntax=c]char znak;<br />while(1)<br />{<br />   while ( !(UCSR0A &amp; (1&lt;&lt;RXC0)) );<br />   znak = UDR0;<br />   if( znak == '1' )<br />   {<br />      PORTB &amp;= ~(1&lt;&lt;PB0);<br />   }<br /> <br />   if( znak == '2' )<br />   {<br />      PORTB |= (1&lt;&lt;PB0);<br />   }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 6 lut 2018, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mtbchn]]></name></author>
<updated>2018-02-06T21:07:43+01:00</updated>
<published>2018-02-06T21:07:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203459#p203459</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203459#p203459"/>
<title type="html"><![CDATA[ATmega 644PA, USART + Putty i proste sterowanie diodą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20166&amp;p=203459#p203459"><![CDATA[
Witajcie Koledzy,<br /><br />mam do Was pytanko, może ktoś będzie w stanie mi pomóc.<br />Komunikacja USART działa w obie strony - testowałem, Putty skonfigurowany poprawnie.<br /><br />Cel: proste sterowanie diody. Klawisz &quot;1&quot; włącza diodę, a klawisz &quot;2&quot; ją wyłącza (ot tak, w ramach zwykłego testu).<br /><br />Mój problem:<br />- tuż po uruchomieniu programu (włączony Putty) naciśnięcie klawisza &quot;1&quot; powoduje natychmiastowe włączenie diody PB0 - i jest to właściwe<br />- wyłączenie diody za pomocą klawisza &quot;2&quot; niestety wymaga dwukrotnego jego wciśnięcia, lub przytrzymania go przez dłuższą chwilę<br />- ponowne włączenie diody za pomocą klawisza &quot;1&quot; jest możliwe tylko po jego dwukrotnym wciśnięciu, lub dłuższym przytrzymaniu<br /><br />Gdzie popełniam błąd? I dlaczego tak się dzieje? Z góry dzięki za podpowiedź. Poniżej wklejam kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define UART_BAUD 9600<br />#define __UBRR ((F_CPU + UART_BAUD * 8UL) / (16UL * UART_BAUD) - 1)<br /><br />void USART_Init( uint16_t ubrr );<br /><br />int main( void )<br />{<br />DDRB = 255;<br />PORTB = 255;<br /><br />USART_Init( __UBRR );<br /><br />while(1)<br />{<br />while ( !(UCSR0A &amp; (1&lt;&lt;RXC0)) );<br /><br />if( UDR0 == '1' )<br />{<br /><br />PORTB &amp;= ~(1&lt;&lt;PB0);<br />}<br /><br />if( UDR0 == '2' )<br />{<br />PORTB |= (1&lt;&lt;PB0);<br />}<br /><br />}<br />}<br /><br />void USART_Init( uint16_t ubrr)<br />{<br />/*Set baud rate */<br />UBRR0H = (uint8_t)(ubrr&gt;&gt;8);<br />UBRR0L = (uint8_t)ubrr;<br />/*Enable receiver and transmitter */<br />UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0);<br />/* Set frame format: 8data, 2stop bit */<br />UCSR0C = (1&lt;&lt;USBS0)|(3&lt;&lt;UCSZ00);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18960">mtbchn</a> — 6 lut 2018, o 21:07</p><hr />
]]></content>
</entry>
</feed>