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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8431&amp;mode</id>
<entry>
<author><name><![CDATA[#99]]></name></author>
<updated>2014-09-06T21:46:14+01:00</updated>
<published>2014-09-06T21:46:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94521#p94521</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94521#p94521"/>
<title type="html"><![CDATA[Re: Lcd z odczytem busy flag]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94521#p94521"><![CDATA[
Działa. Dziękuję za pomoc <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=4052">#99</a> — 6 wrz 2014, o 21:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-09-06T19:26:27+01:00</updated>
<published>2014-09-06T19:26:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94507#p94507</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94507#p94507"/>
<title type="html"><![CDATA[Re: Lcd z odczytem busy flag]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94507#p94507"><![CDATA[
W linii 93 odczytywałbym rejestr PINB, a nie PORTB:<br /><br />[syntax=c]read_data = LCD_DATA_PIN; //odczytu mozna dokonac po max 320ns[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 6 wrz 2014, o 19:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[#99]]></name></author>
<updated>2014-09-06T18:57:03+01:00</updated>
<published>2014-09-06T18:57:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94503#p94503</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94503#p94503"/>
<title type="html"><![CDATA[Lcd z odczytem busy flag]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8431&amp;p=94503#p94503"><![CDATA[
Witam! Prosiłbym o rzucenie okiem na bibliotekę do obsługi lcd, bez odczytu busy flagi i sygnałem RW połączonym z masą wszystko dziła ok ale gdy chcę użyć sygnał RW już nie działa.<br />[syntax=c]#ifndef LCD_H_<br />#define LCD_H_<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//------------------------------------------------------------------------------------------<br />// Konfiguracja sygnałów sterujących<br />//<br />//(ważna kolejnosć podłączenia bitów danych D0..D7 kolejno Px0..Px7)<br />//<br />// dołącz do kompilacji:   1 - włączone   0 - wyłączone<br />//-----------------------------------------------------------------------------------------<br /><br /><br />#define USE_RW 1<br />#define USE_HEX2DEC 0<br /><br />#define LCD_DATA_DIR DDRB<br />#define LCD_DATA_PORT PORTB<br />#define LCD_DATA_PIN PINB<br /><br />#define LCD_RS_DIR DDRD<br />#define LCD_RS_PORT PORTD<br />#define LCD_RS (1&lt;&lt;PD0)<br /><br />#define LCD_RW_DIR DDRC<br />#define LCD_RW_PORT PORTC<br />#define LCD_RW (1&lt;&lt;PC0)<br /><br />#define LCD_E_DIR DDRD<br />#define LCD_E_PORT PORTD<br />#define LCD_E (1&lt;&lt;PD1)<br /><br />#define LCD_K_DIR DDRD<br />#define LCD_K_PORT PORTD<br />#define LCD_K (1&lt;&lt;PD7)<br /><br /><br />//-----------------------------------------------------------------------------------<br /><br /><br /><br />//-----------------------------------------------------------------------------------<br />//Zmienne do pliku lcd.c<br />//-----------------------------------------------------------------------------------<br /><br />char *text; //wskaźnik przekazujący adres zerowego elementu tablicy<br />//-----------------------------------------------------------------------------------<br /><br /><br /><br />//-----------------------------------------------------------------------------------<br />//Deklaracje funkcji pliku lcd.c<br />//-----------------------------------------------------------------------------------<br /><br />void lcd_init(void); //inicjalizacja<br />//void lcd_write_command(uint8_t data); //rejestr sterujący<br />//void lcd_write_data(uint8_t data); //rejestr danych<br />void lcd_write_text(char *text); //wypisanie stringa na LCD (jako argument sama nazwa tablicy)<br />void lcd_cursor_position(uint8_t position);<br />void lcd_clr(void); //czysci wyswietlacz, ustawia kursor na pozycji 0,0 , inkrementacja<br />void lcd_display_on(void);<br />void LcdWrite(uint8_t data);<br />void LcdWriteData(uint8_t data);<br />void LcdWriteCommand(uint8_t data);<br />uint8_t LcdRead(void);<br />uint8_t LcdReadBusyFlag(void);<br />//------------------------------------------------------------------------------------------<br /><br /><br />#endif[/syntax]<br /><br />oraz funkcje:<br /><br />[syntax=c]#include &quot;lcd.h&quot;<br /><br /><br />void lcd_init(void)<br />{<br />LCD_DATA_DIR = 0xFF;<br />LCD_RS_DIR |= LCD_RS;<br />LCD_E_DIR |= LCD_E;<br />#if USE_RW == 1<br />LCD_RW_DIR |= LCD_RW;<br />#endif<br />LCD_K_DIR |= LCD_K;<br /><br />LCD_RS_PORT &amp;= ~LCD_RS;<br />LCD_E_PORT &amp;= ~LCD_E;<br />#if USE_RW == 1<br />LCD_RW_PORT &amp;= ~LCD_RW;<br />#endif<br />LCD_K_PORT &amp;= ~LCD_K;<br /><br />_delay_ms(15); //ustabilizowanie napięcia<br /><br /><br />LCD_E_PORT |= LCD_E;<br />_delay_us(1);<br />LCD_DATA_PORT = 0x30;<br />LCD_E_PORT &amp;= ~LCD_E;<br />_delay_ms(5);<br /><br />LCD_E_PORT |= LCD_E;<br />_delay_us(1);<br />LCD_DATA_PORT = 0x30;<br />LCD_E_PORT &amp;= ~LCD_E;<br />_delay_us(120);<br /><br />LCD_E_PORT |= LCD_E;<br />_delay_us(1);<br />LCD_DATA_PORT = 0x30;<br />LCD_E_PORT &amp;= ~LCD_E;<br />_delay_ms(1);<br /><br />LcdWriteCommand(0x3F); //8-bitowy, 2-wierszowy, rozmiar 5x7<br />LcdWriteCommand(0x06); //inkrementacja kursora po zapisie znaku<br />lcd_display_on();<br />lcd_clr();<br /><br />}<br /><br /><br />void LcdWrite(uint8_t data)<br />{<br />LCD_DATA_DIR = 0xFF;<br />LCD_E_PORT &amp;= ~LCD_E;<br />#if USE_RW == 1<br />LCD_RW_PORT &amp;= ~LCD_RW;<br />#endif<br />_delay_us(1);<br />LCD_E_PORT |= LCD_E;<br />LCD_DATA_PORT = data;<br />_delay_us(1);<br />LCD_E_PORT &amp;= ~LCD_E;<br /><br />#if USE_RW == 1<br />while( LcdReadBusyFlag() );<br />#else<br />_delay_ms(1);<br />#endif<br />}<br /><br />void LcdWriteCommand(uint8_t data)<br />{<br />LCD_RS_PORT &amp;= ~LCD_RS;<br />LcdWrite(data);<br />}<br /><br />void LcdWriteData(uint8_t data)<br />{<br />LCD_RS_PORT |= LCD_RS;<br />LcdWrite(data);<br />}<br /><br />#if USE_RW == 1<br />uint8_t LcdRead(void)<br />{<br />uint8_t read_data;<br /><br />LCD_DATA_DIR = 0x00;<br />LCD_E_PORT &amp;= ~LCD_E;<br />LCD_RW_PORT |= LCD_RW;<br />_delay_us(1);<br />LCD_E_PORT |= LCD_E;<br />_delay_us(1);<br />read_data = LCD_DATA_PORT; //odczytu mozna dokonac po max 320ns<br />LCD_E_PORT &amp;= ~LCD_E;<br />_delay_us(1);<br /><br />return read_data;<br />}<br />#endif<br /><br />#if USE_RW == 1<br />uint8_t LcdReadBusyFlag(void)<br />{<br />LCD_RS_PORT &amp;= ~LCD_RS;<br />return ( LcdRead() &amp; 0x80 );<br />}<br />#endif<br /><br />void lcd_write_text(char *text)<br />{<br />while(*text != 0x00)<br />{<br />LcdWriteData(*text);<br />text++;<br />}<br />}<br /><br />void lcd_cursor_position(uint8_t position)<br />{<br />uint8_t cnt = 1;<br /><br />if(position &gt; 40) LcdWriteCommand(0x38); //wyswietlanie drugiel linii<br />LcdWriteCommand(0x02); //kursor w pozycji 0,0<br />while(cnt != position)<br />{<br />LcdWriteCommand(0x14);<br />cnt++;<br />}<br />}<br /><br />void lcd_clr(void)<br />{<br />LcdWriteCommand(0x01);<br />}<br /><br />void lcd_display_on(void)<br />{<br />LcdWriteCommand(0x0C);<br />}<br />#endif[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4052">#99</a> — 6 wrz 2014, o 18:57</p><hr />
]]></content>
</entry>
</feed>