more complete hd44780 initialization; a bit more dox; typo fixes in docs

This commit is contained in:
marschap
2007-12-26 15:40:58 +00:00
parent 6a81513049
commit d64dcf7e11
4 changed files with 33 additions and 20 deletions
+1
View File
@@ -43,6 +43,7 @@ v.0.5dev (ongoing development)
+ hd44780 driver: new ConnectionType ftdi (Thomas Jarosch)
* shuttleVFD driver: fix VendorID, support newer models (Miska Sulander)
+ i2500vfd driver for a graphocal Noritake VFD (Thomas Jarosch)
* hd44780 driver: more complete initialization (idea by Pierre Ossman)
v.0.5.2
* fix switching on/off the Load screen in lcdproc client using the menu
+2 -2
View File
@@ -980,7 +980,7 @@ This type of connection should work with winamp.
</row>
<row>
<entry>nSTRB</entry>
<entry>(1)</entry>
<entry>1</entry>
<entry></entry>
<entry>EN</entry>
<entry>6</entry>
@@ -2128,7 +2128,7 @@ The board, driven by the <code>bwctusb</code> connection type,
does neither support a keypad for input, nor more than one single-controller
display, nor does it allow setting the backlight or brightness.
But you can set the display's contrast using software
(see the <command>Constrast=</command> configuration parameter).
(see the <command>Contrast=</command> configuration parameter).
</para>
<sect4 id="hd44780-bwctusb-config">
+16 -12
View File
@@ -2,9 +2,9 @@
* Interface to low-level driver types, headers and names.
*
* To add support for a new driver in this file:
* \li 1. include your header file
* \li 2. Add a new connectionType
* \li 3. Add an entry in the \c ConnectionMapping structure
* -# include your header file
* -# Add a new connectionType
* -# Add an entry in the \c ConnectionMapping structure
*/
#ifndef HD44780_DRIVERS_H
@@ -32,26 +32,28 @@
// add new connection type header files here
// connectionType enumerator:
// - string to identify connection in config file
// - connection type identifier
// - interface type
// - initialisation function
/** connectionType mapping table:
* - string to identify connection in config file
* - connection type identifier
* - interface type
* - initialisation function
*/
static const ConnectionMapping connectionMapping[] = {
#ifdef HAVE_PCSTYLE_LPT_CONTROL
/* parallel connection types */
{ "4bit", HD44780_CT_4BIT, IF_TYPE_PARPORT, hd_init_4bit },
{ "8bit", HD44780_CT_8BIT, IF_TYPE_PARPORT, hd_init_ext8bit },
{ "serialLpt", HD44780_CT_SERIALLPT, IF_TYPE_PARPORT, hd_init_serialLpt },
{ "winamp", HD44780_CT_WINAMP, IF_TYPE_PARPORT, hd_init_winamp },
#endif
/* Serial connectiontypes */
/* serial connection types */
{ "picanlcd", HD44780_CT_PICANLCD, IF_TYPE_SERIAL, hd_init_serial },
{ "lcdserializer", HD44780_CT_LCDSERIALIZER, IF_TYPE_SERIAL, hd_init_serial },
{ "los-panel", HD44780_CT_LOS_PANEL, IF_TYPE_SERIAL, hd_init_serial },
{ "vdr-lcd", HD44780_CT_VDR_LCD, IF_TYPE_SERIAL, hd_init_serial },
{ "vdr-wakeup", HD44780_CT_VDR_WAKEUP, IF_TYPE_SERIAL, hd_init_serial },
{ "pertelian", HD44780_CT_PERTELIAN, IF_TYPE_SERIAL, hd_init_serial },
/* End serial connectiontypes */
/* USB connection types */
{ "lis2", HD44780_CT_LIS2, IF_TYPE_USB, hd_init_lis2 },
{ "mplay", HD44780_CT_MPLAY, IF_TYPE_USB, hd_init_lis2 },
#ifdef HAVE_LIBUSB
@@ -61,11 +63,13 @@ static const ConnectionMapping connectionMapping[] = {
#ifdef HAVE_LIBFTDI
{ "ftdi", HD44780_CT_FTDI, IF_TYPE_USB, hd_init_ftdi },
#endif
/* I2C connection types */
#ifdef HAVE_I2C
{ "i2c", HD44780_CT_I2C, IF_TYPE_I2C, hd_init_i2c },
#endif
// add new connection types and their string specifier here
// default, end of structure element (do not delete)
// add new connection types here
// ....
// default, end of structure element (do not delete)
{ NULL, HD44780_CT_UNKNOWN, IF_TYPE_UNKNOWN, NULL }
};
+14 -6
View File
@@ -456,16 +456,20 @@ HD44780_init(Driver *drvthis)
/**
* Common initialisation sequence - sets cursor off and not blinking,
* clear display and homecursor
* Does not set twoline mode nor small characters (5x8). The init function of
* the connectiontype should do this.
* Common initialisation sequence:
* - set twoline mode, small (5x8) charactersi & 4- or 8-bit mode
* - set display on & cursor off, not blinking,
* - set output mode to lefto-to-right & turn off display scolling
* - clear display & move cursor home
* .
* \param p Pointer to PrivateData structure.
* \param if_bit Command bits for 4- resp. 8-bit mode
*/
void
common_init(PrivateData *p, unsigned char if_bit)
{
if (p->ext_mode) {
// Set up extended mode */
// Set up extended mode
p->hd44780_functions->senddata(p, 0, RS_INSTR, FUNCSET | if_bit | TWOLINE | SMALLCHAR | EXTREG);
p->hd44780_functions->uPause(p, 40);
p->hd44780_functions->senddata(p, 0, RS_INSTR, EXTMODESET | FOURLINE);
@@ -475,6 +479,8 @@ common_init(PrivateData *p, unsigned char if_bit)
p->hd44780_functions->uPause(p, 40);
p->hd44780_functions->senddata(p, 0, RS_INSTR, ONOFFCTRL | DISPON | CURSOROFF | CURSORNOBLINK);
p->hd44780_functions->uPause(p, 40);
p->hd44780_functions->senddata(p, 0, RS_INSTR, ENTRYMODE | E_MOVERIGHT | NOSCROLL);
p->hd44780_functions->uPause(p, 40);
p->hd44780_functions->senddata(p, 0, RS_INSTR, CLEAR);
p->hd44780_functions->uPause(p, 1600);
p->hd44780_functions->senddata(p, 0, RS_INSTR, HOMECURSOR);
@@ -483,7 +489,9 @@ common_init(PrivateData *p, unsigned char if_bit)
/**
* Delay a number of microseconds
* Delay a number of microseconds.
* \param p Pointer to PrivateData structure.
* \param usecs Number of micro-seconds to sleep.
*/
void
uPause(PrivateData *p, int usecs)