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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-15T21:04:59+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7443&amp;mode</id>
<entry>
<author><name><![CDATA[swiezy87]]></name></author>
<updated>2014-06-15T21:04:59+01:00</updated>
<published>2014-06-15T21:04:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84622#p84622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84622#p84622"/>
<title type="html"><![CDATA[Re: HD44780 inicjalizacja kod]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84622#p84622"><![CDATA[
Wszystko już działa tak jak trzeba.<br />Nie robiłem żadnych odstępów czasowych pomiędzy półbajtami.<br />Poniżej przykład<br /><br />[syntax=c]void displayON()<br />{<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB &amp;=~(1&lt;&lt;PB5);  //DB5=0<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />PORTB |=(1&lt;&lt;PB1); //DB7=1<br />PORTB |=(1&lt;&lt;PB4); //DB6=1 włącz wyświetlacz <br />PORTB |=(1&lt;&lt;PB5); //DB5=1 włącz kursor <br />PORTC |=(1&lt;&lt;PC0); //DB4=1 włącz miganie<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4531">swiezy87</a> — 15 cze 2014, o 21:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurys]]></name></author>
<updated>2014-06-15T20:58:58+01:00</updated>
<published>2014-06-15T20:58:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84619#p84619</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84619#p84619"/>
<title type="html"><![CDATA[Re: HD44780 inicjalizacja kod]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84619#p84619"><![CDATA[
Trochę inaczej trzeba to zrobić. Zobacz np. tutaj na zależności czasowe: <!-- m --><a class="postlink" href="http://tompiast.fm.interia.pl/elektronika/lcd_winamp/rys6.gif" >http://tompiast.fm.interia.pl/elektroni ... p/rys6.gif</a><!-- m --><br /><br />Najpierw ustawiasz E=1, potem wysyłasz dane, a następnie zerujesz E. Stan wysoki E (enable - jak sama nazwa wskazuje) umożliwia wysłanie danych, bez tego nie ma na to zezwolenia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1863">kurys</a> — 15 cze 2014, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[swiezy87]]></name></author>
<updated>2014-06-15T19:10:31+01:00</updated>
<published>2014-06-15T19:10:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84592#p84592</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84592#p84592"/>
<title type="html"><![CDATA[Re: HD44780 inicjalizacja kod]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84592#p84592"><![CDATA[
Rozumiem.<br />Działa.<br />Ale nie wiem czy kod jest optymalny więc zapytam jeszcze<br />co z ze stanem pinu E ?<br /><br />-wysyłam półbajt<br />- E=1<br />-czekam (ile ?)<br />- E=0<br />teraz Jeśli dobrze zrozumiałem nie czekam tylko:<br />-wysyłam półbajt<br />- E=1<br />-czekam (ile ?)<br />- E=0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4531">swiezy87</a> — 15 cze 2014, o 19:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurys]]></name></author>
<updated>2014-06-15T14:45:40+01:00</updated>
<published>2014-06-15T14:45:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84552#p84552</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84552#p84552"/>
<title type="html"><![CDATA[Re: HD44780 inicjalizacja kod]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84552#p84552"><![CDATA[
Pomiędzy wysyłanymi półbajtami nie trzeba dawać żadnych odstępów, jedynie jeśli nie sprawdzasz BusyFlag (RW zwarty do masy) to czekasz 120 us po przesłaniu całego bajtu.<br /><br />Przy funkcji Display Clear natomiast trzeba zaczekać 4,9 ms - również jeśli RW jest na stałe podpięty do masy.<br /><br />Jeśli coś namieszałem to proszę mnie poprawić, bo akurat sam nadal jestem na etapie pisania bibliotek do HD44780.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1863">kurys</a> — 15 cze 2014, o 14:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[swiezy87]]></name></author>
<updated>2014-06-15T12:49:46+01:00</updated>
<published>2014-06-15T12:49:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84527#p84527</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84527#p84527"/>
<title type="html"><![CDATA[Re: HD44780 inicjalizacja kod]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84527#p84527"><![CDATA[
Dziękuję bardzo <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<br /><br />Notorycznie na wielu stronach i w wielu poradnikach powtarzany jest ten błąd.<br /><br />Jakie powinny być odstępy czasowe pomiędzy półbajtami i poszczególnymi instrukcjami ?<br />Co w przypadku kiedy instrukcja ma trwać max 1,64ms tak jak w przypadku Display clear  i jest wysyłana w dwóch półbajtach?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4531">swiezy87</a> — 15 cze 2014, o 12:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-06-15T12:02:18+01:00</updated>
<published>2014-06-15T12:02:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84518#p84518</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84518#p84518"/>
<title type="html"><![CDATA[Re: HD44780 inicjalizacja kod]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84518#p84518"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Domyślam się że jest problem z czasami<br /></div><br /><br />i bardzo dobrze się domyślasz - bo im częściej będziesz pisał TAKIE POTWORKI W KODZIE jakie wyżej zaznaczyłem ci na czerwono - tym częściej będziesz rwał sobie włosy z głowy<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />obejrzyj sobie chociaż KILKA minut z tego poradnika od tego miejsca z linku:<br /><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=UhcyBpM57vo#t=2953" >https://www.youtube.com/watch?v=UhcyBpM57vo#t=2953</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 cze 2014, o 12:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[swiezy87]]></name></author>
<updated>2014-06-15T11:57:55+01:00</updated>
<published>2014-06-15T11:57:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84516#p84516</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84516#p84516"/>
<title type="html"><![CDATA[HD44780 inicjalizacja kod]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7443&amp;p=84516#p84516"><![CDATA[
Witam,<br /><br />mam problem z inicjalizacją HD44780 w trybie 4 bitowym.<br />W internecie jest mnóstwo gotowych przykładów inicjalizacji na co dzień korzystam z bibliotek które trudno mi zrozumieć.<br />Zrobiłem więc sobie prymitywny program do inicjalizacji i eksperymentów.<br />Teoretycznie na wyświetlaczu powinien pojawić się znak 'z' jednak działanie kodu jest losowe.<br />Miga tylko kursor wyświetla się 'z' bądź nie dzieje się nic i ekran jest czysty.<br /><br />Domyślam się że jest problem z czasami<br /><br />Proszę o wsparcie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Pozdrawiam.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;[/syntax]<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><strong><span style="color: #FF0000"><em>#define F_CPU 8000000L  &lt;----- NIGDY NIE PISZEMY TEGO W KODZIE - mirekk36</em></span></strong><br /></div><br /><br />[syntax=c]void fset8bit()<br />{<br />PORTC &amp;=~(1&lt;&lt;PC3); //RS=0<br />PORTC &amp;=~(1&lt;&lt;PC2);  //RW=0<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB |=(1&lt;&lt;PB5); //DB5=1<br />PORTC |=(1&lt;&lt;PC0); //DB4=1<br />}<br />void fset4bit()<br />{<br />PORTC &amp;=~(1&lt;&lt;PC3); //RS=0<br />PORTC &amp;=~(1&lt;&lt;PC2);  //RW=0<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB |=(1&lt;&lt;PB5); //DB5=1<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0<br />}<br />void fsetNF()<br />{<br />PORTC &amp;=~(1&lt;&lt;PC3); //RS=0<br />PORTC &amp;=~(1&lt;&lt;PC2); //RW=0<br />PORTC &amp;=~(1&lt;&lt;PC1); //E=0<br />PORTC &amp;=~(1&lt;&lt;PC2); //RW=0<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB |=(1&lt;&lt;PB5);  //DB5=1    1<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0   interfejs 4-bitowy<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0 wyświetlacz jednowierszowy<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0 matryca znaków 5*7 punktów <br />PORTB &amp;=~(1&lt;&lt;PB5); //DB5=0  x<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0  x<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />}<br />void displayOFF()<br />{<br />PORTC &amp;=~(1&lt;&lt;PC3); //RS=0<br />PORTC &amp;=~(1&lt;&lt;PC2); //RW=0<br />PORTC &amp;=~(1&lt;&lt;PC1); //E=0<br />PORTC &amp;=~(1&lt;&lt;PC2); //RW=0<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB &amp;=~(1&lt;&lt;PB5);  //DB5=0    <br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0 <br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />PORTB |=(1&lt;&lt;PB1); //DB7=1 <br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0 wyłącz wyświetlacz<br />PORTB &amp;=~(1&lt;&lt;PB5); //DB5=0 wyłącz kursor<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0 wyłącz miganie<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />}<br />void displayON()<br />{<br />PORTC &amp;=~(1&lt;&lt;PC3); //RS=0<br />PORTC &amp;=~(1&lt;&lt;PC2); //RW=0<br />PORTC &amp;=~(1&lt;&lt;PC1); //E=0<br />PORTC &amp;=~(1&lt;&lt;PC2); //RW=0<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB &amp;=~(1&lt;&lt;PB5);  //DB5=0<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />PORTB |=(1&lt;&lt;PB1); //DB7=1<br />PORTB |=(1&lt;&lt;PB4); //DB6=1 włącz wyświetlacz <br />PORTB |=(1&lt;&lt;PB5); //DB5=1 włącz kursor <br />PORTC |=(1&lt;&lt;PC0); //DB4=1 włącz miganie<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />}<br />void kursor()<br />{<br />PORTC &amp;=~(1&lt;&lt;PC3); //RS=0<br />PORTC &amp;=~(1&lt;&lt;PC2);  //RW=0<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB &amp;=~(1&lt;&lt;PB5); //DB5=0<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB |=(1&lt;&lt;PB4); //DB6=1  <br />PORTB |=(1&lt;&lt;PB5); //DB5=1   kursor lub okno wyświetlacza przesuwa się w prawo<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0  po zapisaniu znaku do wyświetlacza kursor zmienia położenie, a przesuwanie okna jest wyłączone<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />}<br />void dana()<br />{<br />PORTC |=(1&lt;&lt;PC3); //RS=1<br />PORTC &amp;=~(1&lt;&lt;PC2);  //RW=0<br />//////////////////////////<br />PORTB &amp;=~(1&lt;&lt;PB1); //DB7=0<br />PORTB |=(1&lt;&lt;PB4); //DB6=1<br />PORTB |=(1&lt;&lt;PB5); //DB5=1<br />PORTC |=(1&lt;&lt;PC0); //DB4=1<br />/////////////////////////<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />PORTB |=(1&lt;&lt;PB1); //DB7=1<br />PORTB &amp;=~(1&lt;&lt;PB4); //DB6=0<br />PORTB |=(1&lt;&lt;PB5); //DB5=1<br />PORTC &amp;=~(1&lt;&lt;PC0); //DB4=0<br />//////////////////////////<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />}<br /><br />int main(void)<br />{<br />//       E        RW       RS      DB4<br />DDRC|=(1&lt;&lt;PC1)|(1&lt;&lt;PC2)|(1&lt;&lt;PC3)|(1&lt;&lt;PC0);<br />//       DB5      DB6      DB7<br />DDRB|=(1&lt;&lt;PB5)|(1&lt;&lt;PB4)|(1&lt;&lt;PB1);<br /><br />_delay_ms(250);<br />fset8bit();<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_ms(5);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />fset8bit();<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_us(100);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />fset8bit();<br />PORTC |=(1&lt;&lt;PC1);  //E=1<br />_delay_ms(5);<br />PORTC &amp;=~(1&lt;&lt;PC1);  //E=0<br />_delay_us(100);<br />fset4bit();<br />_delay_us(100);<br />fsetNF();<br />_delay_us(100);<br />displayOFF();<br />_delay_us(100);<br />displayON();<br />_delay_us(100);<br />kursor();<br />_delay_us(100);<br />dana();<br /><br />while(1)<br />{<br />//TODO:: Please write your application code<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4531">swiezy87</a> — 15 cze 2014, o 11:57</p><hr />
]]></content>
</entry>
</feed>