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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-09-04T17:56:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=918&amp;mode</id>
<entry>
<author><name><![CDATA[sebolek66]]></name></author>
<updated>2013-09-04T17:56:32+01:00</updated>
<published>2013-09-04T17:56:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=48170#p48170</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=48170#p48170"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=48170#p48170"><![CDATA[
Miałem niewielki problem z biblioteką MKUART.c na ATMEGA328P. Po przeróbce urywek kodu biblioteki wygląda tak:<br />[syntax=c]...<br />void uart_init(uint16_t ubrr)<br />{<br />// Ustawienie pr�dko�ci transmisji<br />UBRR0H = (uint8_t)(ubrr &gt;&gt; 8);<br />UBRR0L = (uint8_t)ubrr;<br /> <br />// W��czenie nadajnika i odbiornika<br />UCSR0B = (1 &lt;&lt; RXEN0) | (1 &lt;&lt; TXEN0);<br /> <br />// Ustawienie formatu ramki:<br />// 8 bit�w danych, 1 bit stopu, brak parzysto�ci<br />UCSR0C = (1 &lt;&lt; UCSZ00) | (1 &lt;&lt; UCSZ01);<br />}<br /><br /><br />void uart_putc(uint8_t data)<br />{<br />// Oczekiwanie na zako�czenie nadawania<br />while (!(UCSR0A &amp; (1 &lt;&lt; UDRE0)));<br /> <br />// Wys�anie danych<br />UDR0 = data;<br />}<br /> <br />// przydatna (ale nie niezb�dna) funkcja wysy�aj�ca ci�g znak�w<br />void uart_puts( char *s )   // was: (const char *s)<br />{<br />while (*s) <br />uart_putc(*s++);<br />}<br /><br />uint8_t uart_ischar()<br />{<br />// Czy w buforze s� dane?<br />return (UCSR0A &amp; (1 &lt;&lt; RXC0));<br />}<br /><br />void uart_putint(int value, int radix)// wysy?a na port szeregowy tekst<br />{<br />char string&#91;17&#93;;// bufor na wynik funkcji itoa<br />itoa(value, string, radix);// konwersja value na ASCII<br />uart_puts(string);// wy?lij string na port szeregowy<br />}<br /> <br />char uart_getc(void)<br />{<br />// Czy w buforze s� dane?<br />while(!uart_ischar());<br /> <br />// Dane z bufora<br />return UDR0;<br />}[/syntax]<br /><br />Program kompiluje się bez błędów do hex-a. Jednakże w w/w bibliotece pojawiają się komunikaty treści:<br />Symbol 'UDR0' could not be resolved<br />Symbol 'UCSR0A' could not be resolved<br />Symbol 'RXC0' could not be resolved<br />Czy, ktoś z państwa może mi to wyjaśnić?<br /><br /><span style="color: #FF0000">Kody wklejamy przy pomocy syntax=c - Różowy J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1247">sebolek66</a> — 4 wrz 2013, o 17:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-03-12T22:46:28+01:00</updated>
<published>2012-03-12T22:46:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4109#p4109</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4109#p4109"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4109#p4109"><![CDATA[
<div class="quotetitle">IUVOit napisał(a):</div><div class="quotecontent"><br />Szkoda, że nie było gotowej takiej funkcji w bibliotece mkuart.c <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /></div><br /><br />W tej książce przyjąłem osiągnięcie jednego najważniejszego celu. Zapoznanie czytelnika z przejrzystym sposobem obsługi UART na przerwaniach oraz wyjaśnienie zagadnienia związanego z korzystaniem z buforów cyklicznych. Jak widać, zajęło to &quot;trochę&quot; miejsca w książce i uznałem że więcej nie będę pisał na łamach tej książki aby nie zrobić mętliku. Pozostawiłem to w takiej wersji aby każdy mógł teraz dalej sam popróbować swoich własnych sił....<br /><br />Wprawdzie w drugiej części książki, którą właśnie wciąż kończę miałem nie pisać nic na temat UART, bo zabrakło czasu i miałem wszystko przerzucić do trzeciej części książki do pierwszego największego rozdziału, to jednak powoli uginam się pod naporem maili i prawdopodobnie chociaż pobieżnie ale rozwinę nieco dalej ten temat. Przy okazji fajnie, że każdy już sam zacznie swoich własnych sił w tym zakresie - i będzie się mógł przekonać czy szedł w dobrym kierunku, bo w drugiej części książki będzie właśnie trochę na ten temat jak zrobić fajną funkcję ale <span style="color: #0000FF"><strong>NIEBLOKUJĄCĄ</strong></span><br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">uart_get_str();</div><br /><br />mam nadzieję, że się spodoba ..... a może nawet uda mi się chociaż troszkę o parsowaniu danych napisać - zobaczymy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 mar 2012, o 22:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2012-03-12T22:29:13+01:00</updated>
<published>2012-03-12T22:29:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4107#p4107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4107#p4107"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4107#p4107"><![CDATA[
Problem rozwiązany! Problem nie leżał w inicjalizacji UART ale w sposobie wyświetlania znaków na wyświetlaczu LCD. Po zastosowaniu się do wskazówek zapal diodę jeżeli przyjdzie znak 'a' zgaś gdy znak 's' <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> wszystko ruszyło. <br /><br />Czas teraz na dalsze kroki. Zrobienie funkcji, która będzie analizowała przychodzące znaki (ramki). Szkoda, że nie było gotowej takiej funkcji w bibliotece mkuart.c <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><br />Dziękuję za pomoc <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=94">IUVOit</a> — 12 mar 2012, o 22:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2012-03-12T18:06:28+01:00</updated>
<published>2012-03-12T18:06:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4082#p4082</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4082#p4082"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4082#p4082"><![CDATA[
Po dokonaniu inicjalizacji UART rejestry miały następujące parametry. Wydaje mi się, że gdzieś tu popełniłem błąd. Trochę kombinacji porobiłem ale na razie nic mi nie wychodzi. Późnym wieczorem bedzie kolejne podejście <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><br /><img src="http://gryf-elektryk.pl/atnel/rs232a.bmp" alt="Obrazek" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 12 mar 2012, o 18:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-03-12T17:55:57+01:00</updated>
<published>2012-03-12T17:55:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4080#p4080</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4080#p4080"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4080#p4080"><![CDATA[
o właśnie - to czekam na info - będziemy dalej kombinować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> w razie czego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 mar 2012, o 17:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2012-03-12T17:48:45+01:00</updated>
<published>2012-03-12T17:48:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4078#p4078</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4078#p4078"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4078#p4078"><![CDATA[
Deklaracje w pliku konfiguracyjnym:<br />[syntax=c]<br />#define UART_BAUD 9600<br />#define __UBRR F_CPU/16/UART_BAUD-1  <br /><br />#define UART_RX_BUF_SIZE 32 <br />[/syntax]<br /><br />Czyli wielkość bufora 32. Wiem, że wielkości buforów muszą być typu: 0b00000011, 0b00001111 itd Zasadę działania bufora cyklicznego zrozumiałem. Bardzo sprytne zapętlenie z tą maską <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Cały czas pracuję z buforem o wielkości 32 tak jak w powyższym listingu. <br /><br />ps.<br />Nazwy rejestrów i przerwań brałem z pliku iom644pa.h<br /><br />Ten fragment programu związany z wyświetlaniem znaków ASCI przychodzących z COM'a działał mi jak robiłem testy na ATMega32. Ponieważ w dalszej kolejności chce analizować przychodzące znaki (stringi). Ramka znaków zaczynała by się od znaku 's' kolejne znaki były by jakimiś rozkazami, komendami...<br /><br />W sumie tam błędu nie szukałem... Ale, ok zmienię na zalecany kod. Mi się wydaje, że błąd gdzieś w deklaracjach popełniłem. W sumie nie sprawdzałem czy wchodzę w przrwanie...<br /><br />Testy te przeprowadzę wieczorkiem jak będę miał chwilkę czasu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 12 mar 2012, o 17:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-03-12T16:35:05+01:00</updated>
<published>2012-03-12T16:35:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4075#p4075</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4075#p4075"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4075#p4075"><![CDATA[
aha - przy okazji testuj sobie taki programik żeby to odpalić na m644P<br /><br />[syntax=c]char znak;<br />while(1) {<br />znak = uart_getc();<br />if( znak ) {<br />if( 'a' == znak ) LED_ON;<br />if( 's' == znak ) LED_OFF;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 mar 2012, o 16:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-03-12T15:57:31+01:00</updated>
<published>2012-03-12T15:57:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4072#p4072</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4072#p4072"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4072#p4072"><![CDATA[
Na wstępie dziękuję za dostosowanie się do zasad związanych z moją globalną prośbą o nie umieszczanie całych bibliotek z książki a ew fragmentów, które sprawiają kłopot. Dziękuję, także kolegom, którzy o tym przypomnieli.<br /><br />Dobrze przejdźmy do rzeczy, też na pierwszy rzut oka nie widzę błędu w tym kodzie po zamianie nazw rejestrów i bitów, ale skoro nie działa to znaczy, że jednak czegoś gdzieś jeszcze nie zrobiłeś jeśli chodzi o taką przeróbkę.<br /><br />Myślę, że mając pod ręką ATmega32, gdzie wszystko ładnie działa wg założeń, pewne jest że sam kod nie może być przyczyną problemu a właśnie co najwyżej to przeportowanie na inny procesor.<br /><br />Jakiej wielkości bufory cykliczne masz zadeklarowane w pliku konfiguracyjnym ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 mar 2012, o 15:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2012-03-12T14:34:13+01:00</updated>
<published>2012-03-12T14:34:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4070#p4070</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4070#p4070"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4070#p4070"><![CDATA[
Okroiłem listing. Teraz umieszczam tylko fragmenty kodu w którym są jakieś błędy. Ten kod po modyfikacji wielokrotnie analizowałem i nie mogę znaleźć błędu. Od strony elektrycznej, połączeń jest wszystko OK. Jeżeli złamałem jakieś zasady to przepraszam!!! To dopiero pierwszy mój post na tym forum, więc proszę o wyrozumiałość, jeżeli złamałem jakieś zasady.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 12 mar 2012, o 14:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2012-03-12T14:22:00+01:00</updated>
<published>2012-03-12T14:22:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4068#p4068</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4068#p4068"/>
<title type="html"><![CDATA[Re: Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4068#p4068"><![CDATA[
A mnie się zdaje, że Pan Mirek wielokrotnie prosił na tym forum aby nie zamieszczać listingów z książki.<br /> <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><br />Może analizę i poszukiwanie błędu - powodu dlaczego nie działa należałoby zacząć od zastanowienia się co zmieniamy i dlaczego.<br />Potem, czy na pewno zmieniamy to dobrze.<br />Następnie warto by się przyjrzeć, czy na pewno podłączamy wszystko tak jak być powinno...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 12 mar 2012, o 14:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2012-03-12T14:52:18+01:00</updated>
<published>2012-03-12T14:13:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4067#p4067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4067#p4067"/>
<title type="html"><![CDATA[Modyfikacja biblioteki MKUART.c pod procesor ATMega644PA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=918&amp;p=4067#p4067"><![CDATA[
Witam,<br /><br />Mam problem z modyfikacją biblioteki MKUART.c pod procesor ATMega644PA. Na procesorze ATMega32 wszystkie funkcje działały poprawnie.<br />W bibliotece Pana Mirka pozminiałem nazwy rejestrów oraz nazwy przerwań aby bibliotekę dostosować pod procesor ATMega644PA.<br />Po moich modyfikacjach działała mi jedynie funkcja wysyłania znaków void uart_puts(char *s). <br />Niestety nie działała mi funkcja odbierania  char uart_getc(void) <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Nie mogę nic wysłać z terminala do uP. Testy przeprowadzam na płytce testowej. Od strony elektycznej wszystko jest na pewno OK, poniewż funkcje zawarte w orginalnej bibliotece mkuart bez problemu działają mi na procesorze ATMega32.<br /><br />Parametry transmisji:<br />9600/8/none/2<br /><br />Zadaniem programu ma być wyświetlenie tekstu na wyświetlaczu LCD. Taki sam tekst wyświetlalem bez problemu na przy użyciu procesora ATMega32. <br />Poniżej zamieszczam listingi:<br /><br />plik main.c<br />[syntax=c]<br />int main(void) {<br />    <br />USART_Init( __UBRR );// inicjalizacja UART<br />        LCD_Initalize();     //inicjalizacja Wyswietlacza <br />sei();     // globalne odblokowanie przerwań<br />DDRD |= (1&lt;&lt;PD0);    //ustawinie wyjść RXD<br />PORTD |= (1&lt;&lt;PD0);   //ustawienie wyjsc RXD<br /><br />while(1) {<br />  if(uart_getc()=='s')<br />      {<br />   for(i=0;i&lt;16;i++)<br />   {<br />    str[i]=uart_getc();<br />    if(str[i]==0) {LCD_Clear();break;}<br />       }<br />      }<br />  LCD_GoTo(0,0);<br />      LCD_WriteText(str);<br />}<br /><br />}<br />[/syntax]<br /><br />plik mkuart.c<br />[syntax=c]<br />void USART_Init( uint16_t baud ) {<br />/* Ustawienie prędkości */<br />    UBRR0H = (unsigned char)(baud&gt;&gt;8);<br />    UBRR0L = (unsigned char)baud;<br />/* Załączenie nadajnika I odbiornika   ??????????*/<br />    UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0)|(1&lt;&lt;RXCIE0)|(1&lt;&lt;TXCIE0)|(1&lt;&lt;UDRIE0);<br />    /* Set frame format: 8data, 2stop bit */<br />    UCSR0C = (1&lt;&lt;USBS0)|(3&lt;&lt;UCSZ00);<br />}<br /><br />void uart_putc( char data ) {<br />    uint8_t tmp_head;<br />    tmp_head  = (UART_TxHead + 1) &amp; UART_TX_BUF_MASK;<br />    while ( tmp_head == UART_TxTail ){}<br />    UART_TxBuf[tmp_head] = data;<br />    UART_TxHead = tmp_head;<br />    UCSR0B |= (1&lt;&lt;UDRIE0);<br />}<br /><br />ISR( USART0_UDRE_vect)  {<br />    if ( UART_TxHead != UART_TxTail ) {<br />    UART_TxTail = (UART_TxTail + 1) &amp; UART_TX_BUF_MASK;<br />    UDR0 = UART_TxBuf[UART_TxTail];<br />    } else {<br />UCSR0B &amp;= ~(1&lt;&lt;UDRIE0);<br />    }<br />}<br /><br />char uart_getc(void) {<br />    if ( UART_RxHead == UART_RxTail ) return 0;<br />    UART_RxTail = (UART_RxTail + 1) &amp; UART_RX_BUF_MASK;<br />    return UART_RxBuf[UART_RxTail];<br />}<br /><br />ISR( USART0_RX_vect) {<br />    uint8_t tmp_head;<br />    char data;<br />    data = UDR0; <br />    tmp_head = ( UART_RxHead + 1) &amp; UART_RX_BUF_MASK;<br />    UART_RxHead = tmp_head; <br />    UART_RxBuf[tmp_head] = data;   <br />   <br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 12 mar 2012, o 14:13</p><hr />
]]></content>
</entry>
</feed>