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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-12T16:01:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9203&amp;mode</id>
<entry>
<author><name><![CDATA[hakroom]]></name></author>
<updated>2014-11-12T16:01:06+01:00</updated>
<published>2014-11-12T16:01:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103556#p103556</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103556#p103556"/>
<title type="html"><![CDATA[Re: Problem z odbieraniem danych przez mikrokontroler]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103556#p103556"><![CDATA[
problem się rozwiązał nie ustawiłem bitu RXCIE0 w rejestrze UCSR0B<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6555">hakroom</a> — 12 lis 2014, o 16:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-11-12T14:31:00+01:00</updated>
<published>2014-11-12T14:31:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103528#p103528</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103528#p103528"/>
<title type="html"><![CDATA[Re: Problem z odbieraniem danych przez mikrokontroler]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103528#p103528"><![CDATA[
Bllleeeee.... Zmień sposób wklejania kodu bo się czytać nie da. Tu masz opis jak to zrobić <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 12 lis 2014, o 14:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hakroom]]></name></author>
<updated>2014-11-12T14:57:46+01:00</updated>
<published>2014-11-12T14:18:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103522#p103522</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103522#p103522"/>
<title type="html"><![CDATA[Problem z odbieraniem danych przez mikrokontroler]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9203&amp;p=103522#p103522"><![CDATA[
Witam,<br /><br />chciałem zrobić komunikacje miedzy mikrokontrolerem a użytkownikiem po USART. O ile wysyłanie danych z mikrokontrolera do terminala działa w drugą stronę już nie bardzo. Zarówno wysyłanie jak i odbieranie zrobione jest na przerwaniach zgodnie z tym co Mirek pisał w książce.<br /><br />Niestety obieranie przez mikrokontroler znaków z komputera nie działa jak zmieniłem funkcje obioru na tą, która jest podana w datashecie to działa tylko w przerwaniu nie działa.<br /><br />Używam mikrokontrolera atmega 168<br /><br />Program główny<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;mkuart.h&quot;<br /><br />int main(void)<br />{<br />sei();<br />USART_Init(__UBRR);<br /><br />uint8_t receive; // zmienna do przechowywania odebranych danych<br /> <br />  while(1) {<br />                receive = uart_getc();<br />                if (receive != 0) uart_putc('a'); // jeśli zmienna receive przyjmuje 0 nie wysyła nic (zaglądnij do uart_getc())<br />}<br />}[/syntax]<br /><br />program do odbierania danych (z książki Mirka zmieniłem tylko ustawienia pod mój mikrokontroler)<br />[syntax=c]// definiujemy funkcję pobierającą jeden bajt z bufora cyklicznego<br />char uart_getc(void) {<br />    // sprawdzamy czy indeksy są równe<br />    if ( UART_RxHead == UART_RxTail ) return 0;<br /><br />    // obliczamy i zapamiętujemy nowy indeks „ogona węża” (może się zrównać z głową)<br />    UART_RxTail = (UART_RxTail + 1) &amp; UART_RX_BUF_MASK;<br />    <br />    // zwracamy bajt pobrany z bufora  jako rezultat funkcji<br />    return UART_RxBuf&#91;UART_RxTail&#93;;<br />}<br /><br />// definiujemy procedurę obsługi przerwania odbiorczego, zapisującą dane do bufora cyklicznego<br />ISR( USART_RX_vect ) {<br />    uint8_t tmp_head;<br />    char data;<br />    data = UDR0; //pobieramy natychmiast bajt danych z bufora sprzętowego<br /><br />    // obliczamy nowy indeks „głowy węża”<br />    tmp_head = ( UART_RxHead + 1) &amp; UART_RX_BUF_MASK;<br /><br />    // sprawdzamy, czy wąż nie zacznie zjadać własnego ogona<br />    if ( tmp_head == UART_RxTail ) {<br />    // tutaj możemy w jakiś wygodny dla nas sposób obsłużyć  błąd spowodowany<br />    // próbą nadpisania danych w buforze, mogłoby dojść do sytuacji gdzie<br />    // nasz wąż zacząłby zjadać własny ogon<br />    } else {<br />UART_RxHead = tmp_head; // zapamiętujemy nowy indeks<br />UART_RxBuf&#91;tmp_head&#93; = data; // wpisujemy odebrany bajt do bufora<br />    }<br />}<br />/*<br />unsigned char USART_Receive(void) {<br /><br />while (!(UCSR0A &amp; (1&lt;&lt;RXC0)));<br />return UDR0;<br />}*/[/syntax]<br /><br />z funkcją <div class="codetitle"><b>Code:</b></div><div class="codecontent">USART_Receive()</div> wszystko działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6555">hakroom</a> — 12 lis 2014, o 14:18</p><hr />
]]></content>
</entry>
</feed>