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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-09-19T19:23:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=12982&amp;mode</id>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-09-19T19:23:31+01:00</updated>
<published>2015-09-19T19:23:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140167#p140167</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140167#p140167"/>
<title type="html"><![CDATA[Re: Odbiór pojednynczego znaku przez uart]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140167#p140167"><![CDATA[
Powinieneś użyć funkcji czekającej na znak albo po prostu odrzucać wynik &quot;pusty&quot; czyli NULL albo -1 zależnie od implementacji.<br /><br />Można także czekać aż uart_avaiable() coś zwróci, a nawet coś <a href="https://github.com/jnk0le/Easy-AVR-USART-C-Library/blob/master/example%28xmodem%29.c"  class="postlink">takiego</a>.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 19 wrz 2015, o 19:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-09-19T13:00:51+01:00</updated>
<published>2015-09-19T13:00:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140149#p140149</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140149#p140149"/>
<title type="html"><![CDATA[Re: Odbiór pojednynczego znaku przez uart]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140149#p140149"><![CDATA[
<div class="quotetitle">Atmegowiec napisał(a):</div><div class="quotecontent"><br />problem jest taki ze gdy nic nie pisze to i tak wysyłane są same kropki &quot;.&quot; do terminala... nie rozumiem dlaczego<br /></div><br />To czemu nie zajrzysz do funkcji uart_getc() tylko stosujesz ją kompletnie bez zrozumienia ? Już nie wspomnę o tym, że już w Bluebooku był przykład jak korzystać z takiej funkcji ... w pętli głównej np w rozdziale z przykładem wielozadaniowym do np gaszenia i zapalania diody LED z terminala - ale po co tam zaglądać no nie ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br /><div class="quotetitle">Atmegowiec napisał(a):</div><div class="quotecontent"><br />nie ejstem pewny czy nie popełniłem jakiegos błedu w kodzie.<br /></div><br />Ja nie wiem jak ty oglądasz takie poradniki, że później na ich przykładzie wpisujesz takie rzeczy, które nie mają prawa działać ? ZRÓB chociaż RAZ, JEDEN RAZ takie samo ćwiczenie jak w poradniku i sprawdź zanim wprowadzisz swoje modyfikacje, które popsują to wszystko. A wtedy nawet nie masz punktu odniesienia ....<br /><br />Toż gdybyś RAZ zrobił przykład jak należy (czyli jak w poradniku albo jak w książce) i by ci to działało ... a później jakbyś wprowadzał własne modyfikacje to widziałbyś (tzn mam taką nadzieję) .... co psujesz że nie działa<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 wrz 2015, o 13:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2015-09-19T13:01:20+01:00</updated>
<published>2015-09-19T12:24:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140148#p140148</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140148#p140148"/>
<title type="html"><![CDATA[Odbiór pojednynczego znaku przez uart]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12982&amp;p=140148#p140148"><![CDATA[
Witam, mam naprawdę dziwny problem. Otóż mam biblioteke Mirka z GB i chce odbierać jeden znak z terminala a potem od razu go wysyłac z powrotem.<br /><br />Kod poza inicjalizacją uarta wygląda tak:<br /><br />[syntax=c]while(1){ <br />char temp;<br />temp = uart_getc();<br />uart_puts(&quot;Napisałeś: &quot;);<br />uart_putc(temp);<br />}[/syntax]<br /><br />problem jest taki ze gdy nic nie pisze to i tak wysyłane są same kropki &quot;.&quot; do terminala... nie rozumiem dlaczego, tak jakby skad odbierał jakies dane, a przeceiz nic nei wpisuje.<br /><br />Rezultat jest taki:<br /><br />Napisałeś: ............................ i tak przez poł ekranu tych kropek ;/ no porostu nie rozumiem czemu tak jest. Uklad jest zmontowany na płytce stykowej z kondensatorami filtrującymi i pinem RST podłączonym do VCC prez rezystor 10K. Nie ma tylko dławika.<br />Juz wcześniej rozbiłem rożne ćwiczenia z uartem ale nie zauważyłem nigdy takiego problemu.<br /><br />Ogolnie chciałbym analizować wpisywany tekst do terminala, tak jak Mirek pokazywał w poradniku o Kliencie TCP, choć tutaj chciałbym uzyc zwyklego terminala do takiej analizy, tzn wpisuje jakis tekst i pomiedzy danymi znacznikami jest szukany ciąg. Napisałem taki kod na podstawie w/w poradnika, niestety nie działa, nie ejstem pewny czy nie popełniłem jakiegos błedu w kodzie.<br /><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 &lt;avr/pgmspace.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;MK_USART/mkuart.h&quot;<br /><br />#define LED (1&lt;&lt;PB2)<br />#define LED_ON PORTB |= LED<br />#define LED_OFF PORTB &amp;= ~LED<br />#define LED_TOG PORTB ^= LED<br /><br /><br />typedef struct{<br />char * delim1;<br />uint8_t d1len;<br />char * delim2;<br />uint8_t d2len;<br />char outbuf&#91;100&#93;;<br />int8_t status;<br />} TPSTR;<br /><br />TPSTR tpstr; //zmienna reprezentująca strukturę<br /><br />uint8_t parse_rs232(int znak, TPSTR * wpstr );<br />char string_html_start&#91;&#93; = &quot;aaa&quot;;<br />char string_html_end&#91;&#93; = &quot;bbb&quot;;<br /><br />int main( void )<br /><br />{<br /><br />    DDRB |= LED;<br /><br /><br />    LED_ON;<br />    _delay_ms(50);<br />    LED_OFF;<br /><br />    USART_Init( __UBRR );<br /><br />    //register_uart_str_rx_event_callback(parse_rs232);<br /><br />    sei();<br /><br />    while( 1 )<br /><br />    {<br />    find_str();<br />    int cn = uart_getc();<br />    if(parse_rs232(cn, &amp;tpstr)){<br />    LED_ON;<br />    uart_puts(tpstr.outbuf);<br />    LED_OFF;<br />    }<br />   }<br />}<br /><br />uint8_t parse_rs232(int znak, TPSTR * wpstr )<br />{<br />static uint8_t idx1, idx2;<br />static uint8_t strend;<br />char mzn = znak;<br /><br />if( wpstr -&gt; status &lt; 0 || znak &lt; 0 ) return 0;<br />if( !wpstr -&gt; status) {<br />char * dlm1 = wpstr -&gt;delim1;<br />if (mzn == *(dlm1+idx1)){<br />idx1++;<br />if(idx1 == wpstr -&gt; d1len){<br />wpstr -&gt; status = 1; //omijamy pierwszego ifa jesli idx ma długosc szykanego stringa<br />idx1 = 0;<br />idx2 = 0;<br /><br />}<br />}else idx1 = 0;<br />}else if( wpstr -&gt; status){<br />wpstr -&gt; outbuf&#91;idx1++&#93; = mzn;<br />if( idx1++ &gt; 99 ) idx1 = 0;<br />char * dlm2 = wpstr -&gt;delim2;<br />if (mzn == *(dlm2+idx2)){<br />idx2++;<br />if( 1 == wpstr -&gt; status){<br />wpstr -&gt; status = 2;<br />strend = idx1-idx2;<br />}<br />if(idx2 == wpstr -&gt; d2len){<br />idx1 = 0;<br />idx2 = 0;<br />wpstr -&gt; status = -1;<br />wpstr -&gt; outbuf&#91; strend &#93; = 0; //zakańczamy stringa zerem &quot;C-string&quot;<br />return 1;<br />}<br /><br />}else {<br />idx2 = 0;<br />wpstr -&gt; status = 1;<br />}<br /><br />}<br />return 0;<br />}<br /><br />void find_str( void ){<br />//****ładujemy stringi poczatkowe i koncowe wraz z dlugosciami do struktury<br />tpstr.delim1 = string_html_start;<br />tpstr.d1len = strlen(string_html_start);<br />tpstr.delim2 = string_html_end;<br />tpstr.d2len = strlen(string_html_end);<br />tpstr.status = 0;<br />}[/syntax]<br /><br />Rezultatem chciałbym by było wyświetlenie w terminalu stringa znajdującego sie pomiedzy tagami aaaSTRINGbbb. Obecnie nic sie nie wyswietla, tzn nie wykrywany jest ten ciąg.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 19 wrz 2015, o 12:24</p><hr />
]]></content>
</entry>
</feed>