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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-04-18T22:51:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1004&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-04-18T22:51:52+01:00</updated>
<published>2012-04-18T22:51:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5562#p5562</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5562#p5562"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5562#p5562"><![CDATA[
Piotrek_P ---&gt; bardzo trafna podpowiedź<br /><br />te przykłady z delay_ms() to z początkowych przykładów mają demonstrować tylko pewne proste mechanizmy zanim nie przejdę do tematów bardziej zaawansowanych - które są celem książki<br /><br />a widzę, że niektóre osoby zatrzymują się na tych początkach - i jak do ognia troszkę podchodzą do dalszej części książki i programowania w oparciu o timery programowe itp <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> szkoda<br /><br /><br />mlekorlz --&gt; pewnie że w tym drugim przypadki nie jest potrzeby delay - ale to już trzeba dokładnie przeanalizować kod - ja niestety wymiękam - nie uda mi się w tym temacie nic pomóc. Na drugi raz zakładaj jeden wątek do jednego pytania a nie 10 pytań w jednym wątku - bo potem będzie pisanie o wszystkim i o niczym albo próba zgadywania na które pytanie kto odpowiada itp<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 kwi 2012, o 22:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2012-04-18T19:55:43+01:00</updated>
<published>2012-04-18T19:55:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5490#p5490</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5490#p5490"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5490#p5490"><![CDATA[
Witam,<br /><br />Co do _delay_ms to radzę się przyzwyczaić do Timerów. Poprostu szkoda marnować czas procesora. Jeżeli posiadasz książkę kolegi Mirka to masz tam pięknie wytłumaczone jak się timerami posługiwać i nie tylko tymi sprzętowymi. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  Z tego co widzę kolega kombinuje jakąś obsługę &quot;menu&quot;. Ja właśnie jestem na etapie tworzenia menu do swojego projektu i do obsługi klawiszy używam wspaniałego wynalazku Mirka jakim jest procedura SuperDebounce <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> . W pętli głównej sprawdzam tylko wartość timera programowego, stan klawiszy i ewentualnie wykonuję jakąś akcję, to wszystko. W sprawie uart'a to raczej powinieneś dane zbierać do jakiegoś bufora bo tak wprost na wyświelacz to ja tego nie widzę <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=290">Piotrek_P</a> — 18 kwi 2012, o 19:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-04-18T18:36:01+01:00</updated>
<published>2012-04-18T18:36:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5483#p5483</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5483#p5483"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5483#p5483"><![CDATA[
Druga sprawa to wyświetlanie stringa wysłanego z PC przez UART do LCD:<br />[syntax=c]case 2:<br />{<br />lcd_cls();<br />lcd_home();<br />lcd_str_P(tab3);<br />_delay_ms(1000);<br />if(flaga_uart)<br />{<br />//while( (c=uart_getc()) != 0x0d) uart_putc(c);<br />while( (c=uart_getc()) != 0x0d)<br />{<br />lcd_char(c);<br />_delay_ms(1000);<br />}<br />flaga_uart--;<br />}<br />}<br />break;[/syntax]<br />Po pierwsze po:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">         lcd_str_P(tab3);<br />         _delay_ms(1000);</div><br />znów ten nieszczęsny _delay_ms().<br />Po drugie czy teraz muszę najpierw zapisać zawartość bufora do kolejnej tablicy bo de facto po odczycie z RX_Buf on znika czy jest jakiś inny myk by był on na wyświetlaczu aż do wysłania kolejnego stringa?<br /><br />Po rozdzielane:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 18 kwi 2012, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-04-18T18:30:14+01:00</updated>
<published>2012-04-18T18:30:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5477#p5477</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5477#p5477"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5477#p5477"><![CDATA[
Proponuję rozdzielać pytania bo zamieszałeś że ho ho <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=54">mirekk36</a> — 18 kwi 2012, o 18:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-04-18T18:35:35+01:00</updated>
<published>2012-04-18T18:25:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5473#p5473</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5473#p5473"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5473#p5473"><![CDATA[
Dlaczego w przypadku takiego kodu:<br />[syntax=c]while(1)<br />{<br />switch(menu_option)<br />{<br />case 0:<br />{<br />lcd_cls();<br />lcd_home();<br />lcd_str(&quot;WYBIERZ FUNKCJE!&quot;);<br />_delay_ms(1000);<br />}<br />break;[/syntax]<br />Muszę dać _delay_ms() bo inaczej na wyświetlaczu jest pusto a w przypadku:<br />[syntax=c]case 1:<br />{<br />search_sensors();<br />DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL);<br />_delay_ms(750);<br />if(DS18X20_OK == DS18X20_read_meas(gSensorIDs[0], &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />{<br />lcd_cls();<br />lcd_home();<br />lcd_str_P(tab2);<br />if(subzero &gt; 0)<br />lcd_char('-');<br />else<br />lcd_char('+');<br />lcd_int(cel);<br />lcd_char(',');<br />lcd_int(cel_fract_bits);<br />lcd_char(' ');<br />lcd_str(&quot;\x83&quot;);<br />}<br />}<br />break;[/syntax]<br />ten _delay_ms() już nie jest potrzebny?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 18 kwi 2012, o 18:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-04-16T20:59:55+01:00</updated>
<published>2012-04-16T20:59:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5387#p5387</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5387#p5387"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5387#p5387"><![CDATA[
<img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ..... no i proszę - pytanie - i odpowiedź nadeszła jak samonaprowadzająca się rakieta<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 kwi 2012, o 20:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-04-16T20:39:45+01:00</updated>
<published>2012-04-16T20:39:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5383#p5383</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5383#p5383"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5383#p5383"><![CDATA[
Ale ze mnie łoś;)<br />Już znalazłem przyczynę problemu<br />[syntax=c]while(1)<br />{<br />if(klawisz_wcisniety())<br />lcd_locate(0,12);<br />lcd_int(menu_option);<br /><br />}[/syntax]<br />Zamiast<br />[syntax=c]while(1)<br />{<br />if(klawisz_wcisniety())<br />{<br />lcd_locate(0,12);<br />lcd_int(menu_option);<br />}<br /><br />}[/syntax]<br />Tak to jest jak się robi IF'a bez nawiasów a później coś do niego dopisuje;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 16 kwi 2012, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-04-16T20:31:24+01:00</updated>
<published>2012-04-16T20:31:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5382#p5382</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5382#p5382"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5382#p5382"><![CDATA[
We wszystkich komórkach wyświetla aktualna wartość zmiennej menu_option, czyli np &quot;0&quot; zaraz po włączeniu atmegi.<br />Zauważyłem właśnie, że wywołanie samej funkcji:<br />[syntax=c]<br />char PROGMEM tab1[] = {&quot;OPCJA MENU: &quot;};<br />lcd_str_P(tab1);[/syntax]<br />Nie powoduje wyświetlenie w/w stringa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 16 kwi 2012, o 20:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-04-16T20:28:12+01:00</updated>
<published>2012-04-16T20:28:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5381#p5381</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5381#p5381"/>
<title type="html"><![CDATA[Re: Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5381#p5381"><![CDATA[
Niestety ja nie rozumiem co to znaczy &quot;zawala wszystkie komórki&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 kwi 2012, o 20:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-04-16T20:18:35+01:00</updated>
<published>2012-04-16T20:18:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5376#p5376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5376#p5376"/>
<title type="html"><![CDATA[Problemy z HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1004&amp;p=5376#p5376"><![CDATA[
Jako, że zabieram się za LCD a problemów pewnie dla odmiany będę miał pełno pozwoliłem sobie założyć nowy wątek.<br /><br />Pierwszy problem jest taki, że wyświetlacz nie pokazuje stringa tylko zawala wszystkie komórki zmienną menu_option. Jeszcze przed chwilą wszystko działało, zmieniłem zapis w pliku key.c i się posypało.<br /><br />Zamysł jest taki, że po kliknięciu przycisku Uc będzie przechodził do kolejnej funkcji (temp, data, string z uart i co tylko). Póki co piszę obsługę klawisza i wyświetlanie jego stanu na LCD.<br /><br />Plik key.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;key.h&quot;<br /><br />volatile uint8_t menu_option;<br /><br /><br />void key_init(void)<br />{<br />DDRD &amp;= ~KEY_PIN;// kierunek piny PD2 - wejściowy<br />PORTD |= KEY_PIN;<br />MCUCR |= (1 &lt;&lt; ISC01);<br />GICR |= (1 &lt;&lt; INT0);<br />}<br /><br />uint8_t klawisz_wcisniety(void)<br />{<br />if( KEY_DOWN )// klawisz wciśnięty ?<br />{<br />_delay_ms(80);// czas drgań styków<br />if( KEY_DOWN ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}<br /><br />ISR(INT0_vect)<br />{<br />if(menu_option &lt; 4)<br />menu_option++;<br />else(menu_option = 0);<br /><br />}[/syntax]<br /><br />Plik key.h<br />[syntax=c]#ifndef KEY_H_<br />#define KEY_H_<br /><br />/*Definicje pinów przycisku*/<br /><br />#define KEY_PIN (1 &lt;&lt; PD2)<br />#define KEY_DOWN !(PIND &amp; KEY_PIN)<br /><br /><br />/*Deklaracje funkcji*/<br /><br />uint8_t klawisz_wcisniety(void);<br />void key_init(void);<br /><br />#endif /* KEY_H_ */[/syntax]<br /><br />Plik main.c<br />[syntax=c]<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;lcd/lcd44780.h&quot;<br />#include &quot;key/key.h&quot;<br />#include &quot;termometr/ds18x20.h&quot;<br />#include &quot;uart/mkuart.h&quot;<br /><br /><br />char PROGMEM tab1[] = {&quot;OPCJA MENU: &quot;};<br /><br />extern volatile uint8_t menu_option;<br /><br />int main(void)<br />{<br /><br />//USART_Init(9600);<br />lcd_init();<br />key_init();<br />sei();<br /><br />lcd_str_P(tab1);<br />lcd_locate(0,12);<br />lcd_int(menu_option);<br /><br />while(1)<br />{<br />if(klawisz_wcisniety())<br />lcd_locate(0,12);<br />lcd_int(menu_option);<br /><br />}<br /><br />}<br />[/syntax]<br /><br />[syntax=c][/syntax]<br /><br />[syntax=c][/syntax]<br /><br />[syntax=c][/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 16 kwi 2012, o 20:18</p><hr />
]]></content>
</entry>
</feed>