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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-04-14T20:44:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=7&amp;t=23018&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-04-14T20:44:31+01:00</updated>
<published>2020-04-14T20:44:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226206#p226206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226206#p226206"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226206#p226206"><![CDATA[
odpisałem na maila<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 kwi 2020, o 20:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-04-14T20:28:22+01:00</updated>
<published>2020-04-14T20:28:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226204#p226204</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226204#p226204"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226204#p226204"><![CDATA[
wysłałem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 14 kwi 2020, o 20:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-04-14T20:04:03+01:00</updated>
<published>2020-04-14T20:04:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226202#p226202</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226202#p226202"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226202#p226202"><![CDATA[
hmmm podeślij mi na <!-- e --><a href="mailto:biuro@atnel.pl">biuro@atnel.pl</a><!-- e --> tę bibliotekę którą otrzymałeś od nas ? bo coś mi tu nie pasuje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 kwi 2020, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-04-14T20:07:49+01:00</updated>
<published>2020-04-14T19:53:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226200#p226200</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226200#p226200"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226200#p226200"><![CDATA[
Jeszcze raz napiszę odnośnie powyższego wpisu Mirka o &quot;zmodyfikowanych&quot; wersjach biblioteki przeze mnie:<br />Mam wersję biblioteki v.1.1<br />I taką informację w consoli:<br />[syntax=c]'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega1284 -DF_CPU=11059200UL -MMD -MP -MF&quot;MK_MULTI_UART/mk_multi_uart.d&quot; -MT&quot;MK_MULTI_UART/mk_multi_uart.o&quot; -c -o &quot;MK_MULTI_UART/mk_multi_uart.o&quot; &quot;../MK_MULTI_UART/mk_multi_uart.c&quot;<br />../MK_MULTI_UART/mk_multi_uart.c: In function '__vector_28':<br />../MK_MULTI_UART/mk_multi_uart.c:650:5: error: 'dataH' undeclared (first use in this function)<br />     dataH = (UCSR1B &amp; (1&lt;&lt;RXB81)) &gt; 0;<br />     ^<br />../MK_MULTI_UART/mk_multi_uart.c:650:5: note: each undeclared identifier is reported only once for each function it appears in<br />../MK_MULTI_UART/mk_multi_uart.c:651:5: error: 'dataL' undeclared (first use in this function)<br />     dataL = UDR1; //pobieramy natychmiast bajt danych z bufora sprzętowego<br />     ^[/syntax]<br />Natomiast w pliku multi_usart_c mam:<br />[syntax=c]ISR( USART1_RX_vect ) {<br /><br />#if UART1_DATA_BITS == 9<br /><br />register TUART_BUF_8_16 tmp_head;<br />    register uint16_t data;<br /><br />    uarttab&#91;1&#93;-&gt;bin = 1;// wymuszenie obsługi binarnej<br /><br />    dataH = (UCSR1B &amp; (1&lt;&lt;RXB81)) &gt; 0;<br />    dataL = UDR1; //pobieramy natychmiast bajt danych z bufora sprzętowego<br /><br />    // obliczamy nowy indeks „głowy węża”<br />    tmp_head = ( uarttab&#91;1&#93;-&gt;rxHead + 1) &amp; uarttab&#91;1&#93;-&gt;rxMask;<br /><br />    // sprawdzamy, czy wąż nie zacznie zjadać własnego ogona<br />    if ( tmp_head == uarttab&#91;1&#93;-&gt;rxTail ) {<br />    // możliwa własna reakcja na utratę nadmiarowych danych<br />    uarttab&#91;1&#93;-&gt;rxHead = uarttab&#91;1&#93;-&gt;rxTail;<br />    uarttab&#91;1&#93;-&gt;ascii_frame_cnt = 0;<br />    } else {<br />    uarttab&#91;1&#93;-&gt;rx9Buf&#91; uarttab&#91;1&#93;-&gt;rxHead &#93; = (dataH&lt;&lt;8) | dataL; // xxx[/syntax]<br />Dlatego też musiałem wprowadzić te zmiany(o których pisałem), żadnych innych, bo<br />a/ nie znam się na tyle, by czegoś nie spieprzyć<br />b/ nie wiem do końca, co autor miał na myśli.<br />Dlatego też podałem to wszystko, by upewnić się co do słuszności, bo widać, że plik nie zna zmiennych dataH i dataL.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 14 kwi 2020, o 19:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-04-14T15:35:44+01:00</updated>
<published>2020-04-14T15:35:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226186#p226186</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226186#p226186"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226186#p226186"><![CDATA[
<div class="quotetitle">Nef.ID napisał(a):</div><div class="quotecontent"><br />Zresztą co widać na załączonym obrazku - 1 bit =52 usek, 2 bity 104 usek, 3 bity to 157 usek.<br /></div><br />Lubisz sobie utrudniać życie - toż masz w programie LOGIC za darmo pełno analizatorów w tym podstawowy do RS232, zobacz - a tu ja nadaję ramkę testową i gdybym zadawał pytanie na forum to bym pokazał taki przebieg z Saleaez włączonym analizatorem zamiast bawić się w czasówki - nie ważne jaka prędkość<br /><br />więc u mnie nadaje sobie ATmega32 tak:<br /><br /><img src="https://obrazkiforum.atnel.pl/54/ac7eb944917752c508e31494e812004b.png" alt="Obrazek" /><br /><br />nic dodać nic ująć - widać wszystko jak BYK, na dłoni albo jak na patelni ... (i dlatego myśl Pan o takich testach NAJPROSTSZYCH i używaniu analizatorów protokołów) na przyszłość<br /><br />zaraz sprawdzę odbieranie<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 34 minutach ]</span></strong><br /><br />proszę bardzo - a dla utrudnienia dodałem przesyłanie dwóch ramek jedna po drugiej co ok 500ms, tak wyglądają na analizatorze w saleae<br /><br /><img src="https://obrazkiforum.atnel.pl/54/8d76aa4383890097057c605a1e3b4b12.png" alt="Obrazek" /><br /><br />no i proszę na dwóch zestawach ATB to śmiga, żeby było ciekawiej to nadawca jest na m32 zaś odbiorca na m1284P<br /><br /><img src="https://obrazkiforum.atnel.pl/54/40d45d6e31c58ad5ad30196596a802a5.jpg" alt="Obrazek" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 37 minutach ]</span></strong><br /><br />pętla główna nadawcy:<br /><br />[syntax=c]while(1) {<br />UART_RX_EVENT();<br /><br />if( !Timer1 ) {<br />Timer1 = 50;<br />uart_put_9bit( 0, 0x0041 );<br />uart_put_9bit( 0, 0x0042 );<br />}<br />}[/syntax]<br /><br /><br />a u odbiorcy wygląda to tak:<br /><br /><br />[syntax=c]uart_reg_callback_bin9( 0, rx0buf9, 2, parse9 );<br /><br /><br />while(1) {<br />UART_RX_EVENT();<br />}[/syntax]<br /><br /><br />zaś sama funkcja parsująca &quot;parse9&quot;<br /><br /><br />[syntax=c]void parse9( void * buf, uint8_t size ) {<br /><br />uint16_t * wsk = buf;<br /><br />lcd_cls();<br />lcd_str(&quot;znaki: &quot;);<br />lcd_char( wsk&#91;0&#93; );<br />lcd_char( wsk&#91;1&#93; );<br />lcd_locate( 1,0 );<br />lcd_str(&quot;size: &quot;);<br />lcd_int( size );<br />}[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 39 minutach ]</span></strong><br /><br />więc jak widzisz wszystko śmiga, gra i buczy ... dlatego prosiłem cię zrób najprostsze testy jednostkowe - zrób tak jak ja tutaj ... i sprawdź czy ci to działa - a jeśli nie to znaczy, że gdzieś babola robisz ale gdzie ? tego nie wiem po tym opisie .... przetestuj na dwóch prockach i pokaż swoje rezultaty<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 40 minutach ]</span></strong><br /><br />aha na zakończenie dodam, że testy prowadziłem na tej bibliotece ze sklepu a nie na jakichś swoich nowszych zmodyfikowanych wersjach tej biblioteki - bo niedługo ukaże się nowa wersja i będzie miała DUŻO lepsze pracy z transmisją binarną.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 kwi 2020, o 15:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-04-14T15:01:25+01:00</updated>
<published>2020-04-14T15:01:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226185#p226185</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226185#p226185"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226185#p226185"><![CDATA[
Dobrze, urządzenie, które nadaje ramki 9-bit i wiem co nadaje, dokładnie obejrzałem analizatorem Saleae. I takie same tj. 9-bitowe nadaję. Zresztą co widać na załączonym obrazku - 1 bit =52 usek, 2 bity  104 usek, 3 bity to  157 usek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 14 kwi 2020, o 15:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-04-14T14:37:51+01:00</updated>
<published>2020-04-14T14:37:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226183#p226183</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226183#p226183"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226183#p226183"><![CDATA[
No teraz to można popatrzeć na kod ... tylko na razie nie mam jak sprawdzić/potwierdzić - ale w międzyczasie zapytam bo pokazałeś tam na saleae czasy, zamiast pokazać wynik analizatora rs232 - dobrze zdekodował ramkę? jest poprawnie nadawana ? <br /><br />i nie mówię o dwóch zestawach - nawet na stykówce niech jeden procek nadaje<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />a jak będę miał chwilkę to taki kodzik mogę wrzucić na przetestowanie i zobaczymy co i jak<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 kwi 2020, o 14:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-04-14T13:29:23+01:00</updated>
<published>2020-04-14T13:29:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226179#p226179</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226179#p226179"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226179#p226179"><![CDATA[
Wysyłam, jak od samego początku piszę, tylko jedną ramkę. Oto ona, teraz to 0x0035:<br /><a href="https://obrazkiforum.atnel.pl/8366/b556b072253d2347679d2f12a1eba31b.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8366/b556b072253d2347679d2f12a1eba31b.png" alt="Obrazek" /></a><br /><br /><a href="https://obrazkiforum.atnel.pl/8366/250ba6c8571f9afb0326ec980ac36e5e.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8366/250ba6c8571f9afb0326ec980ac36e5e.png" alt="Obrazek" /></a><br /><br />Załączam jeszcze raz program testowy, ale już z powyrzucanymi wszystkimi dodatkowymi rzeczami, aby było prościej do analizy:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MK_MULTI_UART/mk_multi_uart.h&quot;<br /><br />#define SIZE_9BIT 32<br /><br />char rx0buf&#91;50&#93;;<br />uint16_t rx1buf&#91;SIZE_9BIT&#93;;<br /><br />void parsuj_uart0( void * buf, uint8_t size );<br />void parsuj_uart1( void * buf, uint8_t size );<br /><br /><br />int main( void ) {<br /><br />DDRA |= (1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7);// podświetlenie LCD<br /><br />uart_init();<br />uart_reg_callback( 0, rx0buf, parsuj_uart0 );<br /><br />uart_reg_callback_bin9( 1, rx1buf, 1, parsuj_uart1 );<br /><br />sei();<br /><br />while(1) {<br />UART_RX_EVENT();<br />}<br />}<br /><br />void parsuj_uart0( void * buf, uint8_t size ) {<br /><br />uint16_t *wsk;<br />wsk = rx1buf;<br /><br />for( uint8_t i= 0; i&lt;SIZE_9BIT; i++ ){wsk&#91;i&#93;=0; }<br /><br />uart_put_9bit(1, 0x0035);<br />}<br /><br />void parsuj_uart1( void * buf, uint8_t size ) {<br />uint16_t *wsk;<br />wsk = buf;<br /><br />uart_putint( 0, *wsk , 16 );<br />send_crlf(0);<br />uart_putint( 0, size , 10 );<br />send_crlf(0);<br />}[/syntax]<br />W wyniku otrzymuję size=1, a z bufora 0.<br /><a href="https://obrazkiforum.atnel.pl/8366/011428eda628cdedc558445b11b4a3a0.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8366/011428eda628cdedc558445b11b4a3a0.png" alt="Obrazek" /></a><br />Poprzednio pokazywałem też zawartość całego bufora odbiorczego, który przed odbiorem ramki zerowałem w całości, a po otrzymaniu jednego tylko znaku miałem w nim sieczkę, o dziwo zawsze taką samą.<br />PS. Mirek, rozumiem, drugi zestaw, ale moje urządzenie było już drugim urządzeniem, ale dobrze- zmontuję coś drugiego na testy.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 16 minutach ]</span></strong><br /><br />Dodam tylko, że prędkość transmisji to 19200, jakby co.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 14 kwi 2020, o 13:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-04-14T09:48:35+01:00</updated>
<published>2020-04-14T09:48:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226173#p226173</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226173#p226173"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226173#p226173"><![CDATA[
<div class="quotetitle">Nef.ID napisał(a):</div><div class="quotecontent"><br />mam u siebie ATmege1284, a nie ATmege1284P<br /></div><br />to po co ci inny procek - skoro ten też ma dwa UARTy ?<br /><br /><div class="quotetitle">Nef.ID napisał(a):</div><div class="quotecontent"><br />3. wysyłam ramki 9-bitowe do urządzenia, urządzenie rozumie, przesyła właściwe odpowiedzi (oglądam na analizatorze Saleae).<br /></div><br />zobacz jak nielogicznie piszesz i ciężko cię przez to zrozumieć - bo z tego pkt.3 wynika że niby ci wszystko działa<br /><br />a tutaj:<br /><div class="quotetitle">Nef.ID napisał(a):</div><div class="quotecontent"><br />. tak jak pisałem, nie umiem odczytać zarówno odpowiedzi z urządzenia<br /></div><br />no to o co chodzi ?<br /><br />Po pierwsze jak spojrzałem na kod który pokazałeś to złapałem się troszkę za głowę - no bo jak można sprowadzić testy jednostkowe do czegoś takiego ?<br /><br />Czy nie prościej napisać do TESTÓW najprostszy kod gdzie jeden procek będzie nadawał UWAGA! JEDNĄ i tylko JEDNĄ ramkę 9 bitową - a w drugim procku ją odbierać, czyli jedno słowo 16-bitowe ? No bo to co się dzieje u ciebie w tym parsowaniu .... to ... nie nie - to nie mam na tyle czasu żeby analizować tak dziwne rzeczy - tzn może nie dziwne ale nie mam czasu<br /><br />Zrób prosty kod jak pisałem wyżej, sprawdź Saleae czy ramka ładnie wychodzi na drucie, a w funkcji parsującej odbierz słowo i w zależności od konkretnej wartości zapalaj albo gaś diodę LED, nie potrzebny do takiego testu nawet drugi UART i już można mieć PODSTAWY opanowane w 5 sekund albo zgłosić jakiś konkretny problem na najprostszym kodzie. Wtedy będzie można coś pomóc - ok ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 kwi 2020, o 09:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-04-14T09:36:56+01:00</updated>
<published>2020-04-14T09:36:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226171#p226171</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226171#p226171"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226171#p226171"><![CDATA[
Dziękuję za odpowiedź,<br />1. oczywiście, że nie odbieram ramek z 9-bit terminalem, bo takiego nie mam i nawet nie mogę znaleźć.<br />2. mam drugie urządzenie, które wysyła te cholerne ramki, mam analizator Saleae i wszystko mogę podejrzeć.<br />3. wysyłam ramki 9-bitowe do urządzenia, urządzenie rozumie, przesyła właściwe odpowiedzi (oglądam na analizatorze Saleae).<br />4. mam u siebie ATmege1284, a nie ATmege1284P, ale to chyba nie stanowi (jeszcze sprawdzę czy mam pod ręką Atmege644P lub ATmege1584P, ale chyba nie).<br />5. tak jak pisałem, nie umiem odczytać zarówno odpowiedzi z urządzenia jak i jak i odpowiedzi gdy nadaję i odbieram (TXD2 do RXD2 bezpośrednio mostek).<br />6. gdzie tkwi mój błąd?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 14 kwi 2020, o 09:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-04-13T21:33:15+01:00</updated>
<published>2020-04-13T21:33:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226164#p226164</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226164#p226164"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226164#p226164"><![CDATA[
Ma tak być jak jest w bibliotece wszystko i nie zmieniaj bo wtedy narobisz sobie takiego bigosu - że ja na pewno nie pomogę bo jak?<br /><br />Biblioteka DOSKONALE działa dla ramek 9-bitowych no ale trzeba takie mieć i nie spodziewaj się że to odbierzesz albo zobaczysz poprawnie w terminalu bo jak ? Na PC nie ma obsługi ramek 9-bit - więc coś bardzo mocno przekombinowałeś<br /><br />zrób sobie dwa urządzenia tzn dwa procki i jeden niech do drugiego coś przesyła za pomocą 9-bit i będzie ci to ładnie śmigało. Albo weź sobie jednego procka z dwoma UART'ami np ATmega644P albo ATmega1284P i jednym UARTem gadaj sobie z drugim prockiem po 9-bit a drugim uartem wysyłaj sobie do terminala np wartości HEX odebranych ramek 9-bitowych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 kwi 2020, o 21:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-04-13T20:13:23+01:00</updated>
<published>2020-04-13T20:13:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226159#p226159</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226159#p226159"/>
<title type="html"><![CDATA[Re: MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226159#p226159"><![CDATA[
Chyba coś odkryłem w bibliotece:<br />[syntax=c]ISR( USART1_RX_vect ) {<br /><br />#if UART1_DATA_BITS == 9<br /><br />register TUART_BUF_8_16 tmp_head;<br />    //register uint16_t data;MIREK-USUWAM<br />register uint16_t dataH, dataL;//MIREK-DOKLADAM<br /><br />    uarttab&#91;1&#93;-&gt;bin = 1;// wymuszenie obsługi binarnej<br /><br />    dataH = (UCSR1B &amp; (1&lt;&lt;RXB81)) &gt; 0;<br />    dataL = UDR1; //pobieramy natychmiast bajt danych z bufora sprzętowego[/syntax]<br />Linia dataH =(UCSR1B &amp; (1&lt;&lt;RXB81)) &gt; 0; Co to jest? To chyba nie może działać.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />To chyba tak ma być, bo w sumie w dataH jest jeden bit, 0 lub 1.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 13 kwi 2020, o 20:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nef.ID]]></name></author>
<updated>2020-04-13T15:13:48+01:00</updated>
<published>2020-04-13T15:13:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226140#p226140</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226140#p226140"/>
<title type="html"><![CDATA[MK_MULTI_UART - odbieranie binarne z 9-bitami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23018&amp;p=226140#p226140"><![CDATA[
Witam,<br />nie mogę poradzić sobie z odbiorem binarnym 9-bitów.<br />Układ:<br />zestaw z Atmega1284,<br />UART0 8,n,1,9600 -&gt; komunikacja z terminalem<br />UART1 9,n,1,9600 -&gt; komunikacja z urządzeniem<br /><br />Dla testów podłączyłem TXD2 z RXD2 (pin PD2 z PD3). Wysyłam jeden znak i chcę go odebrać.<br /><br />Jak wysyłanie jest OK, to z odbieraniem mam problem, nie umiem tego sparsować czy co.<br />Zrobiłem taki eksperyment:<br />Dla testów przed wysłaniem znaku zeruję bufor odbiorczy.<br />Po nadaniu sprawdzam zawartość tego bufora, a w nim pełno śmieci.<br /><a href="https://obrazkiforum.atnel.pl/8366/65a91cf2f82a6618950980abd20228ab.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8366/65a91cf2f82a6618950980abd20228ab.png" alt="Obrazek" /></a><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MK_MULTI_UART/mk_multi_uart.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />char rx0buf&#91;50&#93;;<br />uint16_t rx1buf&#91;16&#93;;<br />uint8_t rx2buf&#91;50&#93;;<br /><br />void parsuj_uart0( void * buf, uint8_t size );<br />void parsuj_uart1( void * buf, uint8_t size );<br />void parsuj_uart2( void * buf, uint8_t size );<br /><br />int main( void ) {<br /><br />DDRA |= (1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7);// podświetlenie LCD<br /><br />// inicjalizacja UART<br />uart_init();<br />uart_reg_callback( 0, rx0buf, parsuj_uart0 );<br />//uart_echo( 0, 1 );<br /><br />uart_reg_callback_bin9( 1, rx1buf, 1, parsuj_uart1 );<br />//uart_echo( 1, 1 );<br /><br />//uart_reg_callback_bin( 1, rx2buf, 1, parsuj_uart2 );<br />//uart_echo( 1, 1 );<br /><br />sei();<br /><br />//tr_intro( 0 );<br />lcd_init();<br /><br />while(1) {<br />UART_RX_EVENT();<br />}<br />}<br /><br />void parsuj_uart0( void * buf, uint8_t size ) {<br /><br />uart_flush_bin(1);<br /><br />//zerowanie bufora odbiorczego UART2<br />uint8_t *wsk2;<br />wsk2 = rx2buf;<br />for( uint8_t i= 0; i&lt;16; i++ ){wsk2&#91;i&#93;=0; }<br /><br />lcd_cls();<br />lcd_str( buf);<br /><br />//uart_put_9bit(1, 0x00FF);<br />uart_put_9bit(1, 0x00EE);<br />//uart_put_9bit(1, 0x00AA);<br /><br />//uart_putc( 1, 0x15);<br />//uart_putc( 1, 0x28);<br />//uart_putc( 1, 0xff);<br /><br />}<br /><br />void parsuj_uart1( void * buf, uint8_t size ) {<br />//dla BIN 9,n,9600<br />static uint8_t licz;<br />uint16_t *wsk;<br /><br />wsk = buf;<br />for(uint8_t i=0; i&lt;16; i++){<br />if (wsk&#91;i&#93;&gt;0){<br />uart_putint( 0, i , 10 );<br />uart_putc(0, ' ');<br />uart_putint( 0, wsk&#91;i&#93; , 16 );<br />send_crlf(0);<br />}<br />}<br />//uart_get_bin9(1,buf,1);<br />//wsk= (uint16_t *)buf;<br />//uart_putint( 0, *wsk , 16 );<br />//send_crlf(0);<br /><br />lcd_locate( 1,0 );<br />lcd_int( licz );<br />licz++;<br />}<br /><br />void parsuj_uart2( void * buf, uint8_t size ) {<br />//dla BIN 8,n,9600<br />//RXD2 polaczone z TXD2<br />//wchodzi po kazdym otrzymanym znaku, bo size=1<br />//0 15<br />//15<br />//0 28<br />//28<br />//0 FF<br />//FF<br />static uint8_t licz;<br />uint8_t *wsk2;<br />wsk2= buf;<br />//sprawdzenie<br />send_crlf(0);<br />for(uint8_t i=0;i&lt;50;i++){<br />if (wsk2&#91;i&#93;&gt;0){<br />uart_putint( 0, i , 10 );<br />uart_putc(0, ' ');<br />uart_putint( 0, wsk2&#91;i&#93; , 16 );<br />send_crlf(0);<br />}<br />}<br />//<br />wsk2= (uint8_t *)buf;<br />uart_putint( 0, *wsk2 , 16 );<br /><br />licz++;<br />lcd_cls();<br />lcd_int( licz );<br />}[/syntax]<br />Dodam, że jedyną zmianę jaką zrobiłem w bibliotece z uwagi na bugi, to:<br />[syntax=c]ISR( USART1_RX_vect ) {<br /><br />#if UART1_DATA_BITS == 9<br /><br />register TUART_BUF_8_16 tmp_head;<br />    //register uint16_t data;MIREK-USUWAM<br />register uint16_t dataH, dataL;//MIREK-DOKLADAM[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8366">Nef.ID</a> — 13 kwi 2020, o 15:13</p><hr />
]]></content>
</entry>
</feed>