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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-11-15T19:45:50+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=19606&amp;mode</id>
<entry>
<author><name><![CDATA[Artur_26]]></name></author>
<updated>2017-11-15T19:45:50+01:00</updated>
<published>2017-11-15T19:45:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=199008#p199008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=199008#p199008"/>
<title type="html"><![CDATA[Re: Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=199008#p199008"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />...<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent">zmienna Licznik_Bufora_RX może przekroczyć dozwolony rozmiar Wielkosc_Bufora , wiadomo czym skutkuje. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div></div><br /><br />heh przekonałem się na własnej skórze jak robiłem sobie bibliotekę do nRF24L01 tyle, że w obsłudze SPI. W czasie testów bufor SPI ustawiłem na 16 bajtów <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />, a jak już wypróbowałem komunikację pomiędzy dwoma nRF24L01 przesyłając sobie kilka bajtów, to zapomniałem, że bufor SPI ma tylko 16 bajtów. I jakie moje zdziwienie było, kiedy wysłałem więcej  niż 15 bajtów a na terminalu (bo tak sobie testowałem) pojawiły się tzw. krzaki:)) i szczerze mówiąc to zanim do tego doszedłem to mi trochę zeszło więc..... <br />Ale LENISTWO czasem bierze górę hihi.<br />Więc dzięki za motywację.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4513">Artur_26</a> — 15 lis 2017, o 19:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-11-15T17:52:14+01:00</updated>
<published>2017-11-15T17:52:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198994#p198994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198994#p198994"/>
<title type="html"><![CDATA[Re: Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198994#p198994"><![CDATA[
Witam,<br /><div class="quotetitle">Artur_26 napisał(a):</div><div class="quotecontent"><br />Tylko muszę się zastanowić jak sobie obsłużyć przekroczenie rozmiaru...<br /></div><br />Ja bym poszukal w rozdziale 10_  <span style="color: #008040"><strong>GB</strong></span>. widzę że masz  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Głownie przerwanie ISR( USART_RXC_vect){........<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ,<br />oraz funkcję   ....uart_getc(void){.....// (w jakim celu funkcja zwraca typ int ? )<br />w funkcji uart_get_str(); jest to w jakimś celu sprawdzane. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />hmm.. no bo po co nam uszkodzona ramka danych ? pewnie tylko do śmietnika. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />a nadpisanie bufora odbiorczego poza jego rozmiarem (gdy np odbiór się chwilowo przerwie bez znaku końca i pojawią następne dane od któregoś tam znaku  ),<br />zmienna Licznik_Bufora_RX może przekroczyć dozwolony rozmiar Wielkosc_Bufora , <br />wiadomo czym skutkuje. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 15 lis 2017, o 17:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Artur_26]]></name></author>
<updated>2017-11-14T19:54:01+01:00</updated>
<published>2017-11-14T19:54:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198944#p198944</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198944#p198944"/>
<title type="html"><![CDATA[Re: Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198944#p198944"><![CDATA[
Witam,<br /><div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />Nie masz kontroli przepełnienia buforów w czasie ich wypełniania.<br /></div><br /><br />Nie zrobiłem, ale w sposób świadomy (trochę lenistwo... <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> ). Choć w zasadzie powinny być więc dorobię. <br />Tylko muszę się zastanowić jak sobie obsłużyć przekroczenie rozmiaru, tak aby było prosto i mało kodu:).<br /><br /><div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />po co taka kombinacja z końcem - CR w jedną 0x00 w druga stronę?<br /></div><br /><br />Przerobiłem w obu kierunkach na końcu wymagane znak &quot;CR&quot; (0x0D) <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> he he dzieki temu dwie linie kodu mniej:)<br /><br /><br />[syntax=c]//-----------------------------------------------------------------------------------------------<br />// Funkcja wysyła DANE z pamięci FLASH<br />//-----------------------------------------------------------------------------------------------<br />void USART_WYSLIJ_STRING_P(const char *dane)<br />{<br />  register char znak;<br />  uint8_t i = 0;<br />                                        <br />  while ((znak = pgm_read_byte(dane++)))          // przepisywanie z ROM do BUFORA TX<br />    Uart_Bufor_TX&#91;i++&#93; = znak;<br /><br />  Uart_Bufor_TX&#91;i&#93; = '\r';                        // naley wpisa 0x0D na koniec tekstu  -- zmiana<br />  USART_WYSLIJ_STRING(Uart_Bufor_TX);             // wysłanie buforu TX<br />}<br /><br />//-----------------------------------------------------------------------------------------------<br />// Obsługa przerwania PUSTY BUFOR <br />//-----------------------------------------------------------------------------------------------<br />ISR(USART_UDRE_vect)<br />{<br /><br />  UDR = *wskaznik_TX;                                // wpisanie znaku z adresu we wskaźniku do nadajnika UART<br />  if (*wskaznik_TX++ == '\r')                        // sprawdzenie czy znak równy 0x0D<br />    UCSRB &amp;=~(1&lt;&lt;UDRIE);                             // jeśli tak to wyłączenie przerwania od PUSTEGO BUFORU<br /><br />}<br /><br />//-----------------------------------------------------------------------------------------------<br />// Obsługa przerwania OTRZYMANO ZNAK<br />// Potwierdzenie odebrania całej ramki odbywa się po odebraniu znaku &quot;CR&quot; (0x0D)<br />//-----------------------------------------------------------------------------------------------<br />ISR(USART_RXC_vect)<br />{<br />  static uint8_t Licznik_Bufora_Rx = 0;            // licznik odebranych bajtów<br /><br />  Uart_Bufor_RX&#91;Licznik_Bufora_Rx&#93; = UDR;          // odczytanie odebranego bajtu z odbiornika<br /><br />  if (Uart_Bufor_RX&#91;Licznik_Bufora_Rx++&#93; == '\r')  // jeśli odebrany znak = &quot;CR&quot; to:<br />   {<br />     Licznik_Bufora_Rx = 0;                        // kasowanie liniczka odebranych bajtów<br />     Jest_dana_z_RX = 1;                           // ustawienie flagi Jest_dana_z_RX, że zostały odebrane dane<br />   }<br />}[/syntax]<br /><br />Dzięki za uwagi <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=4513">Artur_26</a> — 14 lis 2017, o 19:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2017-11-14T10:38:14+01:00</updated>
<published>2017-11-14T10:38:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198909#p198909</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198909#p198909"/>
<title type="html"><![CDATA[Re: Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198909#p198909"><![CDATA[
Tak na szybko:<br />- Nie masz kontroli przepełnienia buforów w czasie ich wypełniania.<br />- po co taka kombinacja z końcem - CR w jedną 0x00 w druga stronę?<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 14 lis 2017, o 10:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2017-11-14T08:29:21+01:00</updated>
<published>2017-11-14T08:29:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198904#p198904</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198904#p198904"/>
<title type="html"><![CDATA[Re: Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198904#p198904"><![CDATA[
A przepraszam!<br />Chyba jeszcze spałem jak to pisałem.<br />Jeszcze raz przepraszam <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 14 lis 2017, o 08:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamBo]]></name></author>
<updated>2017-11-14T07:38:34+01:00</updated>
<published>2017-11-14T07:38:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198901#p198901</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198901#p198901"/>
<title type="html"><![CDATA[Re: Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198901#p198901"><![CDATA[
<div class="quotetitle">MirkoT napisał(a):</div><div class="quotecontent"><br />A co to ma wspólnego z DIY?<br />Może jednak warto się zastanowić gdzie się umieszcza <br />swoje pytania?<br /></div><br /><br />A to, kolego , że jest to projekt programistyczny. Nazwy działów czytamy że zrozumieniem. <br />Pozdrawiam<br /><br />Wysłane z mojego HTC One_M8 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9051">adamBo</a> — 14 lis 2017, o 07:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2017-11-14T07:30:14+01:00</updated>
<published>2017-11-14T07:30:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198900#p198900</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198900#p198900"/>
<title type="html"><![CDATA[Re: Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198900#p198900"><![CDATA[
A co to ma wspólnego z DIY?<br />Może jednak warto się zastanowić gdzie się umieszcza <br />swoje pytania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 14 lis 2017, o 07:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Artur_26]]></name></author>
<updated>2017-11-13T21:43:28+01:00</updated>
<published>2017-11-13T21:43:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198889#p198889</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198889#p198889"/>
<title type="html"><![CDATA[Obsługa UARTa - prosta obsługa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19606&amp;p=198889#p198889"><![CDATA[
Witam, chciałbym się z wami podzielić moją malutką biblioteką do obsługi UART.<br /><br />Jest to pierwsze moje wystąpienie z kodem C na tym forum!    <img src="https://forum.atnel.pl/images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="Pan Zielony" /> <br /><br />Założenia:<br />1. <strong>Praca oparta o przerwania nadajnika i odbiornika.</strong><br />1. Ilość przesyłanych danych mała do kilkudziesięciu bajtów.<br />2. Praca na dwóch buforach Tx i Rx.<br />3. Transmisja oparta o znaki ASCII<br /><br /><br />W moim przykładzie obsługa sprowadza się do wykorzystania:<br /><br />1. USART_UDRE_vect - przerwanie od pustego buforu nadajnika<br />2. USART_RXC_vect  - przerwanie od odebranej danej przez UART.<br />3. Bufor Tx  - bufor danych wysyłanych, wielkość buforu ustalana na stałe  <br />4. Bufor Rx -  bufor danych odbieranych, wielkość buforu ustalana na stałe<br />5. Flaga &quot;Jest_dana_z_RX&quot; - flaga ustawiana kiedy zostanie odebrana cała ramka, czyli jeśli zostanie odebrany znak &quot;CR&quot; (0x0D)<br /><br /><strong>Dane wysyłane do uC muszą być zakończone znakiem &quot;CR&quot; (0x0D)<br /><br />Dane wysyłane z uC muszą być zakończone zerem (0x00). - zero oznacza, że uC ma przestać wysyłać dane.<br /><br />Flaga &quot;Jest_dana_z_RX&quot; wykorzystywana do obsługi odebranych danych, patrz przykład kod poniżej.</strong><br /><br />Napisałem 4 funkcje obsługujące UART:<br />1. Inicjalizacja Uarta<br />2. Wysłanie pojedynczego znaku<br />3. Wysłanie danych z RAM<br />4. Wysłanie danych z ROM<br /><br />Poniżej przedstawiam kod:<br /><br /><strong>UART_ATMega.h</strong><br /><br />[syntax=c]/*<br /> * UART_ATMega.h<br /> *<br /> *  Created on: 2017-11-03<br /> *     Author: Artur<br /> */<br /><br /><br />// !!!!!!!! Obsługa UARTA oparta na przerwaniach !!!!!!!!<br /><br /><br />#ifndef UART_ATMEGA_H_<br />#define UART_ATMEGA_H_<br /><br />#define UART_BAUD 38400 // tu definiujemy interesującą nas prędkość<br /><br />#define _UBRR    ((F_CPU) / (16UL*UART_BAUD)-1) // obliczamy UBRR dla U2X=0<br /><br />#define _UCSRC   ((1&lt;&lt;URSEL) | (0&lt;&lt;UMSEL) | (0&lt;&lt;UPM1) | (0&lt;&lt;UPM0) | (0&lt;&lt;USBS) | (1&lt;&lt;UCSZ1) | (1&lt;&lt;UCSZ0) | (0&lt;&lt;UCPOL))<br /><br />#define _UCSRB   ((1&lt;&lt;RXCIE) | (0&lt;&lt;TXCIE) | (0&lt;&lt;UDRIE)| (1&lt;&lt;RXEN) | (1&lt;&lt;TXEN) | (0&lt;&lt;UCSZ2) | (0&lt;&lt;RXB8)  | (0&lt;&lt;TXB8))<br /><br />// bity RXC UDRE FE DOR PE są tylko do odczytu<br />#define _UCSRA     ((0&lt;&lt;TXC)  | (0&lt;&lt;U2X)  | (0&lt;&lt;MPCM))<br /><br /><br />#define WIELKOSC_BUFOR_TX     32<br /><br />#define WIELKOSC_BUFOR_RX     32<br />                                                 <br />extern volatile char Uart_Bufor_TX&#91;WIELKOSC_BUFOR_TX&#93;;<br /><br />extern volatile char Uart_Bufor_RX&#91;WIELKOSC_BUFOR_RX&#93;;<br /><br />extern volatile uint8_t Jest_dana_z_RX;    // flaga potwierdzająca odebranie danych, koniec danych (ramki) określa znka &quot;CR&quot;,<br />                                           // i po odebraniu tego znaku flaga ta jest ustawiana<br />                                           // 0 - nie odebrane    1 - odebrane<br /><br /><br />void USART_INI(uint8_t baud);                                  // inicjalizacja portu RS232<br />void USART_WYSLIJ_ZNAK(uint8_t dana);                   // funkcja wysyła pojedynczy znak<br />void USART_WYSLIJ_STRING(volatile void *dane);        // funkcja wysyła string z RAM<br />void USART_WYSLIJ_STRING_P(const char *dane);      // funkcja wysyła string z FLASH<br /><br /><br />#endif /* UART_ATMEGA_H_ */[/syntax]<br /><br /><strong>UART_ATMega.c</strong><br /><br />[syntax=c]/*<br /> * UART_ATMega.c<br /> *<br /> *  Created on: 2017-11-03<br /> *     Author: Artur<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br />#include &quot;UART_ATMega.h&quot;<br /><br />volatile char Uart_Bufor_TX&#91;WIELKOSC_BUFOR_TX&#93;;<br />volatile char Uart_Bufor_RX&#91;WIELKOSC_BUFOR_RX&#93;;<br /><br />volatile uint8_t Jest_dana_z_RX;<br /><br />volatile uint8_t *wskaznik_TX;    // wskaźnik do wysyłanych danych<br /><br />//-----------------------------------------------------------------------------------------------<br />// Funkcja Inicjalizująca USART<br />// NIE MA POTRZEBY USTAWIAĆ LINI PORTU WE/WY, PO WŁĄCZENIU NADAJNIKA I ODBIORNIKA<br />// USART PRZEJMUJE KONTORLĘ NAD PINAMI uC<br />//-----------------------------------------------------------------------------------------------<br />void USART_INI(uint8_t baud)<br />{<br />  UBRRH = (uint8_t)(baud&gt;&gt;8);                    // Ustawienie prędkości<br />  UBRRL = (uint8_t) baud;           <br /><br />  UCSRC = _UCSRC;                                  //aby zapisać do UCSRC to należy ustawić bit 7 (URSEL)<br />  UCSRB = _UCSRB;<br />}<br /><br />//-----------------------------------------------------------------------------------------------<br />// Funkcja wysyła pojedynczy znak<br />//-----------------------------------------------------------------------------------------------<br />void USART_WYSLIJ_ZNAK(uint8_t dana)<br />{<br />  UDR = dana;<br />}<br /><br />//-----------------------------------------------------------------------------------------------<br />// Funkcja wysyła DANE z dowolnego obszaru pamięci RAM wskazanego poprzez wskaźnik<br />// Tu podajemy tylko wskaźnik do pierwszej komórki pamięci, od której mają być wysyłane dane<br />// i włączamy przerwanie od pustego bufora nadajnika.<br />// Dalsze wysyłanie danych przejmuje przerwanie od pustego bufora nadajnika<br />//-----------------------------------------------------------------------------------------------<br />void USART_WYSLIJ_STRING(volatile void *dane)<br />{<br />  wskaznik_TX = dane;                             // przepisanie wskaźnika, wskaźnik_TX używany w przerwaniu od pustego bufora<br />  UCSRB |= (1&lt;&lt;UDRIE);                           // włączenie przerwania od PUSTEGO BUFORU<br />}<br /><br />//-----------------------------------------------------------------------------------------------<br />// Funkcja wysyła DANE z pamięci FLASH<br />//-----------------------------------------------------------------------------------------------<br />void USART_WYSLIJ_STRING_P(const char *dane)<br />{<br />  register char znak;<br />  uint8_t i = 0;<br /><br />  while ((znak = pgm_read_byte(dane++)))         // przepisywanie z ROM do BUFORA TX<br />    Uart_Bufor_TX&#91;i++&#93; = znak;<br /><br />  Uart_Bufor_TX&#91;i&#93; = 0;                                   // należy wpisać 0 na koniec tekstu<br />  USART_WYSLIJ_STRING(Uart_Bufor_TX);         // wysłanie buforu TX<br />}<br /><br />//-----------------------------------------------------------------------------------------------<br />// Obsługa przerwania PUSTY BUFOR<br />//-----------------------------------------------------------------------------------------------<br />ISR(USART_UDRE_vect)<br />{<br />  if (*wskaznik_TX)                                // jeżeli wartość w buforze większa od zera<br />    UDR = *wskaznik_TX++;                     // wpisanie znaku z adresu we wskaźniku do nadajnika UART<br />  else                                                  // jeżeli wartość w buforze równa 0 to:<br />    UCSRB &amp;=~(1&lt;&lt;UDRIE);                     // wyłączenie przerwania od PUSTEGO BUFORU<br />}                                      <br /><br />//-----------------------------------------------------------------------------------------------<br />// Obsługa przerwania OTRZYMANO ZNAK<br />// Potwierdzenie odebrania całej ramki odbywa się po odebraniu znaku &quot;CR&quot; (0x0D)<br />//-----------------------------------------------------------------------------------------------<br />ISR(USART_RXC_vect)<br />{<br />  static uint8_t Licznik_Bufora_Rx = 0;                // licznik odebranych bajtów<br /><br />  Uart_Bufor_RX&#91;Licznik_Bufora_Rx&#93; = UDR;          // odczytanie odebranego bajtu z odbiornika<br />                                                                                                                                            <br />  if (Uart_Bufor_RX&#91;Licznik_Bufora_Rx++&#93; == '\r')  // jeśli odebrany znak = &quot;CR&quot; to:<br />   {<br />     Uart_Bufor_RX&#91;--Licznik_Bufora_Rx&#93; = 0;       // podmiana na 0 ostatnio odebranego znaku czyli entera<br />     Licznik_Bufora_Rx = 0;                               // kasowanie licznika odebranych bajtów<br />     Jest_dana_z_RX = 1;                                 // ustawienie flagi Jest_dana_z_RX, że zostały odebrane dane<br />   }<br />}[/syntax]<br /><br /><strong>main.c</strong><br /><br />[syntax=c]/*<br /> * main.c    ATmega16    F_CPU = 16000000 Hz<br /> *<br /> * Created on: 2017-11-03<br /> *     Author: Artur<br />*/<br />// dołączanie systemowych plików nagłówkowych             <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 />// miejsce na dołączanie własnych plików<br />#include &quot;UART_ATMega/UART_ATMega.h&quot;                         <br /><br />const char Tekst&#91;&#93; PROGMEM = &quot;NAPIS Z PAMIECI FLASH&quot;;<br /><br /><br />// główna funkcja programu - main()<br />int main( void )<br />{<br />// sekcja inicjalizacji peryferiów<br />   USART_INI(_UBRR);<br />   sei();<br /><br />// główna pętla programu<br />    while(1)<br />    {<br />     //przykład tstowy<br />     if (Jest_dana_z_RX)     // sprawdzenie czy zostały odebrane dane przez UART<br />      {<br />       Jest_dana_z_RX = 0;<br />       if (Uart_Bufor_RX&#91;0&#93; == 'A')    // sprawdzenie czy w pierwszy bajt w buforze RX to &quot;A&quot;<br />        {<br />         USART_WYSLIJ_STRING(Uart_Bufor_RX);  // jeśli tak to odsyła dane wcześniej odebrane<br />        }<br /><br />      }<br /><br />    }<br /><br />}[/syntax]<br /><br /><br />Poniżej obrazek z terminala dla tego testowego programu.<br /><br /><a href="https://obrazkiforum.atnel.pl/4513/85f1f98e2094d2197395ee5bfc9a2d28.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4513/85f1f98e2094d2197395ee5bfc9a2d28.jpg" alt="Obrazek" /></a><br /><br />Proszę o opinie, może jakieś ciekawe podpowiedzi ? utrzymując założenie, że obsługa ma być stosunkowo prosta i na przerwaniach <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4513">Artur_26</a> — 13 lis 2017, o 21:43</p><hr />
]]></content>
</entry>
</feed>