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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-08-26T14:58:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8281&amp;mode</id>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-08-26T14:58:48+01:00</updated>
<published>2014-08-26T14:58:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92973#p92973</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92973#p92973"/>
<title type="html"><![CDATA[Re: bufor cykliczny, dziwne maskowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92973#p92973"><![CDATA[
Odniosę się jedynie do drugiego pytania (pierwsze zostało już wyjaśnione).<br />Do pełnego odblokowania przerwania od odbioru USART trzeba dodatkowo ustawić odpowiedni bit w rejestrze UCSRB oraz włączyć układ odbiorczy jako samo źródło przerwania:<br /><br />[syntax=c]// Konfiguracja USART<br />UCSRB |= 1&lt;&lt;RXEN | 1&lt;&lt;RXCIE;<br />sei();[/syntax]<br />W przypadku bardziej rozbudowanych uC posiadających dwa układy USART symboliczne nazwy mogą się różnić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 26 sie 2014, o 14:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-08-26T09:57:48+01:00</updated>
<published>2014-08-26T09:57:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92918#p92918</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92918#p92918"/>
<title type="html"><![CDATA[Re: bufor cykliczny, dziwne maskowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92918#p92918"><![CDATA[
<div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent"><br />musi być to potęga dwójki, ale po co to tak ograniczać?<br /></div><br />Jak już zauważyłeś, dla potęg dwójki maskowanie ma taki sam efekt jak dzielenie modulo. Jednak dzielenie jest znacznie kosztowniejsze pod względem zajętości mocy obliczeniowej i pamięci niż maskowanie. Tak więc ten prosty trik pozwala na przyspieszenie i zmniejszenie programu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 26 sie 2014, o 09:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2014-08-26T00:43:10+01:00</updated>
<published>2014-08-26T00:43:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92893#p92893</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92893#p92893"/>
<title type="html"><![CDATA[bufor cykliczny, dziwne maskowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8281&amp;p=92893#p92893"><![CDATA[
Mam pytanie do kodu z książki, chodzi mi o miejsce gdzie po raz pierwszy opisywany jest bufor cykliczny.<br />W definicji preprocesora Mirek pozwala ustawić wielkość bufora (akurat jest tam 32 ale rozumiem że równie wygodnie powinno dać się wpisać co innego?[także różnego od 2^n])<br /><br />Niepokoją mnie liniki oznaczone jako 11 i 6. Jest tam nałożone modulo na wartość wpisywaną do head lub tail aby stworzyć cykliczność bufora.<br /><br />problem w tym że zamiast takiego zapisu (wydaje mi się że tak spełniało by oczekiwania , może coś pokręciłem?):<br />   (...)=(...) % UART_RX_BUF_SIZE<br /><br />jest taki z maską:<br /> (...)=(...)&amp;UART_RX_BUF_MASK<br /><br />z definicji preprocesora: UART_RX_BUF_MASK = UART_RX_BUF_SIZE - 1 = 31 = 0b11111<br />0b11111 akurat w tym wypadku będzie działał prawidłowo ale dla innej wielkości bufora np 9, UART_RX_BUF_MASK zostanie obliczone jako 0b1000 i przy próbie wpisania 9 otrzymamy 8 a nie zero.<br /><br />Gdzie jest mój błąd w rozumowaniu?<br />EDIT: teraz widze że Mirek zaznaczył że musi być to potęga dwójki, ale po co to tak ograniczać?<br /><br />Drugie pytanie: Co trzeba jeszcze zrobić aby odblokować przerwanie USART_RXC oprócz dodania makra sei();?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 26 sie 2014, o 00:43</p><hr />
]]></content>
</entry>
</feed>