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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2021-04-04T14:27:55+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=23704&amp;mode</id>
<entry>
<author><name><![CDATA[fofex]]></name></author>
<updated>2021-04-04T14:27:55+01:00</updated>
<published>2021-04-04T14:27:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23704&amp;p=231809#p231809</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23704&amp;p=231809#p231809"/>
<title type="html"><![CDATA[Re: C, AVR, UART, TRANSMISJA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23704&amp;p=231809#p231809"><![CDATA[
<div class="quotetitle">edwardkraweznik napisał(a):</div><div class="quotecontent"><br />        char * ppp = &quot;ppp123&quot;;<br /> <br />        for(int i = 0; i&lt;sizeof(ppp); i++)<br /></div><br />sizeof wskaźnika zwraca wielkość zmiennej wskaźnikowej. W przypadku AVR wskaźniki są przeważnie 16 bitowe<br /><div class="quotetitle">edwardkraweznik napisał(a):</div><div class="quotecontent"><br />        char ppp[] = &quot;ppp123 ala ma kota...&quot;;<br /> <br />        for(int i = 0; i&lt;sizeof(ppp); i++)<br /></div><br />sizeof na tablicy zwraca wielkość tablicy, w tym przypadku jest to długość stringu łącznie z końcowym '\0'. Wypychając string na UART zwykle nie chcemy wysyłać końcowego 0 a więc albo trzeba wysyłać &quot;sizeof ppp - 1&quot; znaków, albo skorzystać z funkcji strlen.<br /><div class="quotetitle">edwardkraweznik napisał(a):</div><div class="quotecontent"><br />1. Czy rozwiązanie jak wyżej, wysyłanie znak po znaku w pętli jest prawidłowe ? może inaczej powinienem to zrobić ?<br /></div><br />W zasadzie tak, z tym że pęta busy wait blokuje program na czas transmisji.<br /><div class="quotetitle">edwardkraweznik napisał(a):</div><div class="quotecontent"><br />3. Co się stanie jeśli tych danych nie odbieram? mikrokontrolery mają jakiś timeout i wywalają te dane? co dokładnie się z tym dzieje?<br /></div><br />Nic się nie dzieje, znak zostanie przetransmitowany niezależnie czy odbierzesz czy nie bez informacji zwrotnej. Jak chcesz mieć informację czy timeout musisz sobie zaimplementować swoją kontrolę przepływu<br /><div class="quotetitle">edwardkraweznik napisał(a):</div><div class="quotecontent"><br />void cum_pin_snd(volatile uint8_t *pin, uint8_t pinnr)<br />{<br />    if ( PINB &amp; (1 &lt;&lt; 0))<br /></div><br />Przypuszczam że miało być<br />[syntax=c]void cum_pin_snd(volatile uint8_t *pin, uint8_t pinnr)<br />{<br />    if ( *pin &amp; (1 &lt;&lt; pinnr))[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21072">fofex</a> — 4 kwi 2021, o 14:27</p><hr />
]]></content>
</entry>
</feed>