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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-11-19T11:34:44+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1811&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-19T11:34:44+01:00</updated>
<published>2012-11-19T11:34:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19114#p19114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19114#p19114"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19114#p19114"><![CDATA[
<div class="quotetitle">Sonix napisał(a):</div><div class="quotecontent"><br />A czy nie można zrobić tego bardziej przejrzyście?<br />Zamiast pamiętać że UBRR1 to 115200bps a UBRR to 9600bps, może prościej napisać funkcję tak by przekazywać jej zadaną prędkość i tyle?<br /><br />Myślę że wiele osób nie miałoby wtedy wątpliwości gdyby inicjalizacja wyglądała tak:<br /><br />[syntax=c]<br />USART_Init ( 115200 );<br />[/syntax]<br /><br />Oczywiście tak sobie 'gdybam' bo ja nadal z uporem maniaka piszę w asemblerze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />Ależ można, jak ktoś się uprze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tyle że wtedy trzeba te obliczenia:<br /><br />F_CPU/16/UART_BAUD1-1<br /><br />zrobić w kodzie programu wewnątrz tej funkcji, a to zabierze troszkę pamięci FLASH <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... choć z drugiej strony to przecież nie jest wielki problem. Ale ogólnie mówiąc - najczęściej stosuje się jedną prędkość, oszczędność każdy ma zakodowaną podświadomie - stąd częste rozwiązanie tego typu, że obliczenia te zlecamy do wykonania preprocesorowi a do funkcji idzie argument w postaci stałej __UBRR.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 lis 2012, o 11:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sonix]]></name></author>
<updated>2012-11-19T10:41:57+01:00</updated>
<published>2012-11-19T10:41:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19113#p19113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19113#p19113"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19113#p19113"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Zgred napisał(a):</div><div class="quotecontent"> Właśnie przy okazji, to chciałem sobie napisać kod który pozwoli mikroswitchom zmieniać prędkośc, a le SUn mi napisał że  ta zmiana prędkości wymaga resetu,<br /></div><br /><br />Tutaj się z kolegą Sunem nie zgodzę, a może tak jest w innych prockach np PIC'ach czy jeszcze innych - tego nie wiem, może się Sun pomylił niechcący. Ale na 100% w AVR'ach nie trzeba resetować procka żeby zmienić prędkość &quot;w locie&quot;. Proszę bardzo na szybko na kolanie skleciłem kawałek kodu i możesz także sam sobie sprawdzić, że to zadziała bez resetu procka:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;MK_USART/mkuart.h&quot;<br /><br />#define UART_BAUD1 9600// tu definiujemy interesującą nas prędkość<br />#define __UBRR1 F_CPU/16/UART_BAUD1-1  // obliczamy UBRR dla U2X=0<br /><br />int main(void) {<br /><br />DDRA |= (1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7);<br />lcd_init();<br />lcd_str(&quot;start...&quot;);<br /><br />USART_Init( __UBRR );<br /><br />sei();<br /><br />    while(1) {<br /><br />    lcd_locate(1,0);<br />    lcd_str(&quot;baud: 115200&quot;);<br />    USART_Init( __UBRR );<br />    uart_puts(&quot;ala i as 115200\r\n&quot;);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br /><br />    lcd_locate(1,0);<br />    lcd_str(&quot;baud: 9600   &quot;);<br />    USART_Init( __UBRR1 );<br />    uart_puts(&quot;bolek i lolek 9600\r\n&quot;);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br /><br />    }<br /><br />}[/syntax]<br /><br />oczywiście pierwszy __UBRR jest w pliku *.h standardowo i tam ma go ustawionego na 115200 co widać zresztą z kodu programu. Każdy może sobie to zrobić i sprawdzić. <br /><br />tzn odpalasz sobie np terminal na 9600 i czekasz - i co jakiś czas wpadnie ci PTASZEK gdy procek będzie nadawał na 115200, ale gdy przełączy się na 9600 to wpadnie stosowny napis jak w kodzie.<br /><br />I vice versa - gdy odpalisz terminal na 115200</div><br /><br />A czy nie można zrobić tego bardziej przejrzyście?<br />Zamiast pamiętać że UBRR1 to 115200bps a UBRR to 9600bps, może prościej napisać funkcję tak by przekazywać jej zadaną prędkość i tyle?<br /><br />Myślę że wiele osób nie miałoby wtedy wątpliwości gdyby inicjalizacja wyglądała tak:<br /><br />[syntax=c]<br />USART_Init ( 115200 );<br />[/syntax]<br /><br />Oczywiście tak sobie 'gdybam' bo ja nadal z uporem maniaka piszę w asemblerze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=127">Sonix</a> — 19 lis 2012, o 10:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-11-18T17:09:22+01:00</updated>
<published>2012-11-18T17:09:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19063#p19063</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19063#p19063"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19063#p19063"><![CDATA[
Gwyn możesz sobie zrobić ekranową w hmm.,...avt mają macaki do 128x64<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 18 lis 2012, o 17:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-11-18T16:47:31+01:00</updated>
<published>2012-11-18T16:47:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19062#p19062</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19062#p19062"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19062#p19062"><![CDATA[
<div class="quotetitle">GwynBleidD napisał(a):</div><div class="quotecontent"><br />No mnie się przydało np w prostym projekcie terminala RS232. Czasem zachodzi potrzeba podsłuchania co się dzieje na terminalu w urządzeniu, gdzie trudno się dostać z komputerem, więc stworzyłem sobie taki mini snifferek RS232: wyświetlacz KS0108 + M8 i wszystko się ładnie wyświetla <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Przydałaby się możliwość nadawania, ale nie dorwałem do tej pory jakiejś ciekawej klawiaturki małej pod to...<br /></div><br /><br />W kasach fiskalnych są fajne klawiatury, czasem można dorwać jakąś uszkodzoną. Ewentualnie zastosuj zbliżeniową na kontrolerach atmela, wytrawisz sobie jaką chcesz klawiaturę.<br /><br />PS. Motyw z wykrywaniem prędkości super <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Bez specjalnego konfigurowania łatwo wykryć jaką prędkość mamy na terminalu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<p>Statystyki: Napisane przez Gość — 18 lis 2012, o 16:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-18T13:39:15+01:00</updated>
<published>2012-11-18T13:39:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19051#p19051</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19051#p19051"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19051#p19051"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />Sam bym chciał wiedzieć do czego się to może przydać?, taka zmiana w locie prędkości?, rozumiem, możliwość zmiany w opcjach programu tj, gdzieś tam mamy jakieś menu serwisowe i tam zmieniamy, ale po co w locie?<br /></div><br /><br />No bardziej mam tu na myśli właśnie auto-dopasowywanie się do nadawcy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... czyli wykrywania prędkości i dostosowywania się do niej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lis 2012, o 13:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-11-18T13:31:46+01:00</updated>
<published>2012-11-18T13:31:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19049#p19049</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19049#p19049"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19049#p19049"><![CDATA[
Sam bym chciał wiedzieć do czego się to może przydać?, taka zmiana w locie prędkości?, rozumiem, możliwość zmiany w opcjach programu tj, gdzieś tam mamy jakieś menu serwisowe i tam zmieniamy, ale po co w locie?<p>Statystyki: Napisane przez Gość — 18 lis 2012, o 13:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-18T13:03:39+01:00</updated>
<published>2012-11-18T13:03:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19045#p19045</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19045#p19045"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19045#p19045"><![CDATA[
Sun przestań <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />a ta opcja Auto-Baud Support .... baaaardzo mi się podoba, żaden AVR'ek jej nie ma niestety <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> a czasem właśnie przydałoby się. Owszem można to zrobić programowo - ale hmmm dobrze też że w niektórych prockach producent wspomaga to sprzętowo - nawet nie wiedziałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... więc dzięki za info. Sam widzisz - jak pożyteczna była ta pomyłka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lis 2012, o 13:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-11-18T12:15:43+01:00</updated>
<published>2012-11-18T12:15:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19043#p19043</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19043#p19043"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19043#p19043"><![CDATA[
w  każdym większym bo wiadomo mikrusy odpadają  z racji małych zasobów , podobnie maja MSP  z texasa , bardzo przydatne czasami jak nie znamy <br />szybkości transmisji na uarcie.  <br /><br /><a href="http://img811.imageshack.us/i/przechwytywanieks.jpg/"  class="postlink"><img src="http://img811.imageshack.us/img811/631/przechwytywanieks.jpg" alt="Obrazek" /></a><br /><br />Warto też wspomnieć że większość PIC ma zaimplementowane w module UART sprzętowe <br />wsparcie dla IRDA i LIN ...<br /><br /><br />Tak, ale mimo wszystko powinienem pamiętać i sprawdzić --- jak widać niestety pamieć mam dobrą ale krótka  --&gt; całe 4KB  (jak Tiny <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />)<br />Dlatego mimo wszystko wypada przeprosić ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 18 lis 2012, o 12:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-18T11:55:27+01:00</updated>
<published>2012-11-18T11:55:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19042#p19042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19042#p19042"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19042#p19042"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />hmmm....   Na PIC Mirku nawet nie trzeba ustawiać jest automat nasłuchujący na 55h który <br />umożliwia automatyczne dostosowanie baudrate do urządzenia nadającego.<br /></div><br />Tak z ciekawości zapytam - w każdym PIC'ku ? ... bo że tak powiem &quot;o żesz w mordkę&quot; ale fajny ten automat <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Więc weź mi tu takich niusów nie opowiadaj bo jeszcze zacznę miziać PIC'ki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <em>(i to mi się podoba w takich dyskusjach kulturalnych - bo człowiek przy okazji dowie się nowych rzeczy i przy okazji wszyscy skorzystają)</em><br /><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />ale chyba faktycznie się machnąłem z czymś... na avr nigdy tego nie potrzebowałem<br />ostatni raz cos takiego robiłem na 51'  i to atmelowskich no i chyba dlatego stwierdziłem ze na AVR <br />będzie tak samo ... <br /><br />Za omyłkę przepraszam...<br /></div><br /><br />Oj tam oj tam - nie ma za co przepraszać. Przyznam szczerze, że mi wydawało się wcześniej, że nie trzeba resetować, ale po tym poście kolegi Zgred aż sam na kolanie napisałem kawałek kodu i go przetestowałem żeby się upewnić, zanim odpisałem i sprostowałem posta <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... Człowiek nie musi wszystkiego zapamiętać. A jeszcze taki omnibus procesorowy jak ty .... toż to żadna ujma. Ja na razie tylko AVR'ki tnę a też wielu rzeczy nie przypominam sobie tak w lot - muszę zaglądać tu i tam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lis 2012, o 11:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-11-18T11:03:14+01:00</updated>
<published>2012-11-18T11:03:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19041#p19041</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19041#p19041"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19041#p19041"><![CDATA[
hmmm....   Na PIC Mirku nawet nie trzeba ustawiać jest automat nasłuchujący na 55h który <br />umożliwia automatyczne dostosowanie baudrate do urządzenia nadającego.<br />ale chyba faktycznie się machnąłem z czymś... na avr nigdy tego nie potrzebowałem<br />ostatni raz cos takiego robiłem na 51'  i to atmelowskich no i chyba dlatego stwierdziłem ze na AVR <br />będzie tak samo ... <br /><br />Za omyłkę przepraszam...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 18 lis 2012, o 11:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-11-18T07:02:52+01:00</updated>
<published>2012-11-18T07:02:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19039#p19039</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19039#p19039"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19039#p19039"><![CDATA[
Bardzo dziękuję Myślę,że temat Inicjalizacji USARTA (jak dla mnie) został wyjaśniony.Czekam na pojawienie się kolejnych problemów. Zachęcam wszystkich którym cokolwiek nie działa lub czegoś nie rozumieją do kontynuowania tego wątku. Jak widać odpowiedzi - rozwiązania problemów można się spodziewać nawet w sobotnią noc:))). Panie Mirku jeszcze raz serdecznie dziękuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 18 lis 2012, o 07:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-17T23:27:51+01:00</updated>
<published>2012-11-17T23:27:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19037#p19037</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19037#p19037"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19037#p19037"><![CDATA[
<div class="quotetitle">Zgred napisał(a):</div><div class="quotecontent"><br />Właśnie przy okazji, to chciałem sobie napisać kod który pozwoli mikroswitchom zmieniać prędkośc, a le SUn mi napisał że  ta zmiana prędkości wymaga resetu,<br /></div><br /><br />Tutaj się z kolegą Sunem nie zgodzę, a może tak jest w innych prockach np PIC'ach czy jeszcze innych - tego nie wiem, może się Sun pomylił niechcący. Ale na 100% w AVR'ach nie trzeba resetować procka żeby zmienić prędkość &quot;w locie&quot;. Proszę bardzo na szybko na kolanie skleciłem kawałek kodu i możesz także sam sobie sprawdzić, że to zadziała bez resetu procka:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;MK_USART/mkuart.h&quot;<br /><br />#define UART_BAUD1 9600// tu definiujemy interesującą nas prędkość<br />#define __UBRR1 F_CPU/16/UART_BAUD1-1  // obliczamy UBRR dla U2X=0<br /><br />int main(void) {<br /><br />DDRA |= (1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7);<br />lcd_init();<br />lcd_str(&quot;start...&quot;);<br /><br />USART_Init( __UBRR );<br /><br />sei();<br /><br />    while(1) {<br /><br />    lcd_locate(1,0);<br />    lcd_str(&quot;baud: 115200&quot;);<br />    USART_Init( __UBRR );<br />    uart_puts(&quot;ala i as 115200\r\n&quot;);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br /><br />    lcd_locate(1,0);<br />    lcd_str(&quot;baud: 9600   &quot;);<br />    USART_Init( __UBRR1 );<br />    uart_puts(&quot;bolek i lolek 9600\r\n&quot;);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br />    _delay_ms(2000);<br /><br />    }<br /><br />}[/syntax]<br /><br />oczywiście pierwszy __UBRR jest w pliku *.h standardowo i tam ma go ustawionego na 115200 co widać zresztą z kodu programu. Każdy może sobie to zrobić i sprawdzić. <br /><br />tzn odpalasz sobie np terminal na 9600 i czekasz - i co jakiś czas wpadnie ci PTASZEK gdy procek będzie nadawał na 115200, ale gdy przełączy się na 9600 to wpadnie stosowny napis jak w kodzie.<br /><br />I vice versa - gdy odpalisz terminal na 115200<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lis 2012, o 23:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-11-17T22:51:37+01:00</updated>
<published>2012-11-17T22:51:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19034#p19034</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19034#p19034"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19034#p19034"><![CDATA[
Jak dla mnie to wszystko jasne, właśnie dlatego,ze nie mogłem tego zrozumieć, zacząłem kombinować z kodem i wpisywać wartości __UBRR bezpośrednio do funkcji, już w pliku main. Zadziałało więc ta poprzednia operacja tym bardziej stała się niezrozumiała, stąd moje pytanie, poza tym Sun mi podpowiedział ,ze to przekazanie argumentu(nie skojarzyłem). Tak jak pisałem, nawet jeśli teoria jest ładnie opisana (tutaj szczerze mówiąc musiałem się posiłkować książką Grębosza), to już szczególnie początkujący może mieć problem z jej praktycznym zastosowaniem.Ale wielkie dzięki za to wyjaśnienie, teraz przynajmniej patrze ze świadomością na tę funkcje, która zresztą jest niemal identyczna w nocie Atmegi. Właśnie przy okazji, to chciałem sobie napisać kod który pozwoli mikroswitchom zmieniać prędkośc, a le SUn mi napisał że  ta zmiana prędkości wymaga resetu, więc musiałbym taka zmianę zapisać w pamięci, która się nie wykasuje. I tu oczywiście na razie mam problem, bo nawet nie wiem czy mogę mieć do takiej pamięci dostęp, ale to osobny temat:)))<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 17 lis 2012, o 22:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-17T22:33:35+01:00</updated>
<published>2012-11-17T22:33:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19033#p19033</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19033#p19033"/>
<title type="html"><![CDATA[Re: Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19033#p19033"><![CDATA[
<div class="quotetitle">Zgred napisał(a):</div><div class="quotecontent"><br />Pytanie moje jest takie po co ta figura? co nam daje? czy przed czymś chroni, czy coś zabezpiecza? i czy nie można by tego załatwić inaczej? jak rozumiem nie jest to jedyny sposób przesyłania argumentów do funkcji.<br /></div><br /><br />Tzn wybacz, mi jeśli źle zrozumiałem pytanie i nie odpowiem ściśle na temat, ale w razie czego dopytaj jeszcze ok? Ja powiem szczerze, że bardzo się cieszę, że takie pytania padają. Kurczę a wiem przecież jak wiele osób hmmm &quot;obawia&quot; się je zadawać na forum - nie wiem czemu - ja bym od razu pytał - tak jak ty tutaj <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />otóż mamy sobie funkcję <br /><br />USART_Init( uint16_t baud );<br /><br />w zasadzie, jeśli używamy TYLKO jednej prędkości RS232 w projekcie to można się zgodzić, że zupełnie bezużyteczne jest w ogóle pisanie funkcji z argumentem. No bo po co on ? skoro i tak wyliczamy go jako stałą w pliku *.h jak słusznie zauważyłeś. Toż można by ją napisać tak:<br /><br />[syntax=c]void USART_Init( void ) {<br /><br />/* Ustawienie prędkości */<br />UBRRH = (uint8_t)(__UBRR&gt;&gt;8);  // &lt;------ tu dałem __UBRR<br />UBRRL = (uint8_t)__UBRR;          // &lt;------ tu dałem __UBRR<br /><br />/* Załączenie nadajnika I odbiornika */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Ustawienie format ramki: 8bitów danych, 1 bit stopu */<br />UCSRC = (1&lt;&lt;URSEL)|(3&lt;&lt;UCSZ0);<br />UCSRB |= (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN)|(1&lt;&lt;RXCIE);<br />}[/syntax]<br /><br />prawda ? proszę bardzo argument zniknął i __UBRR wykorzystaliśmy w środku. I oczywiście tak można spokojnie pisać. Ale ja hmmm zwykle piszę tak jak pokazałem to w książce z uwagi na fakt, że czasem choć rzadko potrzebuję w trakcie programu (w trakcie jego działania) dynamicznie (w locie) zmienić prędkość RS232...... Więc jak mam tego dokonać mają taką funkcję jak wyżej hmmm? <br /><br />i dlatego piszę ją w takiej postaci żebym mógł w razie czego jednak w locie zmienić sobie tę prędkość wygodnie, bo np utworzę sobie kilka takich definicji:<br /><br />[syntax=c]#define UART_BAUD1 115200<br />#define __UBRR1 (F_CPU/16/UART_BAUD1-1)  <br /><br />#define UART_BAUD2 9600<br />#define __UBRR2 (F_CPU/16/UART_BAUD2-1)  <br /><br />#define UART_BAUD3 19200<br />#define __UBRR3 (F_CPU/16/UART_BAUD3-1)  <br /><br />#define UART_BAUD4 28800<br />#define __UBRR4 (F_CPU/16/UART_BAUD4-1)  [/syntax]<br /><br />a później w kodzie programu w jego różnych miejscach, gdy nagle potrzebuję zmienić prędkość na jedną z tych, które sobie zdefiniowałem to wpisuję:<br /><br />[syntax=c]USART_Init( __UBRR1 );[/syntax]<br /><br />albo:<br /><br />[syntax=c]USART_Init( __UBRR2 );<br />// USART_Init( __UBRR3 );<br />// USART_Init( __UBRR4 );[/syntax]<br /><br />bo tak jest mi wygodniej i bardziej czytelnie w kodzie dla oka, za każdym razem mogę sobie łatwo wywołać inicjalizację UART'a z inną prędkością. Widzę bowiem w kodzie nazwę funkcji init  więc wiem że inicjalizuję UART i na dodatek ładnie widzę argument związany z jedną z predefiniowanych prędkości. Ale przecież nic nie stoi na przeszkodzie aby ją wywołał np z argumentem obliczonym w locie albo odebranym przez UART z jakiegoś innego programu na PC czy innego urządzenia<br /><br />[syntax=c]uint16_t my_baud = 72;<br /><br />USART_Init( my_baud );[/syntax]<br /><br />reasumując - nie ma to nic wspólnego z jakimś zabezpieczaniem (a pytasz o to), pewnie, że jest tysiąc różnych sposobów na przekazanie takiego argumentu co pokazałem wyżej (można nawet bez argumentu). Zastanawiasz się też czy jest to jedyny sposób przesyłania argumentów do funkcji - no pewnie, że nie - ale nie za bardzo rozumiem czego dotyczy to pytanie, bo przecież można to przekazać nawet przez wskaźnik <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tylko po co w tak prostym przypadku - jednak może się zdarzyć, że np będziesz pobierał wartości argumentów z jakiejś tablicy - wtedy można przez wskaźnik <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />czy te wyjaśnienia chociaż troszkę pomogły ? jeśli nie to dręcz mnie dalej ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lis 2012, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-11-17T21:44:56+01:00</updated>
<published>2012-11-17T21:44:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19030#p19030</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19030#p19030"/>
<title type="html"><![CDATA[Problemy z podstawami języka C/C++]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1811&amp;p=19030#p19030"><![CDATA[
Witam wszytskich, postanowiłem założyć taki wątek po indywidualnych skypowych oraz czatowych rozmowach gdyż okazało się że osoby zaczynające swoja przygodę z mikrokontrolerami mogą mieć problemy podobne do moich, a jednocześnie trywialne i może nie warto zaśmiecać nimi forum. Chodzi o to ,że jeśli coś nie działa to zwykle przyczyną może być niezrozumienie elementarnych rzeczy. Inna rzeczą jest o czymś czytać i nawet to rozumieć, a inną jest to coś zastosować w kodzie, albo skojarzyć albo odgadnąć dlaczego tak się to robi, a nie inaczej. Mam nadzieje że znajdą się chętni, którzy w kilku słowach rozjaśnią te trywialne problemy, które się tu mogą pojawić.<br />Po tym przydługim wstępie przedstawiam coś czego do końca nie rozumiem, i co mi nie daje spokoju, chociaż nie przeszkadza Iść do przodu:<br /><br />Chodzi o inicjalizację USART-a czyli przykład 07 z niebieskiej książki:<br />W pliku <strong>mkuart.h</strong> mamy powołana funkcje publiczną:<br /><strong>void USART_Init( uint16_t baud );</strong><br />natomiast w pliku main.c przy inicjlizacji USARTA następuje podmiana <strong>uint16_tbaud</strong> na <strong>__UBRR</strong> ,która to wielkość została zdefiniowana a nawet wyliczonaw pliku <strong>mkuart.h</strong> <br />Ustaliłem,że ma tu miejsce tzw przekazywanie argumentu (prawdopodobnie ) przez wartość.<br />Pytanie moje jest takie po co ta figura? co nam daje? czy przed czymś chroni, czy coś zabezpiecza? i czy nie można by tego załatwić inaczej? jak rozumiem nie jest to jedyny sposób przesyłania argumentów do funkcji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 17 lis 2012, o 21:44</p><hr />
]]></content>
</entry>
</feed>