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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-02-07T13:35:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2276&amp;mode</id>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-07T13:35:37+01:00</updated>
<published>2013-02-07T13:35:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27118#p27118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27118#p27118"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27118#p27118"><![CDATA[
No tak, w zasadzie nie ma takiego przypadku, aby oba sterowniki miały pracowac w tym samym momencie. Z jednym wyjątkiem: lcd_cls(). Zeruje tam zmienną e, wtedy w lcd_write_byte() jest troche inna sekwencja  sygnałów. Są podawane równolegle. Ale to z pewnością nie rzutuje na poruszony problem.<br />Oj, chyba już się doktoryzujemy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 7 lut 2013, o 13:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-07T11:27:13+01:00</updated>
<published>2013-02-07T11:27:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27110#p27110</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27110#p27110"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27110#p27110"><![CDATA[
<div class="quotetitle">jwalentek napisał(a):</div><div class="quotecontent"><br />Idąc dalej, zastanawiam się (bo nie próbowałem i nie będę) czy odblokowanie pinu RW będzie mialo sens, gdyż w tym lcd jest on wspólny i przykładowo jeśli do górnych linii zapodam mniej tekstu niż do dolnych to i tak uC otrzyma sygnał gotowości dopiero gdy ostatni sterownik skończy pracę.<br />Można to uznać za marnotrawienie czasu.<br /></div><br /><br />Nie nie - każdy sterownik będzie działał w swoim czasie i odpowiadał w swoim czasie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... gdy rozmawiasz z jednym za pomocą E1 to drugi na tych pinach nic nie robi, i analogicznie gdy rozmawiasz z drugim za pomocą E2 to pierwszy ma ciszę na pinach - więc spokojnie da radę sprawdzać Busy Flag.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lut 2013, o 11:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-07T11:25:03+01:00</updated>
<published>2013-02-07T11:25:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27109#p27109</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27109#p27109"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27109#p27109"><![CDATA[
Z taką pomocą to wszystko da się zrobić <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Idąc dalej, zastanawiam się (bo nie próbowałem i nie będę) czy odblokowanie pinu RW będzie mialo sens, gdyż w tym lcd jest on wspólny i przykładowo jeśli do górnych linii zapodam mniej tekstu niż do dolnych to i tak uC otrzyma sygnał gotowości dopiero gdy ostatni sterownik skończy pracę.<br />Można to uznać za marnotrawienie czasu.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 7 lut 2013, o 11:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-07T10:01:37+01:00</updated>
<published>2013-02-07T10:01:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27102#p27102</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27102#p27102"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27102#p27102"><![CDATA[
Tak, w takiej postaci ładnie widać modyfikacje i jak widać - nawet ładnie i sprytnie to kolega zrobił <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> gratulacje - a tak się bał że będzie tygodniami to przerabiał <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> — 7 lut 2013, o 10:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jachu]]></name></author>
<updated>2013-02-07T09:45:48+01:00</updated>
<published>2013-02-07T09:45:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27100#p27100</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27100#p27100"/>
<title type="html"><![CDATA[Re: Odp: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27100#p27100"><![CDATA[
<div class="quotetitle">PawelGaj napisał(a):</div><div class="quotecontent"><br />Nie wstawia się na publicznym forum kodów z książki. Wstaw tylko to co sam przerobileś i napisz ze reszta na płycie.<br /></div><br /><br />jesli jest to za zgoda Mirka to nie ma problemu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=110">jachu</a> — 7 lut 2013, o 09:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PawelGaj]]></name></author>
<updated>2013-02-07T00:12:36+01:00</updated>
<published>2013-02-07T00:12:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27091#p27091</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27091#p27091"/>
<title type="html"><![CDATA[Re: Odp: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27091#p27091"><![CDATA[
Nie wstawia się na publicznym forum kodów z książki. Wstaw tylko to co sam przerobileś i napisz ze reszta na płycie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=784">PawelGaj</a> — 7 lut 2013, o 00:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-07T07:58:33+01:00</updated>
<published>2013-02-06T23:55:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27090#p27090</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27090#p27090"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27090#p27090"><![CDATA[
Prosze bardzo, aczkolwiek są jeszcze błędy.<br />Pozdrawiam<br /><br />plik lcd4x40.c<br />[syntax=cpp]//-----------------------------------------------------------------------------------------------------------<br />// *** Obsługa wyświetlacza LCD 4x40 znaków zbudowanego na 2-ch sterownikach zgodnych z HD44780 ***<br />//<br />// - Sterowanie: tryb 4-bitowy<br />// - Dowolne przypisanie każdego sygnału sterującego do dowolnego pinu mikrokontrolera<br />// - Praca z pinem RW podłączonym do GND lub do mikrokontrolera (sprawdzanie BusyFLAG - szybkie operacje LCD)<br />//<br />// Pliki : lcd4x40.c , lcd4x40.h<br />// Mikrokontrolery : Atmel AVR<br />// Kompilator : avr-gcc<br />// Źródło : <!-- m --><a class="postlink" href="http://www.atnel.pl" >http://www.atnel.pl</a><!-- m --><br />// Data : marzec 2010<br />// Źródło kodu: Mirosław Kardaś<br />// Modyfikował: Jarek 6.02.2013<br />//-----------------------------------------------------------------------------------------------------------<br /> <br />// publikuję tylko zmodyfikowalne linie kodu w stostnku do kodów z 1-szej książki Atnel<br /><br />// makrodefinicje operacji na sygnałach sterujących RS,RW oraz E<br /><br />#define SET_RS PORT(LCD_RSPORT) |= (1&lt;&lt;LCD_RS)// stan wysoki na linii RS<br />#define CLR_RS PORT(LCD_RSPORT) &amp;= ~(1&lt;&lt;LCD_RS)// stan niski na linii RS<br /><br />#define SET_RW PORT(LCD_RWPORT) |= (1&lt;&lt;LCD_RW)// stan wysoki na RW - odczyt z LCD<br />#define CLR_RW PORT(LCD_RWPORT) &amp;= ~(1&lt;&lt;LCD_RW)// stan niski na RW - zapis do LCD<br /><br />#define SET_E1 PORT(LCD_E1PORT) |= (1&lt;&lt;LCD_E1)// stan wysoki na linii E1<br />#define CLR_E1 PORT(LCD_E1PORT) &amp;= ~(1&lt;&lt;LCD_E1)// stan niski na linii E1<br /><br />#define SET_E2 PORT(LCD_E2PORT) |= (1&lt;&lt;LCD_E2)// stan wysoki na linii E2<br />#define CLR_E2 PORT(LCD_E2PORT) &amp;= ~(1&lt;&lt;LCD_E2)// stan niski na linii E2<br /><br /><br />uint8_t check_BF(void);// deklaracja funkcji wewnętrznej<br />uint8_t e;                                           //deklaracja zmiennej na potrzeby numeru linii E<br /><br />//********************* FUNKCJE WEWNĘTRZNE *********************<br /><br />//----------------------------------------------------------------------------------------<br />//<br />// Zapis bajtu do wyświetlacza LCD<br />//<br />//----------------------------------------------------------------------------------------<br />void _lcd_write_byte(unsigned char _data)<br />{<br />// Ustawienie pinów portu LCD D4..D7 jako wyjścia<br />data_dir_out();<br /><br />#if USE_RW == 1<br />CLR_RW;<br />#endif<br /><br />switch(e)<br />{<br />case 0: {<br />SET_E1;SET_E2;<br />lcd_sendHalf(_data &gt;&gt; 4);<br />CLR_E1;CLR_E2;<br />SET_E1;SET_E2;<br />lcd_sendHalf(_data);<br />CLR_E1;CLR_E2;<br />}<br />case 1: {<br />SET_E1;<br />lcd_sendHalf(_data &gt;&gt; 4);<br />CLR_E1;<br />SET_E1;<br />lcd_sendHalf(_data);<br />CLR_E1;<br />break;<br />}<br />case 2: {<br />SET_E2;<br />lcd_sendHalf(_data &gt;&gt; 4);<br />CLR_E2;<br />SET_E2;<br />lcd_sendHalf(_data);<br />CLR_E2;<br />break;<br />}<br />}<br />#if USE_RW == 1<br />while( (check_BF() &amp; (1&lt;&lt;7)) );<br />#else<br />_delay_us(120);<br />#endif<br /><br />}<br /><br />#if USE_LCD_LOCATE == 1<br />//----------------------------------------------------------------------------------------<br />//<br />//Ustawienie kursora w pozycji Y-wiersz, X-kolumna<br />//<br />// Y = od 0 do 3<br />// X = od 0 do n<br />//<br />//funkcja dostosowuje automatycznie adresy DDRAM<br />//w zależności od rodzaju wyświetlacza (ile posiada wierszy)<br />//<br />//----------------------------------------------------------------------------------------<br />void lcd_locate(uint8_t y, uint8_t x)<br />{<br />switch(y)<br />{<br />case 0: y = LCD_LINE1; e=1; break;<br /><br />#if (LCD_Y&gt;1)<br />    case 1: y = LCD_LINE2; e=1; break; // adres 1 znaku 2 wiersza<br />#endif<br />#if (LCD_Y&gt;2)<br />    case 2: y = LCD_LINE1; e=2; break; // adres 1 znaku 3 wiersza<br />#endif<br />#if (LCD_Y&gt;3)<br />    case 3: y = LCD_LINE2; e=2; break; // adres 1 znaku 4 wiersza<br />#endif<br />}<br /><br />lcd_write_cmd( (0x80 + y + x) );<br />}<br />#endif<br /><br />void lcd_cls(void)<br />{<br />e=0;// trzeba wyzerować e aby wyczyścić obie linie E1 i E2<br />lcd_write_cmd( LCDC_CLS );<br /><br />#if USE_RW == 0<br />_delay_ms(4.9);<br />#endif<br />}<br /><br />//----------------------------------------------------------------------------------------<br />//<br />// ******* INICJALIZACJA WYŚWIETLACZA LCD ********<br />//<br />//----------------------------------------------------------------------------------------<br />void lcd_init(void)<br />{<br />// inicjowanie pinów portów ustalonych do podłączenia z wyświetlaczem LCD<br />// ustawienie wszystkich jako wyjścia<br />data_dir_out();<br />DDR(LCD_RSPORT) |= (1&lt;&lt;LCD_RS);<br />DDR(LCD_E1PORT) |= (1&lt;&lt;LCD_E1);<br />DDR(LCD_E2PORT) |= (1&lt;&lt;LCD_E2);<br />#if USE_RW == 1<br />DDR(LCD_RWPORT) |= (1&lt;&lt;LCD_RW);<br />#endif<br /><br />// wyzerowanie wszystkich linii sterujących<br />PORT(LCD_RSPORT) &amp;= ~(1&lt;&lt;LCD_RS);<br />PORT(LCD_E1PORT) &amp;= ~(1&lt;&lt;LCD_E1);<br />PORT(LCD_E2PORT) &amp;= ~(1&lt;&lt;LCD_E2);<br />#if USE_RW == 1<br />PORT(LCD_RWPORT) &amp;= ~(1&lt;&lt;LCD_RW);<br />#endif<br /><br />_delay_ms(15);<br />PORT(LCD_RSPORT) &amp;= ~(1&lt;&lt;LCD_RS);<br />PORT(LCD_RWPORT) &amp;= ~(1&lt;&lt;LCD_RW);<br /><br />// jeszcze nie można używać Busy Flag<br />lcd_sendHalf(LCDC_FUNC|LCDC_FUNC8B);<br />_delay_ms(4.1);<br />lcd_sendHalf(LCDC_FUNC|LCDC_FUNC8B);<br />_delay_us(100);<br />lcd_sendHalf(LCDC_FUNC|LCDC_FUNC4B);<br />_delay_us(100);<br /><br />// już można używać Busy Flag<br />// tryb 4-bitowy, 2 wiersze, znak 5x7<br />lcd_write_cmd( LCDC_FUNC|LCDC_FUNC4B|LCDC_FUNC2L|LCDC_FUNC5x7 );<br />// wyłączenie kursora<br />lcd_write_cmd( LCDC_ONOFF|LCDC_CURSOROFF );<br />// włączenie wyświetlacza<br />lcd_write_cmd( LCDC_ONOFF|LCDC_DISPLAYON );<br />// przesuwanie kursora w prawo bez przesuwania zawartości ekranu<br />lcd_write_cmd( LCDC_ENTRY|LCDC_ENTRYR );<br /><br />// kasowanie ekranu<br />lcd_cls();<br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 23:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jachu]]></name></author>
<updated>2013-02-06T23:50:29+01:00</updated>
<published>2013-02-06T23:50:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27089#p27089</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27089#p27089"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27089#p27089"><![CDATA[
<div class="quotetitle">jwalentek napisał(a):</div><div class="quotecontent"><br />Udało się. Załączył bym gotowy kod gotowy kod, ale nie wiem jak wgrać tutaj pliki. Plików *.h i *.c nie przyjmuje.<br />Wstawienie listingu to kilkaset linii kodu.<br /><br />Dziekuję za wspólną pracę.<br />Pozrawiam<br /></div><br /><br />wstawiaj bedzie dla potomnych <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=110">jachu</a> — 6 lut 2013, o 23:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T23:42:20+01:00</updated>
<published>2013-02-06T23:42:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27088#p27088</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27088#p27088"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27088#p27088"><![CDATA[
Udało się. Załączył bym gotowy kod gotowy kod, ale nie wiem jak wgrać tutaj pliki. Plików *.h i *.c nie przyjmuje.<br />Wstawienie listingu to kilkaset linii kodu.<br /><br />Dziekuję za wspólną pracę.<br />Pozrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 23:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-06T23:23:10+01:00</updated>
<published>2013-02-06T23:23:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27087#p27087</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27087#p27087"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27087#p27087"><![CDATA[
No jak pisałem wyżej - KAŻDY kontroler trzeba oddzielnie zainicjalizować - nie ma że boli <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> — 6 lut 2013, o 23:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T23:14:46+01:00</updated>
<published>2013-02-06T23:14:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27083#p27083</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27083#p27083"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27083#p27083"><![CDATA[
Juz prawie mam. Wiersz 1 i 2 jest OK, wiersz 3 i 4 prawie OK, gdyż tekst wyswietla prawidłowo, a wszystkie pozostałe miejsca na ekranie są czarne.<br />Czyżby jakas inicjalizacja ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 23:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-06T23:05:55+01:00</updated>
<published>2013-02-06T23:05:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27081#p27081</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27081#p27081"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27081#p27081"><![CDATA[
No bo pewnie zainicjalizowałeś tylko górny sterownik .... dlatego całą inicjalizację musisz tak przerobić aby raz poleciała tylko z E1 i drugi raz z E2<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 lut 2013, o 23:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T22:54:36+01:00</updated>
<published>2013-02-06T22:54:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27079#p27079</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27079#p27079"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27079#p27079"><![CDATA[
Nie bardzo wiem jak dalej to ugryźć. Zmienną e zrobiłem jako globalną uint8_t. I nie będę jej transferował porpzez funkcje poścednie. Dopiero w funkcji lcd_write_byte() dam warunek i odpowiednio wysteruję E1 lub E2<br /><br />[syntax=cpp]void _lcd_write_byte(unsigned char _data)<br />{<br />// Ustawienie pinów portu LCD D4..D7 jako wyjścia<br />data_dir_out();<br /><br />#if USE_RW == 1<br />CLR_RW;<br />#endif<br /><br />switch(e)<br />{<br />case 0: SET_E1;break;<br />case 1: SET_E2;break;<br />}<br />lcd_sendHalf(_data &gt;&gt; 4);// wysłanie starszej części bajtu danych D7..D4<br />switch(e)<br />{<br />case 0: CLR_E1;SET_E1;break;<br />case 1: CLR_E2;SET_E2;break;<br />}<br />lcd_sendHalf(_data);// wysłanie młodszej części bajtu danych D3..D0<br />switch(e)<br />{<br />case 0: CLR_E1;break;<br />case 1: CLR_E2;break;<br />}<br /><br />#if USE_RW == 1<br />while( (check_BF() &amp; (1&lt;&lt;7)) );<br />#else<br />_delay_us(120);<br />#endif<br /><br />}[/syntax]<br />nawet się skompilowało, ale niestety wiersze 3 i 4 czarne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-06T22:29:17+01:00</updated>
<published>2013-02-06T22:29:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27074#p27074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27074#p27074"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27074#p27074"><![CDATA[
A po co ? przecież nie zmieniają ci się numery wierszy zawsze do sterownika musi polecieć wiersz albo 0 albo 1<br /><br />tylko odpowiednią linię E musisz wysterować<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />czyli translacja wierszy 0-3 na poziomie tej funkcji a w zależności np od jakiejś dodatkowej zmiennej załączanie odpowiedniej linii E<br />czyli jak do tej funkcji przylecą wiersze 0-1 to załączać masz E1 a jak przylecą wiersze 2-3 to i tak zamienisz je na 0-1 ale załączysz E1 <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> — 6 lut 2013, o 22:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T22:26:46+01:00</updated>
<published>2013-02-06T22:26:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27073#p27073</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27073#p27073"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27073#p27073"><![CDATA[
<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> no dobra, przystawiło mnie w pewnym momencie. Powiedzmy, ze przerobilem lcd_locate() gdzie dodąłem zmienną e, która w zależności od LCD_Y przyjmuje wartość 1 lub 2. Ale Wychodzi na to, ze teraz musze tą dodatkowa zmienną transferować przez wszystkie dalsze funkcje czyli lcd_write_cmd(), lcd_write_byte() itd.<br />[syntax=cpp]void lcd_locate(uint8_t y, uint8_t x)<br />{<br />uint8_t e;<br />switch(y)<br />{<br />case 0: y = LCD_LINE1; e=1; break;<br /><br />#if (LCD_Y&gt;1)<br />    case 1: y = LCD_LINE2; e=1; break; // adres 1 znaku 2 wiersza<br />#endif<br />#if (LCD_Y&gt;2)<br />    case 2: y = LCD_LINE1; e=2; break; // adres 1 znaku 3 wiersza<br />#endif<br />#if (LCD_Y&gt;3)<br />    case 3: y = LCD_LINE2; e=2; break; // adres 1 znaku 4 wiersza<br />#endif<br />}<br /><br />lcd_write_cmd( e,(0x80 + y + x) );<br />}<br />#endif[/syntax]<br />Wywołań tej funkcji jest wiele i wychodzi na to, ze trzeba będzie w niektórych np. lcd_defchar() też wstawić zmienną e, któa w tym miejscu nie wiadomo jaką ma mieć wartość. Przecież wywołując lcd_defchar() nie zawsze musi być najpierw lcd_locate() gdzie ustalamy wartość e.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-06T21:51:48+01:00</updated>
<published>2013-02-06T21:51:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27069#p27069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27069#p27069"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27069#p27069"><![CDATA[
poczekamy , bo ładnie ci to wychodzi wiec na razie nie będziemy przeszkadzać ... <br />pamiętaj ze w ten sposób wiele się nauczysz <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=58">SunRiver</a> — 6 lut 2013, o 21:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-06T21:50:37+01:00</updated>
<published>2013-02-06T21:50:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27068#p27068</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27068#p27068"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27068#p27068"><![CDATA[
No i w bardzo dobrym kierunku pan idziesz z tą przeróbką <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> — 6 lut 2013, o 21:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T21:38:39+01:00</updated>
<published>2013-02-06T21:38:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27065#p27065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27065#p27065"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27065#p27065"><![CDATA[
<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> no raczej nie - to jest DMC40457 OPTREX (made in Japan)<br />Czytałem notke pdf  - różnica w stosunku do pojedynczego polega tylko na dwóch liniach E1 i E2.<br /><br />Siedze i przerabiam libsy mirka. Zejdzie mi z tydzień.<br /><br />Zdefiniowałem dodatkowe porty dla E1 na PD4 oraz E2 na PD6,<br />nie wiem co z adresami wierszy bo wygląda na to, że wiersze 3 i 4 powinny miec te same adresy<br />[syntax=cpp]#if ( (LCD_Y == 4) &amp;&amp; (LCD_X == 16) )<br />#define LCD_LINE1 0x00// adres 1 znaku 1 wiersza<br />#define LCD_LINE2 0x28// adres 1 znaku 2 wiersza<br />#define LCD_LINE3 0x14  // adres 1 znaku 3 wiersza  ???<br />#define LCD_LINE4 0x54  // adres 1 znaku 4 wiersza  ???<br />#else<br />#define LCD_LINE1 0x00// adres 1 znaku 1 wiersza<br />#define LCD_LINE2 0x40// adres 1 znaku 2 wiersza<br />#define LCD_LINE3 0x10  // adres 1 znaku 3 wiersza  ???<br />#define LCD_LINE4 0x50  // adres 1 znaku 4 wiersza  ???<br />#endif[/syntax]<br />przerobiłem lcd_init()<br />[syntax=cpp]void lcd_init(void)<br />{<br />// inicjowanie pinów portów ustalonych do podłączenia z wyświetlaczem LCD<br />// ustawienie wszystkich jako wyjścia<br />data_dir_out();<br />DDR(LCD_RSPORT) |= (1&lt;&lt;LCD_RS);<br />DDR(LCD_E1PORT) |= (1&lt;&lt;LCD_E1);<br />DDR(LCD_E2PORT) |= (1&lt;&lt;LCD_E2);<br />#if USE_RW == 1<br />DDR(LCD_RWPORT) |= (1&lt;&lt;LCD_RW);<br />#endif<br /><br />// wyzerowanie wszystkich linii sterujących<br />PORT(LCD_RSPORT) &amp;= ~(1&lt;&lt;LCD_RS);<br />PORT(LCD_E1PORT) &amp;= ~(1&lt;&lt;LCD_E1);<br />PORT(LCD_E2PORT) &amp;= ~(1&lt;&lt;LCD_E2);<br />#if USE_RW == 1<br />PORT(LCD_RWPORT) &amp;= ~(1&lt;&lt;LCD_RW);<br />#endif[/syntax]<br />myslę, ze teraz trzeba by sie zająć lcd_write_byte() gdyż tu jest używana linia E wyświetlacza i jakoś uzaleznić to od numeru wierszy<br />[syntax=cpp]void _lcd_write_byte(unsigned char _data)<br />{<br />// Ustawienie pinów portu LCD D4..D7 jako wyjścia<br />data_dir_out();<br /><br />#if USE_RW == 1<br />CLR_RW;<br />#endif<br />SET_E1;<br />lcd_sendHalf(_data &gt;&gt; 4);// wysłanie starszej części bajtu danych D7..D4<br />CLR_E1;<br /><br />SET_E1;<br />lcd_sendHalf(_data);// wysłanie młodszej części bajtu danych D3..D0<br />CLR_E1;<br /><br />#if USE_RW == 1<br />while( (check_BF() &amp; (1&lt;&lt;7)) );<br />#else<br />_delay_us(120);<br />#endif[/syntax]<br />Czy ktoś pomoże?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 21:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-06T20:42:17+01:00</updated>
<published>2013-02-06T20:42:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27059#p27059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27059#p27059"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27059#p27059"><![CDATA[
Czyli masz jakiś KS00066 lub cos jeszcze bardziej chińskiego<br /><br />dobra to teraz już wiadomo na czym stoimy ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 6 lut 2013, o 20:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T20:40:51+01:00</updated>
<published>2013-02-06T20:40:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27058#p27058</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27058#p27058"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27058#p27058"><![CDATA[
Sprawdziłem na żywo, spinając razem E1 i E2 otrzymujemy efekt że w liniach nr 1 i 2 wyświetla to samo co w 3 i 4.<br /><br />Może by ktoś podsunął pomysł jak przerobić biblioteki aby liniijkę 3 i 4 obsługiwał oddzielny port uC. Gdzie wstawić warunek sprawdzający która linia będzie wyświetlana i odpowienie sterowanie E1 lub E2.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 20:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-06T15:59:19+01:00</updated>
<published>2013-02-06T15:59:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27029#p27029</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27029#p27029"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27029#p27029"><![CDATA[
dokładnie jak mówi SunRiver, można je traktować jako dwa niezależne wyświetlacze 2x40 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tylko w swoim programie martwić się o wstawianie numeracji wierszy ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 lut 2013, o 15:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-06T15:14:40+01:00</updated>
<published>2013-02-06T15:14:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27021#p27021</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27021#p27021"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27021#p27021"><![CDATA[
powinien dobrze działać bo bedziesz miał oba kontrolery właczone <br />on jest podzielony na 2x 2x20  i to tyle , potem tylko adresowanie wierszy<br />kwestia tylko tego na ile jest kompatybilny z HD44780 zamiennik którego uzyli dlatego musisz <br />to sprawdzić oryginalne HD44780 chodzą bez problemu w ten sposób <br /><br />jak cos to ci pomoge przy libsie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 6 lut 2013, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T15:10:28+01:00</updated>
<published>2013-02-06T15:10:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27020#p27020</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27020#p27020"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27020#p27020"><![CDATA[
Mysle, że połączyć razem to raczej nie, gdyż wtedy wyświetlacz wyswietlał by w 1 i 2 linii to samo co w 3 i 4.<br />Trzeba raczej oddzielnie sterować E1 i E2.<br />Nie jestem na tyle biegły, aby tak dostosować kod aby np. wywołanie lcd_locate(3,0) powodowało wyświetlenie znaków tylko w linii 3-ciej czyli wewnątrz kodu musi być sprawdzenie, że 3-cia linia odnosi sie do linii E2.<br /><br />Sprawdzę dzisiaj jak zachowa się ten lcd przy połączeniu E1 i E2.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-06T14:58:38+01:00</updated>
<published>2013-02-06T14:58:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27019#p27019</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27019#p27019"/>
<title type="html"><![CDATA[Re: LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27019#p27019"><![CDATA[
możesz sterować oddzielnie lub obie linie E1 i E2 połączyć razem  <br />co będzie dla ciebie lepsze sprawdzisz doświadczalnie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 6 lut 2013, o 14:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jwalentek]]></name></author>
<updated>2013-02-06T14:34:06+01:00</updated>
<published>2013-02-06T14:34:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27017#p27017</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27017#p27017"/>
<title type="html"><![CDATA[LCD 4x40 modyfikacja bibliotek, C dla AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2276&amp;p=27017#p27017"><![CDATA[
Witam kolegów,<br /><br />Zdobyłem ostatnio wyświetlacz LCD 4x40 zbudowany na 2-ch sterownikach HD44780. LCD on posiada dwie linie enable E1 i E2. Pierwsza E1 do odsługi linii 1 i 2 wyświetlacza a druga E2 obsługuje linię 3 i 4. Reszta linii jest wspólna.<br /><br />Może ktoś ma pomysł jak sprytnie dostosować gotowe bilioteki (korzystam z bibiotek Pana Mirka), aby łatwo sterować wszystkimi liniami wyświetlacza wywołując np. polecenie lcd_locate(x,y). Rozumuję, że system powiniem w zależności od numeru linii czyli 1 i 2 aktywować linie enable E1 a przy próbie wyświetlenia tekstu w linii 3 lub 4 aktywowac linie enable E2.<br /><br />Z góry dziekuje za sugestie.<br /><br />Pozdrawiam<br />Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=876">jwalentek</a> — 6 lut 2013, o 14:34</p><hr />
]]></content>
</entry>
</feed>