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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-14T09:35:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=8446&amp;mode</id>
<entry>
<author><name><![CDATA[misiulu]]></name></author>
<updated>2014-09-14T09:35:54+01:00</updated>
<published>2014-09-14T09:35:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95402#p95402</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95402#p95402"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95402#p95402"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Ustawiłem PD2 i 3 na stan niski, dobrze kombinuję???<br /></div><br />Można to dodać, ale nie tu leży problem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Mianowicie w twoim warunku w pętli while(1)<br />[syntax=c]if( !(PIND &amp; (1&lt;&lt;PD0)) ) PORTD |= (1&lt;&lt;PD2);<br />     else PORTD |= (1&lt;&lt;PD3); // (6)[/syntax]<br />W tym warunku po przyciśnięciu Przycisku na PD0 zapali Ci się dioda podłączona na PD2. Jeżeli przycisk niewciśnięty to zapali Ci się dioda na PD3. Problem jest, że po przyciśnięciu raz przycisku od uruchomienia programu zapalą Ci się obie diody, ale nigdzie w programie nie są one gaszone. Także według mnie trzeba by dodać jeszcze kod na gaszenie diod:<br />[syntax=c]if( !(PIND &amp; (1&lt;&lt;PD0)) ) { //Gdy wciśniemy przycisk<br />     PORTD |= (1&lt;&lt;PD2); //Zapal diode PD2<br />     //Tutaj kod aby zgasić w tym samym momencie diodę PD3<br />} else { //Gdy przycisk puszczony<br />     PORTD |= (1&lt;&lt;PD3); // (6) //Zapal diodę PD3<br />     //Tutaj kod aby zgasić diodę PD2<br />}[/syntax]<br />Wtedy po wciśnięciu przycisku Będzie Ci się tylko świecić PD2, a po puszczeniu PD3. Jeżeli o taki efekt Ci chodziło <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />Zresztą to co ja Ci tu na kodzie przedstawiłem, słownie to samo opisał Ci wcześniej <strong>jacekk232</strong> <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4068">misiulu</a> — 14 wrz 2014, o 09:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ECC88]]></name></author>
<updated>2014-09-13T23:20:31+01:00</updated>
<published>2014-09-13T23:20:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95378#p95378</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95378#p95378"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95378#p95378"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />A sprawdzałeś ten program jak działa?<br /></div><br />Nie nadal czekam na Hardware. µC, programmer i to wszystko.<br /><br />Na razie na sucho.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 08.09.2014<br /> *      Author: bart<br /> */<br />#include &lt;avr/io.h&gt;          // (1)<br /><br />int main (void) {            // Program glowny<br /><br /><br />   DDRD &amp;= ~ (1&lt;&lt;PD0);//PD0 - IN<br />   DDRD &amp;= ~ (1&lt;&lt;PD1);//PD1 - IN<br />    PORTD |= (1&lt;&lt;PD0); //Podciagniecie Pin0 do VCC<br />    PORTD |= (1&lt;&lt;PD1); //Podciagniecie Pin1 do VCC<br /><br />   DDRD |= (1&lt;&lt;PD2); //PD2 - OUT<br />   DDRD |= (1&lt;&lt;PD3);//PD3 - OUT<br />    PORTD &amp;= ~ (1&lt;&lt;PD2); //Stan niski PD2<br />    PORTD &amp;= ~ (1&lt;&lt;PD3); //Stan niski PD3<br />    <br />   while(1) {                // (5)<br />     if( !(PIND &amp; (1&lt;&lt;PD0)) ) PORTD |= (1&lt;&lt;PD2);<br />     else PORTD |= (1&lt;&lt;PD3); // (6)<br /><br />         }<br />     }[/syntax]<br />Ustawiłem PD2 i 3 na stan niski, dobrze kombinuję???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5150">ECC88</a> — 13 wrz 2014, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-09-13T22:45:49+01:00</updated>
<published>2014-09-13T22:45:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95369#p95369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95369#p95369"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95369#p95369"><![CDATA[
A sprawdzałeś ten program jak działa? Bo raczej nie zadziała wg założeń. Po wciśnięciu przycisku włączą ci się obydwie diody i już tak włączone zostaną niezależnie od stanu przycisku.<br />Jeśli przycisk będzie nie wciśnięty to włączy się dioda na PD3. Po wciśnięciu przycisku włączy się dioda na PD2 ale ta na PD3 już nie zgaśnie. Tak samo po zwolnieniu przycisku dioda na PD2 też nie zgaśnie. W rezultacie obydwie będą świecić.<br /><br />Teraz pokombinuj jak to zmienić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 13 wrz 2014, o 22:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ECC88]]></name></author>
<updated>2014-09-13T21:26:28+01:00</updated>
<published>2014-09-13T21:26:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95359#p95359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95359#p95359"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95359#p95359"><![CDATA[
Już wszystko coraz bardziej jasne.<br />Oto moje następne podejście:<br /><a href="http://forum.atnel.pl/_obrazki/o/5150/26ebc5d1d98bd621721224ab323f7732.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5150/26ebc5d1d98bd621721224ab323f7732.png" alt="Obrazek" /></a><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 08.09.2014<br /> *      Author: bart<br /> */<br /><br />#include &lt;avr/io.h&gt;          // (1)<br /><br />int main (void) {            // (2)<br /><br /><br />   DDRD &amp;= ~ (1&lt;&lt;PD0);//PD0 - IN<br />   DDRD &amp;= ~ (1&lt;&lt;PD1);//PD1 - IN<br />    PORTD |= (1&lt;&lt;PD0); //Podciagniecie Pin0 do VCC<br />    PORTD |= (1&lt;&lt;PD1); //Podciagniecie Pin1 do VCC<br /><br />   DDRD |= (1&lt;&lt;PD2); //PD2 - OUT<br />   DDRD |= (1&lt;&lt;PD3);//PD3 - OUT<br /><br />   while(1) {                // (5)<br />     if( !(PIND &amp; (1&lt;&lt;PD0)) ) PORTD |= (1&lt;&lt;PD2);<br />     else PORTD |= (1&lt;&lt;PD3); // (6)<br />   }                         // (7)<br /><br />   /* wird nie erreicht */<br />   return 0;                 // (8)<br />}[/syntax]<br /><br />Jeżeli dobrze rozumuje to taster S2 włącza LED2 a jeżeli warunek nie jest spełniony to świeci LED1.<br />Czy dobrze rozumuje? Jest to poprawnie zapisane?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5150">ECC88</a> — 13 wrz 2014, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-09-13T10:50:27+01:00</updated>
<published>2014-09-13T10:50:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95316#p95316</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95316#p95316"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95316#p95316"><![CDATA[
Ten warunek się spełni jeśli obydwa wyrażenia, które się w nim znajdują, będą prawdą. <br />Pierwsze wyrażenie to [syntax=c]!key_lock[/syntax] <br />a drugie to[syntax=c]!(PINC &amp; KEY1 )[/syntax]<br /><br />Działanie drugiego warunku masz ładnie wytłumaczone w króciutkim poradniku na Mirka blogu <!-- m --><a class="postlink" href="http://www.mirekk36.blogspot.com/2014/05/if-pind-operacje-bitowe-logiczne-o-co.html" >http://www.mirekk36.blogspot.com/2014/0 ... -o-co.html</a><!-- m --><br />Tak w skrócie ten warunek będzie spełniony jeśli na pinie KEY1 zostanie ustawiony stan niski. Wtedy wyrażenie (PINC &amp; KEY1) przyjmie wartość zero czyli fałsz (false). Ale po zastosowaniu negacji logicznej &quot;!&quot; wyrażenie stanie się prawdą (true).<br /><br />Pierwszy warunek będzie prawdziwy jeśli zmienna key_lock będzie miała wartość zero. Wartość zero czyli false po zastosowaniu negacji logicznej da nam true.<br /><br />Czyli ten if się wykona jeśli zmienna key_lock będzie miała wartość zero i jednocześnie na pinie KEY1 będzie panował stan niski.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 13 wrz 2014, o 10:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ECC88]]></name></author>
<updated>2014-09-13T00:00:34+01:00</updated>
<published>2014-09-13T00:00:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95287#p95287</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95287#p95287"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95287#p95287"><![CDATA[
Wszystkim dzięki. Znalazłem coś takiego:<br /><!-- m --><a class="postlink" href="http://leksykot.top.hell.pl/lx3/e/priorytety_operatorow_c" >http://leksykot.top.hell.pl/lx3/e/prior ... eratorow_c</a><!-- m --><br />Bardzo pomocne.<br /><br />Objaśnił by mi ktoś ten zapis  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /> if( !key_lock &amp;&amp; !(PINC &amp; KEY1 ) )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5150">ECC88</a> — 13 wrz 2014, o 00:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-09-12T22:53:21+01:00</updated>
<published>2014-09-12T22:53:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95285#p95285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95285#p95285"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95285#p95285"><![CDATA[
<!-- m --><a class="postlink" href="https://www.google.pl/search?q=Assignment+Operators+in+C" >https://www.google.pl/search?q=Assignme ... ators+in+C</a><!-- m --><br /><br /><!-- m --><a class="postlink" href="http://www.tutorialspoint.com/cprogramming/c_assignment_operators.htm" >http://www.tutorialspoint.com/cprogramm ... rators.htm</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 12 wrz 2014, o 22:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[charsz]]></name></author>
<updated>2014-09-12T22:51:30+01:00</updated>
<published>2014-09-12T22:51:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95283#p95283</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95283#p95283"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95283#p95283"><![CDATA[
operatory<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=926">charsz</a> — 12 wrz 2014, o 22:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ECC88]]></name></author>
<updated>2014-09-12T22:40:38+01:00</updated>
<published>2014-09-12T22:40:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95282#p95282</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95282#p95282"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=95282#p95282"><![CDATA[
Wielkie dzięki wszystkim.<br />Rady pomagają i coraz więcej kapuję <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />A Tutaj jeszcze take pytanie baaaardzo początkującego;<br /><br />Jak się nazywają fachowo te znaki które zaznaczyłem???<br />Co wpisać w google aby uzyskać listę tych zapisów co jaki znaczy??<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/5150/eeb26f793d02a7914d60a80950983ede.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5150/eeb26f793d02a7914d60a80950983ede.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5150">ECC88</a> — 12 wrz 2014, o 22:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[misiulu]]></name></author>
<updated>2014-09-09T10:31:01+01:00</updated>
<published>2014-09-09T10:31:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94785#p94785</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94785#p94785"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94785#p94785"><![CDATA[
<div class="quotetitle">ECC88 napisał(a):</div><div class="quotecontent"><br />Właśnie z tego obrazka pisałem. Linia 34 - 39<br />Błędy pokazuje w L. 42 - 43.<br /></div><br /><br />ECC88 błędy Ci wskazuje bo kompilator nie wie co to jest LED_ON i LED_OFF. W twoim przypadku są to ustawienia stanu portu PC0, do którego podłączona jest dioda LED.<br /><br />Możesz to rozwiązać na dwa sposoby. Albo po prostu zamiast LED_ON napisać:<br />[syntax=c]PORTC |= (1&lt;&lt;PC0);[/syntax]<br />co ustawi stan wysoki na PINie mikrokontrolera i zapali diodę i LED_OFF:<br />[syntax=c]PORTC &amp;= ~(1&lt;&lt;PC0);[/syntax]<br />co tę diodę LED zgasi.<br /><br />Jak chcesz użyć etykiet LED_ON i LED_OFF to zrób jak Ci podpowiedział <strong>kurnachatka</strong>. Tylko w twoim przypadku zamienione będą definicje LED_ON z LED_OFF bo diodę zapalasz stanem wysokim, a nie niskim.<br /><br />Dodatkowo ustawienie portu kierunku dla diody led:<br />[syntax=c]DDRC |= (1&lt;&lt;PC0);[/syntax]<br />co ustawi Ci Pin PC0 jako wyjście, należy zrobić raz i to przed pętlą główną programu while (1).<br /><br />Tak samo z przyciskiem, jeżeli coś ustawiasz to przed while (1). W tym przypadku chcesz, aby PC1 było wejściem więc możesz napisać:<br />[syntax=c]DDRC &amp;= ~(1&lt;&lt;PC1);[/syntax]<br />Jednak nie musisz tego robić, bo po RESECIE w ATmedze wszystkie porty domyślnie są wejściami.<br /><br />Ponieważ przycisk jest podłączony do masy to powinieneś jedynie ustawić podciąganie do VCC przez rezystor tzw. PULL-UP. <br />Robisz to wpisując 1 do PORTC.<br />[syntax=c]PORTC |= (1&lt;&lt;PC1);[/syntax]<br />Również przed while (1).<br /><br />W while (1) zostawiasz sobie tylko warunek, z tymi poprawkami co pisałem wyżej lub dodajesz definicje za pomocą #define jak pisał <strong>kurnachatka</strong>.<br /><br />Wtedy powinno Ci śmigać <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4068">misiulu</a> — 9 wrz 2014, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2014-09-08T17:09:01+01:00</updated>
<published>2014-09-08T17:09:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94691#p94691</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94691#p94691"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94691#p94691"><![CDATA[
<div class="quotetitle">WoodPaker napisał(a):</div><div class="quotecontent"><br />A biorąc pod uwagę budowę najnowszych laptopów i komputerów to LPT nawet detektyw Rutkowski miałby problem znaleźć.<br /></div><br /><br />Ze świecą szukać dziś kompa który po pierwsze ma LPT po drugie obsługuje go z poziomu windows 7 czy 8 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 8 wrz 2014, o 17:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-09-08T17:03:43+01:00</updated>
<published>2014-09-08T17:03:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94690#p94690</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94690#p94690"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94690#p94690"><![CDATA[
Nikt się nie czepia. Zwykłe proste pytanie żeby rozjaśnić <strong>Baaardzo początkującemu</strong> pewne niejasności. Człowiek zbuduje sobie programator, a potem stanie w miejscu. Bo wręcz jestem pewien, że <br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Każdy wie, że można nawet zrobić programator na LPT za parę groszy na ten jeden raz.<br /></div><br />nie jest prawdą. Np. moja mama nie wie <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br /><br />A biorąc pod uwagę budowę najnowszych laptopów i komputerów to LPT nawet detektyw Rutkowski miałby problem znaleźć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 8 wrz 2014, o 17:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-09-08T16:17:34+01:00</updated>
<published>2014-09-08T16:17:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94679#p94679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94679#p94679"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94679#p94679"><![CDATA[
Witam,<br /><br /><div class="quotetitle">WoodPaker napisał(a):</div><div class="quotecontent"><br />Zgadzam się, że brak książki w niczym nie przeszkadza. I jest dużo dostępnych kursów po polsku, niemiecku, angielsku, a nawet rosyjsku czy chińsku. Przeszkodą zazwyczaj jest brak procesora choć są też symulatory.<br /><div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent">Witam,<br /><br />Ja zacząłem od tego, że sam &quot;wyprodukowałem&quot; programator USB-ASP, później zakup stykówki, potrzebnych elementów i darmowy<br /></div><br /><br />Tylko ciekawe czym go oprogramowałeś. Przyciskami nadając 0 i 1? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></div><br /><br />Zaspokoję Twoją ciekawość i powiem Ci że zaprogramowałem go......... uwaga......... programatorem od znajomego. To dopiero niespodzianka zaprogramowałem mikroprocesor programatorem!<br />Każdy wie, że można nawet zrobić programator na LPT za parę groszy na ten jeden raz.<br /><br />Tak więc powodzenia w czepianiu się dalej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 8 wrz 2014, o 16:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2014-09-08T14:48:18+01:00</updated>
<published>2014-09-08T14:48:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94671#p94671</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94671#p94671"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94671#p94671"><![CDATA[
Proszę poprawić obrazki zgodnie z zaleceniami <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic44.html" >topic44.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 8 wrz 2014, o 14:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-09-08T14:29:14+01:00</updated>
<published>2014-09-08T14:29:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94666#p94666</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94666#p94666"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94666#p94666"><![CDATA[
Zgadzam się, że brak książki w niczym nie przeszkadza. I jest dużo dostępnych kursów po polsku, niemiecku, angielsku, a nawet rosyjsku czy chińsku. Przeszkodą zazwyczaj jest brak procesora choć są też symulatory.<br /><div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent"><br />Witam,<br /><br />Ja zacząłem od tego, że sam &quot;wyprodukowałem&quot; programator USB-ASP, później zakup stykówki, potrzebnych elementów i darmowy<br /></div><br /><br />Tylko ciekawe czym go oprogramowałeś. Przyciskami nadając 0 i 1? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 8 wrz 2014, o 14:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-09-08T13:28:36+01:00</updated>
<published>2014-09-08T13:28:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94659#p94659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94659#p94659"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94659#p94659"><![CDATA[
Przed main wstaw cosik takiego tylko ustaw sobie odpowiedni PIN i PORT gdzie masz tą diodę podłączoną.<br /><br />[syntax=c]#define LED_PIN (1&lt;&lt;PC7)// definicja pinu do którego podłączona jest dioda<br />#define LED_ON PORTC &amp;= ~LED_PIN// makrodefinicja – załączenie diody<br />#define LED_OFF PORTC |= LED_PIN// makrodefinicja – wyłączenie diody<br />#define LED_TOG PORTC ^= LED_PIN// makrodefinicja – zmiana stanu diody[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 8 wrz 2014, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ECC88]]></name></author>
<updated>2014-09-08T13:20:18+01:00</updated>
<published>2014-09-08T13:20:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94656#p94656</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94656#p94656"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94656#p94656"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />Tutaj jest fajny obrazek do wydrukowania <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/01/avr-porty-wewy-dir-podstawy.html" >http://mirekk36.blogspot.com/2012/01/av ... stawy.html</a><!-- m --><br /><br />Dobrze go sobie powiesić nad biurkiem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />.<br />Sam tak mam zrobione.<br /></div><br /><br />Właśnie z tego obrazka pisałem. Linia 34 - 39<br />Błędy pokazuje w L. 42 - 43.<br /><br /><br /><br /><div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent"><br />Ja zacząłem od tego, że sam &quot;wyprodukowałem&quot; programator USB-ASP, później zakup stykówki, potrzebnych elementów i darmowy kurs internetowy:<br /></div><br />Ja na początek wolę osprzęt sprawdzony i uruchomiony.<br />Pł. stykowe i wszelkie elementy to mam. Pracuje na stykówkach już dobre 15 lat.<br />Zamówiłem w HonkKongu za 9€ 8xATM8, 8xATM88, 2xATM16, i 4xLCD2x16.<br />Na przesyłkę muszę jeszcze poczekać dobre 14 - 20 dni. Może do tego czasu Mirek się zlituje i żuci towar. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5150">ECC88</a> — 8 wrz 2014, o 13:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-09-08T11:23:31+01:00</updated>
<published>2014-09-08T11:23:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94644#p94644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94644#p94644"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94644#p94644"><![CDATA[
Witam,<br /><br />Kolega niedostępność towaru u p. Mirka nie powinna stanowić problemu z rozpoczęciem przygody z uC <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Ja zacząłem od tego, że sam &quot;wyprodukowałem&quot; programator USB-ASP, później zakup stykówki, potrzebnych elementów i darmowy kurs internetowy:<br /><a href="http://hobby.abxyz.bplaced.net/?pid=4&amp;cid=1"  class="postlink">KLIK!</a><br /><br />Do tego darmowy MkAvrCalculator - ja cały czas walczę tylko z ATMega8, a dla niego masz pełne wsparcie programu w wersji Free.<br /><br />I już można coś zacząć.<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 8 wrz 2014, o 11:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2014-09-08T08:23:45+01:00</updated>
<published>2014-09-08T08:23:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94627#p94627</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94627#p94627"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94627#p94627"><![CDATA[
Tutaj jest fajny obrazek do wydrukowania <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/01/avr-porty-wewy-dir-podstawy.html" >http://mirekk36.blogspot.com/2012/01/av ... stawy.html</a><!-- m --><br /><br />Dobrze go sobie powiesić nad biurkiem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />.<br />Sam tak mam zrobione.<p>Statystyki: Napisane przez Gość — 8 wrz 2014, o 08:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-09-08T07:35:30+01:00</updated>
<published>2014-09-08T07:35:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94624#p94624</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94624#p94624"/>
<title type="html"><![CDATA[Re: Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94624#p94624"><![CDATA[
Witam<br />...tak tylko &quot;rzuciłem okiem&quot; i :<br />Jeżeli chcemy aby dany PIN był WYJŚCIEM to piszemy<br />[syntax=c]DDRx |= (1&lt;&lt;Pxn);[/syntax] <br />jeżeli wejściem to <br />[syntax=c]DDRx &amp;= ~ (1&lt;&lt;Pxn);[/syntax] <br />- w tej drugiej sytuacji jak nic nie napiszesz to i tak będzie to wejście.<br />U Ciebie jest odwrotnie ( w.g schematu )<br />Chodzi o [syntax=c]|=     &amp;=~[/syntax]<br /><br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 8 wrz 2014, o 07:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ECC88]]></name></author>
<updated>2014-09-08T01:42:54+01:00</updated>
<published>2014-09-08T01:42:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94614#p94614</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94614#p94614"/>
<title type="html"><![CDATA[Baaaardzo początkujący]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8446&amp;p=94614#p94614"><![CDATA[
Witam Serdecznie<br />Chciał bym zacząć tą przygodę z µC ale na razie niestety tylko teoria i przemyślenia bo:<br />BB + programmer + płyta; Nie dostępne<br />GB + Pixelfactory; Nie dostępne<br />Przejściówka ATB-USB-RS232; Nie dostępne<br />Przetwornica ATB-PWR3; Nie dostępne<br /><br />Mirku, zlituj się i napełnij półki w sklepie ATNEL.<br />Teraz to tam wygląda jak za komuny w mięsnym.<br />Jestem jednak dobrej nadziei że wkrótce się te produkty pojawią.<br /><br />Więc TAK:<br />Eclipse + AVR toolchine hulają wspaniale.<br />Kompilacja działa, pliki HEX się pojawiają, wszystko cacy.<br /><br />Jestem niestety na razie zmuszony do pływania na  sucho (Dupą po piasku).<br /><br />Tutaj właśnie pojawia się prośba do was. Umieszczę poniżej schemat i do niego cody które powinny obsługiwać ten układ.<br />Moją prośbą jest, aby ktoś z was przeanalizował ten program, ewentualnie przetestował to na ATMega8.<br />Chciał bym wiedzieć czy ja w dobrą stronę rozumuję i kombinuję.<br />Nie wnikajcie bardziej w schemat bo wiem dokładnie co to filtracja napięcia, odpowiednie zasilanie itd. itp. Elektronika jako taka nie stanowi dal mnie żadnej przeszkody.  Na dzień dzisiejszy to jest dla mnie prostsze skonstruowanie jakiegoś n.p. licznika częstotliwości na konwencjonalnych scalakach niż napisanie programu na µC.<br /><br /><br />main.c<br />[syntax=c]//<br />// Anpassungen im makefile:<br />//    ATMega8 =&gt; MCU=atmega8 im makefile einstellen<br />//    lcd-routines.c in SRC = ... Zeile anhängen<br />//<br />#include &lt;avr/io.h&gt;<br />#include &quot;lcd.h&quot;<br /><br /><br /><br /><br />int main(void)<br />{<br />  // Initialisierung des LCD<br />  // Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken<br />  // verschwunden sein<br />  lcd_init();<br /><br />  // Text in einzelnen Zeichen ausgeben<br />  lcd_data( 'T' );<br />  lcd_data( 'e' );<br />  lcd_data( 's' );<br />  lcd_data( 't' );<br /><br />  // Die Ausgabemarke in die 2te Zeile setzen<br />  lcd_setcursor( 0, 2 );<br /><br />  // erneut Text ausgeben, aber diesmal komfortabler als String<br />  lcd_string(&quot;Hello World!&quot;);<br /><br />  while(1)<br />  {<br /><br />  DDRC |= (1&lt;&lt;PC1);<br />  PORTC |= (1&lt;&lt;PC1);<br /><br /><br />  DDRC &amp;= ~ (1&lt;&lt;PC0);<br />  PORTC |= (1&lt;&lt;PC0);<br /><br /><br />  if ( !(PINC &amp; (1&lt;&lt;PC0))) LED_ON;<br />  else LED_OFF;<br />  }<br /><br />  return 0;<br /><br /><br />}[/syntax]<br />Tutaj nie mogę dać sobie rady z portem C Pin0 i Pin1.<br />Jak tutaj zacząć ???<br /><br />lcd.c<br />[syntax=c]// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus<br />// http://www.mikrocontroller.net/articles/HD44780<br />// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung<br />//<br />// Die Pinbelegung ist über defines in lcd-routines.h einstellbar<br /><br />#include &lt;avr/io.h&gt;<br />#include &quot;lcd.h&quot;<br />#include &lt;util/delay.h&gt;<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Erzeugt einen Enable-Puls<br />static void lcd_enable( void )<br />{<br />    LCD_PORT |= (1&lt;&lt;LCD_EN);     // Enable auf 1 setzen<br />    _delay_us( LCD_ENABLE_US );  // kurze Pause<br />    LCD_PORT &amp;= ~(1&lt;&lt;LCD_EN);    // Enable auf 0 setzen<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Sendet eine 4-bit Ausgabeoperation an das LCD<br />static void lcd_out( uint8_t data )<br />{<br />    data &amp;= 0xF0;                       // obere 4 Bit maskieren<br /><br />    LCD_PORT &amp;= ~(0xF0&gt;&gt;(4-LCD_DB));    // Maske löschen<br />    LCD_PORT |= (data&gt;&gt;(4-LCD_DB));     // Bits setzen<br />    lcd_enable();<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden.<br />void lcd_init( void )<br />{<br />    // verwendete Pins auf Ausgang schalten<br />    uint8_t pins = (0x0F &lt;&lt; LCD_DB) |           // 4 Datenleitungen<br />                   (1&lt;&lt;LCD_RS) |                // R/S Leitung<br />                   (1&lt;&lt;LCD_EN);                 // Enable Leitung<br />    LCD_DDR |= pins;<br /><br />    // initial alle Ausgänge auf Null<br />    LCD_PORT &amp;= ~pins;<br /><br />    // warten auf die Bereitschaft des LCD<br />    _delay_ms( LCD_BOOTUP_MS );<br /><br />    // Soft-Reset muss 3mal hintereinander gesendet werden zur Initialisierung<br />    lcd_out( LCD_SOFT_RESET );<br />    _delay_ms( LCD_SOFT_RESET_MS1 );<br /><br />    lcd_enable();<br />    _delay_ms( LCD_SOFT_RESET_MS2 );<br /><br />    lcd_enable();<br />    _delay_ms( LCD_SOFT_RESET_MS3 );<br /><br />    // 4-bit Modus aktivieren<br />    lcd_out( LCD_SET_FUNCTION |<br />             LCD_FUNCTION_4BIT );<br />    _delay_ms( LCD_SET_4BITMODE_MS );<br /><br />    // 4-bit Modus / 2 Zeilen / 5x7<br />    lcd_command( LCD_SET_FUNCTION |<br />                 LCD_FUNCTION_4BIT |<br />                 LCD_FUNCTION_2LINE |<br />                 LCD_FUNCTION_5X7 );<br /><br />    // Display ein / Cursor aus / Blinken aus<br />    lcd_command( LCD_SET_DISPLAY |<br />                 LCD_DISPLAY_ON |<br />                 LCD_CURSOR_OFF |<br />                 LCD_BLINKING_OFF);<br /><br />    // Cursor inkrement / kein Scrollen<br />    lcd_command( LCD_SET_ENTRY |<br />                 LCD_ENTRY_INCREASE |<br />                 LCD_ENTRY_NOSHIFT );<br /><br />    lcd_clear();<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Sendet ein Datenbyte an das LCD<br />void lcd_data( uint8_t data )<br />{<br />    LCD_PORT |= (1&lt;&lt;LCD_RS);    // RS auf 1 setzen<br /><br />    lcd_out( data );            // zuerst die oberen,<br />    lcd_out( data&lt;&lt;4 );         // dann die unteren 4 Bit senden<br /><br />    _delay_us( LCD_WRITEDATA_US );<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Sendet einen Befehl an das LCD<br />void lcd_command( uint8_t data )<br />{<br />    LCD_PORT &amp;= ~(1&lt;&lt;LCD_RS);    // RS auf 0 setzen<br /><br />    lcd_out( data );             // zuerst die oberen,<br />    lcd_out( data&lt;&lt;4 );           // dann die unteren 4 Bit senden<br /><br />    _delay_us( LCD_COMMAND_US );<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Sendet den Befehl zur Löschung des Displays<br />void lcd_clear( void )<br />{<br />    lcd_command( LCD_CLEAR_DISPLAY );<br />    _delay_ms( LCD_CLEAR_DISPLAY_MS );<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Sendet den Befehl: Cursor Home<br />void lcd_home( void )<br />{<br />    lcd_command( LCD_CURSOR_HOME );<br />    _delay_ms( LCD_CURSOR_HOME_MS );<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Setzt den Cursor in Spalte x (0..15) Zeile y (1..4)<br /><br />void lcd_setcursor( uint8_t x, uint8_t y )<br />{<br />    uint8_t data;<br /><br />    switch (y)<br />    {<br />        case 1:    // 1. Zeile<br />            data = LCD_SET_DDADR + LCD_DDADR_LINE1 + x;<br />            break;<br /><br />        case 2:    // 2. Zeile<br />            data = LCD_SET_DDADR + LCD_DDADR_LINE2 + x;<br />            break;<br /><br />        case 3:    // 3. Zeile<br />            data = LCD_SET_DDADR + LCD_DDADR_LINE3 + x;<br />            break;<br /><br />        case 4:    // 4. Zeile<br />            data = LCD_SET_DDADR + LCD_DDADR_LINE4 + x;<br />            break;<br /><br />        default:<br />            return;                                   // für den Fall einer falschen Zeile<br />    }<br /><br />    lcd_command( data );<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Schreibt einen String auf das LCD<br /><br />void lcd_string( const char *data )<br />{<br />    while( *data != '\0' )<br />        lcd_data( *data++ );<br />}<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Schreibt ein Zeichen in den Character Generator RAM<br /><br />void lcd_generatechar( uint8_t code, const uint8_t *data )<br />{<br />    // Startposition des Zeichens einstellen<br />    lcd_command( LCD_SET_CGADR | (code&lt;&lt;3) );<br /><br />    // Bitmuster übertragen<br />    for ( uint8_t i=0; i&lt;8; i++ )<br />    {<br />        lcd_data( data&#91;i&#93; );<br />    }<br />}[/syntax]<br /><br />lcd.h<br />[syntax=c]// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus<br />// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung<br />//<br /><br />#ifndef LCD_ROUTINES_H<br />#define LCD_ROUTINES_H<br /> <br />////////////////////////////////////////////////////////////////////////////////<br />// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!<br /> <br />#ifndef F_CPU<br />#define F_CPU 8000000<br />#endif<br /> <br />////////////////////////////////////////////////////////////////////////////////<br />// Pinbelegung für das LCD, an verwendete Pins anpassen<br />// Alle LCD Pins müssen an einem Port angeschlossen sein und die 4<br />// Datenleitungen müssen auf aufeinanderfolgenden Pins liegen<br /><br />//  LCD DB4-DB7 &lt;--&gt;  PORTD Bit PD0-PD3<br />#define LCD_PORT      PORTD<br />#define LCD_DDR       DDRD<br />#define LCD_DB        PD0<br /><br />//  LCD RS      &lt;--&gt;  PORTD Bit PD4     (RS: 1=Data, 0=Command)<br />#define LCD_RS        PD4<br /><br />//  LCD EN      &lt;--&gt;  PORTD Bit PD5     (EN: 1-Impuls für Daten)<br />#define LCD_EN        PD5<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)<br /><br />#define LCD_BOOTUP_MS           15<br />#define LCD_ENABLE_US           20<br />#define LCD_WRITEDATA_US        46<br />#define LCD_COMMAND_US          42<br /><br />#define LCD_SOFT_RESET_MS1      5<br />#define LCD_SOFT_RESET_MS2      1<br />#define LCD_SOFT_RESET_MS3      1<br />#define LCD_SET_4BITMODE_MS     5<br /><br />#define LCD_CLEAR_DISPLAY_MS    2<br />#define LCD_CURSOR_HOME_MS      2<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Zeilendefinitionen des verwendeten LCD<br />// Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen<br />// Bei anderen Zeilenlängen müssen diese Einträge angepasst werden<br /><br />#define LCD_DDADR_LINE1         0x00<br />#define LCD_DDADR_LINE2         0x40<br />#define LCD_DDADR_LINE3         0x10<br />#define LCD_DDADR_LINE4         0x50<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden.<br />void lcd_init( void );<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// LCD löschen<br />void lcd_clear( void );<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Cursor in die 1. Zeile, 0-te Spalte<br />void lcd_home( void );<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Cursor an eine beliebige Position<br />void lcd_setcursor( uint8_t spalte, uint8_t zeile );<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Ausgabe eines einzelnen Zeichens an der aktuellen Cursorposition<br />void lcd_data( uint8_t data );<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Ausgabe eines Strings an der aktuellen Cursorposition<br />void lcd_string( const char *data );<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Definition eines benutzerdefinierten Sonderzeichens.<br />// data muss auf ein Array&#91;8&#93; mit den Zeilencodes des zu definierenden Zeichens<br />// zeigen<br />void lcd_generatechar( uint8_t code, const uint8_t *data );<br /><br />////////////////////////////////////////////////////////////////////////////////<br />// Ausgabe eines Kommandos an das LCD.<br />void lcd_command( uint8_t data );<br /><br /><br />////////////////////////////////////////////////////////////////////////////////<br />// LCD Befehle und Argumente.<br />// Zur Verwendung in lcd_command<br /><br />// Clear Display -------------- 0b00000001<br />#define LCD_CLEAR_DISPLAY       0x01<br /><br />// Cursor Home ---------------- 0b0000001x<br />#define LCD_CURSOR_HOME         0x02<br /><br />// Set Entry Mode ------------- 0b000001xx<br />#define LCD_SET_ENTRY           0x04<br /><br />#define LCD_ENTRY_DECREASE      0x00<br />#define LCD_ENTRY_INCREASE      0x02<br />#define LCD_ENTRY_NOSHIFT       0x00<br />#define LCD_ENTRY_SHIFT         0x01<br /><br />// Set Display ---------------- 0b00001xxx<br />#define LCD_SET_DISPLAY         0x08<br /><br />#define LCD_DISPLAY_OFF         0x00<br />#define LCD_DISPLAY_ON          0x04<br />#define LCD_CURSOR_OFF          0x00<br />#define LCD_CURSOR_ON           0x02<br />#define LCD_BLINKING_OFF        0x00<br />#define LCD_BLINKING_ON         0x01<br /><br />// Set Shift ------------------ 0b0001xxxx<br />#define LCD_SET_SHIFT           0x10<br /><br />#define LCD_CURSOR_MOVE         0x00<br />#define LCD_DISPLAY_SHIFT       0x08<br />#define LCD_SHIFT_LEFT          0x00<br />#define LCD_SHIFT_RIGHT         0x04<br /><br />// Set Function --------------- 0b001xxxxx<br />#define LCD_SET_FUNCTION        0x20<br /><br />#define LCD_FUNCTION_4BIT       0x00<br />#define LCD_FUNCTION_8BIT       0x10<br />#define LCD_FUNCTION_1LINE      0x00<br />#define LCD_FUNCTION_2LINE      0x08<br />#define LCD_FUNCTION_5X7        0x00<br />#define LCD_FUNCTION_5X10       0x04<br /><br />#define LCD_SOFT_RESET          0x30<br /><br />// Set CG RAM Address --------- 0b01xxxxxx  (Character Generator RAM)<br />#define LCD_SET_CGADR           0x40<br /><br />#define LCD_GC_CHAR0            0<br />#define LCD_GC_CHAR1            1<br />#define LCD_GC_CHAR2            2<br />#define LCD_GC_CHAR3            3<br />#define LCD_GC_CHAR4            4<br />#define LCD_GC_CHAR5            5<br />#define LCD_GC_CHAR6            6<br />#define LCD_GC_CHAR7            7<br /><br />// Set DD RAM Address --------- 0b1xxxxxxx  (Display Data RAM)<br />#define LCD_SET_DDADR           0x80<br /> <br />#endif[/syntax]<br /><br />Z góry dziękuję za porady i sugestie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5150">ECC88</a> — 8 wrz 2014, o 01:42</p><hr />
]]></content>
</entry>
</feed>