You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(6) |
Feb
(2) |
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
(9) |
Oct
(2) |
Nov
(3) |
Dec
|
2002 |
Jan
|
Feb
(4) |
Mar
(5) |
Apr
(1) |
May
(12) |
Jun
(3) |
Jul
(7) |
Aug
(10) |
Sep
(5) |
Oct
(6) |
Nov
(2) |
Dec
|
2003 |
Jan
(3) |
Feb
(11) |
Mar
(9) |
Apr
(6) |
May
(2) |
Jun
(1) |
Jul
(2) |
Aug
(36) |
Sep
(19) |
Oct
(54) |
Nov
(14) |
Dec
(23) |
2004 |
Jan
(30) |
Feb
(49) |
Mar
(35) |
Apr
(9) |
May
(18) |
Jun
(3) |
Jul
(8) |
Aug
(1) |
Sep
(15) |
Oct
(6) |
Nov
(5) |
Dec
(21) |
2005 |
Jan
(32) |
Feb
(14) |
Mar
(2) |
Apr
(13) |
May
(7) |
Jun
(31) |
Jul
(14) |
Aug
(27) |
Sep
(9) |
Oct
(19) |
Nov
(9) |
Dec
(13) |
2006 |
Jan
(35) |
Feb
(8) |
Mar
(27) |
Apr
(16) |
May
(4) |
Jun
(5) |
Jul
(20) |
Aug
(53) |
Sep
(58) |
Oct
(19) |
Nov
(21) |
Dec
(11) |
2007 |
Jan
(42) |
Feb
(20) |
Mar
(5) |
Apr
(14) |
May
(18) |
Jun
(11) |
Jul
(22) |
Aug
(17) |
Sep
(2) |
Oct
(8) |
Nov
|
Dec
(2) |
2008 |
Jan
(25) |
Feb
(1) |
Mar
(4) |
Apr
(5) |
May
(5) |
Jun
|
Jul
(4) |
Aug
|
Sep
(1) |
Oct
(6) |
Nov
|
Dec
|
2009 |
Jan
(2) |
Feb
(4) |
Mar
|
Apr
|
May
(10) |
Jun
|
Jul
(7) |
Aug
(6) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
|
2010 |
Jan
(17) |
Feb
(2) |
Mar
(2) |
Apr
(6) |
May
(4) |
Jun
(2) |
Jul
(1) |
Aug
(5) |
Sep
(4) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(4) |
May
(5) |
Jun
|
Jul
(11) |
Aug
(2) |
Sep
(2) |
Oct
(5) |
Nov
(5) |
Dec
(18) |
2012 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(2) |
May
(3) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
(2) |
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
(5) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
(4) |
Oct
(1) |
Nov
|
Dec
|
2015 |
Jan
|
Feb
(4) |
Mar
|
Apr
(12) |
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(3) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Texas E. <tex...@ou...> - 2025-06-22 06:29:17
|
I just got myself a new 5" IPS LCD that has a USB connection. I am able to use the provided software to pull data from windows, but I am having frustration with using it in Linux. When I plug it into a Ubuntu system, lsusb identifies it as: Bus 001Device 002: ID 1a86:8040 QinHeng Electronics USB CDC-Serial I have tried using the dpf driver, but I am unable to even get lcd4linux to even recognize the device. I have tried: Port 'USB:1a86/8040' Port '`/dev/bus/usb/001/002`' Port 'usb0' through 'usb5' Always the same result... spf_ax_open: no matching USB device '<port>' found! Additional details: * It's a generic $30 5" lcd from aliexpress that says it will work with lcd4linux as DPF * The windows version of the software identified this lcd as 'CSM050H800480_ 14 NAND' * The windows software has a rudemenatary, albeit function, GUI designer. Not sure yet how to either over-ride it or integrate with it... that will be next, after I can get Linux to see it. Any suggestions on how to find the right port? Thanks!!! |
From: dreieck <lin...@gm...> - 2024-10-21 22:59:40
|
Ahoj, I have a "feature wish" for LCD4Linux. * Use case: OpenWrt router with graphics output with a tiny HDMI display connected. OpenWrt does not (easily) support graphical environment, but shows a Linux console which is accessible via `/dev/tty0`, and also a framebuffer via `/dev/fb0`. I like to show status information there. For this, a simple to use output driver like the `curses` output driver is missing, which does _not_ show additional debugging information or a frame (the `curses` driver does show that). Without that, it would be an ideal driver for small displays showing the linux console, by directing the output to `/dev/tty<n>`. So, I have two feature wishes: 1. A curses output without debugging and frame (or where this can be configured), 2. a simple text file output. Regards! |
From: <16...@bo...> - 2016-06-19 10:14:27
|
New binary for freetz needed |
From: Ani A <ani...@gm...> - 2016-05-11 03:48:20
|
Hello Ani, > > you may refer to the plugins "menu" and "layout" that I offered in a mail > to the mailing list Lcd4linux-devel in November 2015: > > https://sourceforge.net/p/lcd4linux/mailman/message/34585173 > > > This plugins may be used to achieve your goals: > - create menus > - swap layouts dynamically (while runtime) > > Unfortunately there are some problems: > > 1. > The diff attached in the mail hasn't been reviewed an checked in yet. > > So you'd have to get the current L4L sources, apply the diff and make > executables yourself. > > 2. > The plugins should work with a graphic display but have been tested with > a text display/emulator only. > > 3. > I don't know if there is a driver for the GIR128032C-BNFA dispay with > buttons > you've mentioned in an other mail. > > > Regards > > Marcus > Thanks Marcus, I wanted to avoid building custom binary, and rely on installing from the Ubuntu repo, so for now I have got a basic 2-level menu being read from file - if I hit a blocker with that approach, then I will pick this patch. Thanks for pointing me to this diff, I will grok through it, and be prepared. Regards, Ani |
From: Marcus M. <cod...@gm...> - 2016-05-10 20:39:23
|
Hello Ani, you may refer to the plugins "menu" and "layout" that I offered in a mail to the mailing list Lcd4linux-devel in November 2015: https://sourceforge.net/p/lcd4linux/mailman/message/34585173 This plugins may be used to achieve your goals: - create menus - swap layouts dynamically (while runtime) Unfortunately there are some problems: 1. The diff attached in the mail hasn't been reviewed an checked in yet. So you'd have to get the current L4L sources, apply the diff and make executables yourself. 2. The plugins should work with a graphic display but have been tested with a text display/emulator only. 3. I don't know if there is a driver for the GIR128032C-BNFA dispay with buttons you've mentioned in an other mail. Regards Marcus |
From: Ani A <ani...@gm...> - 2016-05-04 11:09:58
|
Hello, I want to create some Menus, as in selecting one, might lead to a different page with a different set of options 1. A 2. B 3. C And on selecting (say) B, would show a page 2.1 B1 2.2 B2 2.3 B3 To create and use such Menu's, I see there was a plugin, but Wiki says its removed, or was only a prototype! How do I achieve this with the present LCD4Linux distribution ? Can I swap Layouts dynamically? -- Ani |
From: Ani A <ani...@gm...> - 2016-04-26 10:40:32
|
Hello, I have a GIR128032C-BNFA graphical LCD based device, and it has 5 buttons to the side (up,down,left,right and select). I wanted to know if LCD4Linux has options to handle these buttons? Or, is LCD4Linux _display_ only? (in which case I can use LCD4Linux for handling the display, and have an additional program to handle the buttons) Thanks. -- Ani |
From: Michael R. <mi...@re...> - 2015-06-18 17:12:09
|
Patch has been applied an checked in. Thanks a lot! Am 2015-06-18 um 18:00 schrieb Michael Grzeschik: > From: Michael Grzeschik <m.g...@pe...> > > This patch adds support for dual i2c io-expander > based 8bit support for HD44780. It multiplexes the > switch between the data and databits. > > Signed-off-by: Michael Grzeschik <m.g...@pe...> > --- > drv_HD44780.c | 82 ++++++++++++++++++++++++++++++++++++++----------------- > drv_generic_i2c.c | 65 +++++++++++++++++++++++++++++++++---------- > drv_generic_i2c.h | 2 +- > 3 files changed, 109 insertions(+), 40 deletions(-) > > diff --git a/drv_HD44780.c b/drv_HD44780.c > index 26f0bc9..7f4a56a 100644 > --- a/drv_HD44780.c > +++ b/drv_HD44780.c > @@ -706,10 +706,10 @@ static void drv_HD_PP_stop(void) > > */ > > -static void drv_HD_I2C_nibble(unsigned char controller, unsigned char nibble) > +static void drv_HD_I2C(unsigned char controller, unsigned char byte, int rs, int rw) > { > unsigned char enable; > - unsigned char command; /* this is actually the first data byte on the PCF8574 */ > + unsigned char command = 0; /* this is actually the first data byte on the PCF8574 */ > unsigned char data_block[2]; > /* enable signal: 'controller' is a bitmask */ > /* bit n .. send to controller #n */ > @@ -738,28 +738,51 @@ static void drv_HD_I2C_nibble(unsigned char controller, unsigned char nibble) > The main advantage we see is that we do 2 less IOCTL's from our driver. > */ > > - command = nibble; > - data_block[0] = nibble | enable; > - data_block[1] = nibble; > + if (Bits == 4) { > + if (rw) > + byte |= SIGNAL_RW; > + if (rs) > + byte |= SIGNAL_RS; > + command = byte; > + data_block[0] = byte | enable; > + data_block[1] = byte; > + > + } else if (Bits == 8) { > + if (rw) > + command |= SIGNAL_RW; > + if (rs) > + command |= SIGNAL_RS; > + > + data_block[0] = byte; > + data_block[1] = enable; > + } > > - drv_generic_i2c_command(command, data_block, 2); > + drv_generic_i2c_command(command, data_block, 2, Bits); > } > > > static void drv_HD_I2C_byte(const unsigned char controller, const unsigned char data) > { > /* send data with RS enabled */ > - drv_HD_I2C_nibble(controller, ((data >> 4) & 0x0f) | SIGNAL_RS); > - drv_HD_I2C_nibble(controller, (data & 0x0f) | SIGNAL_RS); > + if (Bits == 4) { > + drv_HD_I2C(controller, ((data >> 4) & 0x0f), 1, 0); > + drv_HD_I2C(controller, (data & 0x0f), 1, 0); > + } else if (Bits == 8) { > + drv_HD_I2C(controller, data, 1, 0); > + } > } > > > static void drv_HD_I2C_command(const unsigned char controller, const unsigned char cmd, __attribute__ ((unused)) > const unsigned long delay) > { > - /* send data with RS disabled */ > - drv_HD_I2C_nibble(controller, ((cmd >> 4) & 0x0f)); > - drv_HD_I2C_nibble(controller, ((cmd) & 0x0f)); > + /* send command data with RS disabled */ > + if (Bits == 4) { > + drv_HD_I2C(controller, ((cmd >> 4) & 0x0f), 0, 0); > + drv_HD_I2C(controller, ((cmd) & 0x0f), 0, 0); > + } else if (Bits == 8) { > + drv_HD_I2C(controller, cmd, 0, 0); > + } > } > > static void drv_HD_I2C_data(const unsigned char controller, const char *string, const int len, __attribute__ ((unused)) > @@ -781,13 +804,14 @@ static int drv_HD_I2C_load(const char *section) > { > if (cfg_number(section, "Bits", 8, 4, 8, &Bits) < 0) > return -1; > - if (Bits != 4) { > - error("%s: bad %s.Bits '%d' from %s, should be '4'", Name, section, Bits, cfg_source()); > - return -1; > - } > > info("%s: using %d bit mode", Name, Bits); > > + if (Bits != 4 && Bits != 8) { > + error("%s: bad %s.Bits '%d' from %s, should be '4' or '8'", Name, section, Bits, cfg_source()); > + return -1; > + } > + > if (drv_generic_i2c_open(section, Name) != 0) { > error("%s: could not initialize i2c attached device!", Name); > return -1; > @@ -804,16 +828,24 @@ static int drv_HD_I2C_load(const char *section) > if ((SIGNAL_GPO = drv_generic_i2c_wire("GPO", "GND")) == 0xff) > return -1; > > - /* initialize display */ > - drv_HD_I2C_nibble(allControllers, 0x03); > - udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ > - drv_HD_I2C_nibble(allControllers, 0x03); > - udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ > - drv_HD_I2C_nibble(allControllers, 0x03); > - udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ > - drv_HD_I2C_nibble(allControllers, 0x02); > - udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ > - drv_HD_I2C_command(allControllers, 0x28, T_EXEC); /* 4 Bit mode, 1/16 duty cycle, 5x8 font */ > + if (Bits == 4) { > + /* initialize display */ > + drv_HD_I2C(allControllers, 0x02, 0, 0); > + udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ > + drv_HD_I2C(allControllers, 0x03, 0, 0); > + udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ > + drv_HD_I2C(allControllers, 0x03, 0, 0); > + udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ > + drv_HD_I2C(allControllers, 0x02, 0, 0); > + udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ > + drv_HD_I2C_command(allControllers, 0x28, T_EXEC); /* 4 Bit mode, 1/16 duty cycle, 5x8 font */ > + } else if (Bits == 8) { > + drv_HD_I2C(allControllers, 0x30, 0, 0); /* 8 Bit mode, wait 4.1 ms */ > + udelay(T_INIT1); /* 8 Bit mode, wait 4.1 ms */ > + drv_HD_I2C(allControllers, 0x30, 0, 0); /* 8 Bit mode, wait 100 us */ > + udelay(T_INIT2); /* 8 Bit mode, wait 4.1 ms */ > + drv_HD_I2C_command(allControllers, 0x38, T_EXEC); /* 8 Bit mode, 1/16 duty cycle, 5x8 font */ > + } > > info("%s: I2C initialization done", Name); > > diff --git a/drv_generic_i2c.c b/drv_generic_i2c.c > index 2170b0c..1bee16f 100644 > --- a/drv_generic_i2c.c > +++ b/drv_generic_i2c.c > @@ -62,7 +62,8 @@ > static char *Driver = ""; > static char *Section = ""; > static int i2c_device; > - > +static int ctrldev; > +static int datadev; > > static void my_i2c_smbus_write_byte_data(const int device, const unsigned char val) > { > @@ -91,34 +92,49 @@ static void my_i2c_smbus_read_byte_data(const int device, const unsigned char da > } > #endif > > +int drv_generic_i2c_pre_write(int dev) { > + > + info("%s: selecting slave device 0x%x", Driver, dev); > + if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { > + error("%s: error selecting slave device 0x%x\n", Driver, dev); > + return -EPIPE; > + } > + > + info("%s: initializing I2C slave device 0x%x for output", Driver, dev); > + if (i2c_smbus_write_byte_data(i2c_device, 3, 0) < 0) { > + error("%s: error initializing device 0x%x\n", Driver, dev); > + close(i2c_device); > + } > + > + return 0; > +} > > int drv_generic_i2c_open(const char *section, const char *driver) > { > - int dev; > char *bus, *device; > udelay_init(); > Section = (char *) section; > Driver = (char *) driver; > bus = cfg_get(Section, "Port", NULL); > device = cfg_get(Section, "Device", NULL); > - dev = atoi(device); > + ctrldev = atoi(device); > + device = cfg_get(Section, "DDevice", NULL); > + datadev = atoi(device); > + > info("%s: initializing I2C bus %s", Driver, bus); > if ((i2c_device = open(bus, O_WRONLY)) < 0) { > error("%s: I2C bus %s open failed !\n", Driver, bus); > goto exit_error; > } > - info("%s: selecting slave device 0x%x", Driver, dev); > - if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { > - error("%s: error selecting slave device 0x%x\n", Driver, dev); > - goto exit_error; > - } > > - info("%s: initializing I2C slave device 0x%x", Driver, dev); > - if (i2c_smbus_write_quick(i2c_device, I2C_SMBUS_WRITE) < 0) { > - error("%s: error initializing device 0x%x\n", Driver, dev); > - close(i2c_device); > + if (datadev) { > + if (drv_generic_i2c_pre_write(datadev) < 0) > + goto exit_error; > } > > + if (drv_generic_i2c_pre_write(ctrldev) < 0) > + goto exit_error; > + > return 0; > > exit_error: > @@ -172,8 +188,29 @@ void drv_generic_i2c_data(const unsigned char data) > my_i2c_smbus_write_byte_data(i2c_device, data); > } > > +static void i2c_out(int dev, unsigned char val) > +{ > + info("%s: initializing I2C slave device 0x%x", Driver, dev); > + if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { > + error("%s: error selecting slave device 0x%x\n", Driver, dev); > + return; > + } > + > + i2c_smbus_write_byte_data(i2c_device, 1, val); > +} > > -void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length) > +void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length, int bits) > { > - i2c_smbus_write_block_data(i2c_device, command, length, data); > + if (bits == 4) { > + i2c_smbus_write_block_data(i2c_device, command, length, data); > + } else if (bits == 8 && datadev) { > + /* set data on pins */ > + info("cmd: %08x, data0: %08x, data1: %08x\n", command, data[0], data[1]); > + i2c_out(datadev, data[0]); > + /* set enable pin including optional rs and rw */ > + i2c_out(ctrldev, command | data[1]); > + /* unset enable pin including optional rs and rw */ > + i2c_out(ctrldev, command); > + } > + > } > diff --git a/drv_generic_i2c.h b/drv_generic_i2c.h > index 2cc6a02..bd68e44 100644 > --- a/drv_generic_i2c.h > +++ b/drv_generic_i2c.h > @@ -57,6 +57,6 @@ int drv_generic_i2c_close(void); > unsigned char drv_generic_i2c_wire(const char *name, const char *deflt); > void drv_generic_i2c_byte(const unsigned char data); > void drv_generic_i2c_data(const unsigned char data); > -void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length); > +void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length, int bits); > > #endif > -- Michael Reinelt <mi...@re...> http://home.pages.at/reinelt GPG-Key 0xDF13BA50 ICQ #288386781 |
From: Michael G. <mg...@pe...> - 2015-06-18 16:01:08
|
From: Michael Grzeschik <m.g...@pe...> This patch adds support for dual i2c io-expander based 8bit support for HD44780. It multiplexes the switch between the data and databits. Signed-off-by: Michael Grzeschik <m.g...@pe...> --- drv_HD44780.c | 82 ++++++++++++++++++++++++++++++++++++++----------------- drv_generic_i2c.c | 65 +++++++++++++++++++++++++++++++++---------- drv_generic_i2c.h | 2 +- 3 files changed, 109 insertions(+), 40 deletions(-) diff --git a/drv_HD44780.c b/drv_HD44780.c index 26f0bc9..7f4a56a 100644 --- a/drv_HD44780.c +++ b/drv_HD44780.c @@ -706,10 +706,10 @@ static void drv_HD_PP_stop(void) */ -static void drv_HD_I2C_nibble(unsigned char controller, unsigned char nibble) +static void drv_HD_I2C(unsigned char controller, unsigned char byte, int rs, int rw) { unsigned char enable; - unsigned char command; /* this is actually the first data byte on the PCF8574 */ + unsigned char command = 0; /* this is actually the first data byte on the PCF8574 */ unsigned char data_block[2]; /* enable signal: 'controller' is a bitmask */ /* bit n .. send to controller #n */ @@ -738,28 +738,51 @@ static void drv_HD_I2C_nibble(unsigned char controller, unsigned char nibble) The main advantage we see is that we do 2 less IOCTL's from our driver. */ - command = nibble; - data_block[0] = nibble | enable; - data_block[1] = nibble; + if (Bits == 4) { + if (rw) + byte |= SIGNAL_RW; + if (rs) + byte |= SIGNAL_RS; + command = byte; + data_block[0] = byte | enable; + data_block[1] = byte; + + } else if (Bits == 8) { + if (rw) + command |= SIGNAL_RW; + if (rs) + command |= SIGNAL_RS; + + data_block[0] = byte; + data_block[1] = enable; + } - drv_generic_i2c_command(command, data_block, 2); + drv_generic_i2c_command(command, data_block, 2, Bits); } static void drv_HD_I2C_byte(const unsigned char controller, const unsigned char data) { /* send data with RS enabled */ - drv_HD_I2C_nibble(controller, ((data >> 4) & 0x0f) | SIGNAL_RS); - drv_HD_I2C_nibble(controller, (data & 0x0f) | SIGNAL_RS); + if (Bits == 4) { + drv_HD_I2C(controller, ((data >> 4) & 0x0f), 1, 0); + drv_HD_I2C(controller, (data & 0x0f), 1, 0); + } else if (Bits == 8) { + drv_HD_I2C(controller, data, 1, 0); + } } static void drv_HD_I2C_command(const unsigned char controller, const unsigned char cmd, __attribute__ ((unused)) const unsigned long delay) { - /* send data with RS disabled */ - drv_HD_I2C_nibble(controller, ((cmd >> 4) & 0x0f)); - drv_HD_I2C_nibble(controller, ((cmd) & 0x0f)); + /* send command data with RS disabled */ + if (Bits == 4) { + drv_HD_I2C(controller, ((cmd >> 4) & 0x0f), 0, 0); + drv_HD_I2C(controller, ((cmd) & 0x0f), 0, 0); + } else if (Bits == 8) { + drv_HD_I2C(controller, cmd, 0, 0); + } } static void drv_HD_I2C_data(const unsigned char controller, const char *string, const int len, __attribute__ ((unused)) @@ -781,13 +804,14 @@ static int drv_HD_I2C_load(const char *section) { if (cfg_number(section, "Bits", 8, 4, 8, &Bits) < 0) return -1; - if (Bits != 4) { - error("%s: bad %s.Bits '%d' from %s, should be '4'", Name, section, Bits, cfg_source()); - return -1; - } info("%s: using %d bit mode", Name, Bits); + if (Bits != 4 && Bits != 8) { + error("%s: bad %s.Bits '%d' from %s, should be '4' or '8'", Name, section, Bits, cfg_source()); + return -1; + } + if (drv_generic_i2c_open(section, Name) != 0) { error("%s: could not initialize i2c attached device!", Name); return -1; @@ -804,16 +828,24 @@ static int drv_HD_I2C_load(const char *section) if ((SIGNAL_GPO = drv_generic_i2c_wire("GPO", "GND")) == 0xff) return -1; - /* initialize display */ - drv_HD_I2C_nibble(allControllers, 0x03); - udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ - drv_HD_I2C_nibble(allControllers, 0x03); - udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ - drv_HD_I2C_nibble(allControllers, 0x03); - udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ - drv_HD_I2C_nibble(allControllers, 0x02); - udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ - drv_HD_I2C_command(allControllers, 0x28, T_EXEC); /* 4 Bit mode, 1/16 duty cycle, 5x8 font */ + if (Bits == 4) { + /* initialize display */ + drv_HD_I2C(allControllers, 0x02, 0, 0); + udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ + drv_HD_I2C(allControllers, 0x03, 0, 0); + udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ + drv_HD_I2C(allControllers, 0x03, 0, 0); + udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ + drv_HD_I2C(allControllers, 0x02, 0, 0); + udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ + drv_HD_I2C_command(allControllers, 0x28, T_EXEC); /* 4 Bit mode, 1/16 duty cycle, 5x8 font */ + } else if (Bits == 8) { + drv_HD_I2C(allControllers, 0x30, 0, 0); /* 8 Bit mode, wait 4.1 ms */ + udelay(T_INIT1); /* 8 Bit mode, wait 4.1 ms */ + drv_HD_I2C(allControllers, 0x30, 0, 0); /* 8 Bit mode, wait 100 us */ + udelay(T_INIT2); /* 8 Bit mode, wait 4.1 ms */ + drv_HD_I2C_command(allControllers, 0x38, T_EXEC); /* 8 Bit mode, 1/16 duty cycle, 5x8 font */ + } info("%s: I2C initialization done", Name); diff --git a/drv_generic_i2c.c b/drv_generic_i2c.c index 2170b0c..1bee16f 100644 --- a/drv_generic_i2c.c +++ b/drv_generic_i2c.c @@ -62,7 +62,8 @@ static char *Driver = ""; static char *Section = ""; static int i2c_device; - +static int ctrldev; +static int datadev; static void my_i2c_smbus_write_byte_data(const int device, const unsigned char val) { @@ -91,34 +92,49 @@ static void my_i2c_smbus_read_byte_data(const int device, const unsigned char da } #endif +int drv_generic_i2c_pre_write(int dev) { + + info("%s: selecting slave device 0x%x", Driver, dev); + if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { + error("%s: error selecting slave device 0x%x\n", Driver, dev); + return -EPIPE; + } + + info("%s: initializing I2C slave device 0x%x for output", Driver, dev); + if (i2c_smbus_write_byte_data(i2c_device, 3, 0) < 0) { + error("%s: error initializing device 0x%x\n", Driver, dev); + close(i2c_device); + } + + return 0; +} int drv_generic_i2c_open(const char *section, const char *driver) { - int dev; char *bus, *device; udelay_init(); Section = (char *) section; Driver = (char *) driver; bus = cfg_get(Section, "Port", NULL); device = cfg_get(Section, "Device", NULL); - dev = atoi(device); + ctrldev = atoi(device); + device = cfg_get(Section, "DDevice", NULL); + datadev = atoi(device); + info("%s: initializing I2C bus %s", Driver, bus); if ((i2c_device = open(bus, O_WRONLY)) < 0) { error("%s: I2C bus %s open failed !\n", Driver, bus); goto exit_error; } - info("%s: selecting slave device 0x%x", Driver, dev); - if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { - error("%s: error selecting slave device 0x%x\n", Driver, dev); - goto exit_error; - } - info("%s: initializing I2C slave device 0x%x", Driver, dev); - if (i2c_smbus_write_quick(i2c_device, I2C_SMBUS_WRITE) < 0) { - error("%s: error initializing device 0x%x\n", Driver, dev); - close(i2c_device); + if (datadev) { + if (drv_generic_i2c_pre_write(datadev) < 0) + goto exit_error; } + if (drv_generic_i2c_pre_write(ctrldev) < 0) + goto exit_error; + return 0; exit_error: @@ -172,8 +188,29 @@ void drv_generic_i2c_data(const unsigned char data) my_i2c_smbus_write_byte_data(i2c_device, data); } +static void i2c_out(int dev, unsigned char val) +{ + info("%s: initializing I2C slave device 0x%x", Driver, dev); + if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { + error("%s: error selecting slave device 0x%x\n", Driver, dev); + return; + } + + i2c_smbus_write_byte_data(i2c_device, 1, val); +} -void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length) +void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length, int bits) { - i2c_smbus_write_block_data(i2c_device, command, length, data); + if (bits == 4) { + i2c_smbus_write_block_data(i2c_device, command, length, data); + } else if (bits == 8 && datadev) { + /* set data on pins */ + info("cmd: %08x, data0: %08x, data1: %08x\n", command, data[0], data[1]); + i2c_out(datadev, data[0]); + /* set enable pin including optional rs and rw */ + i2c_out(ctrldev, command | data[1]); + /* unset enable pin including optional rs and rw */ + i2c_out(ctrldev, command); + } + } diff --git a/drv_generic_i2c.h b/drv_generic_i2c.h index 2cc6a02..bd68e44 100644 --- a/drv_generic_i2c.h +++ b/drv_generic_i2c.h @@ -57,6 +57,6 @@ int drv_generic_i2c_close(void); unsigned char drv_generic_i2c_wire(const char *name, const char *deflt); void drv_generic_i2c_byte(const unsigned char data); void drv_generic_i2c_data(const unsigned char data); -void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length); +void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length, int bits); #endif -- 2.1.4 |
From: Michael G. <m.g...@pe...> - 2015-06-18 15:40:57
|
This patch adds support for dual i2c io-expander based 8bit mode for HD44780. It multiplexes the switch between the data and databits on both chips. Signed-off-by: Michael Grzeschik <m.g...@pe...> --- drv_HD44780.c | 82 ++++++++++++++++++++++++++++++++++++++----------------- drv_generic_i2c.c | 65 +++++++++++++++++++++++++++++++++---------- drv_generic_i2c.h | 2 +- 3 files changed, 109 insertions(+), 40 deletions(-) diff --git a/drv_HD44780.c b/drv_HD44780.c index 26f0bc9..7f4a56a 100644 --- a/drv_HD44780.c +++ b/drv_HD44780.c @@ -706,10 +706,10 @@ static void drv_HD_PP_stop(void) */ -static void drv_HD_I2C_nibble(unsigned char controller, unsigned char nibble) +static void drv_HD_I2C(unsigned char controller, unsigned char byte, int rs, int rw) { unsigned char enable; - unsigned char command; /* this is actually the first data byte on the PCF8574 */ + unsigned char command = 0; /* this is actually the first data byte on the PCF8574 */ unsigned char data_block[2]; /* enable signal: 'controller' is a bitmask */ /* bit n .. send to controller #n */ @@ -738,28 +738,51 @@ static void drv_HD_I2C_nibble(unsigned char controller, unsigned char nibble) The main advantage we see is that we do 2 less IOCTL's from our driver. */ - command = nibble; - data_block[0] = nibble | enable; - data_block[1] = nibble; + if (Bits == 4) { + if (rw) + byte |= SIGNAL_RW; + if (rs) + byte |= SIGNAL_RS; + command = byte; + data_block[0] = byte | enable; + data_block[1] = byte; + + } else if (Bits == 8) { + if (rw) + command |= SIGNAL_RW; + if (rs) + command |= SIGNAL_RS; + + data_block[0] = byte; + data_block[1] = enable; + } - drv_generic_i2c_command(command, data_block, 2); + drv_generic_i2c_command(command, data_block, 2, Bits); } static void drv_HD_I2C_byte(const unsigned char controller, const unsigned char data) { /* send data with RS enabled */ - drv_HD_I2C_nibble(controller, ((data >> 4) & 0x0f) | SIGNAL_RS); - drv_HD_I2C_nibble(controller, (data & 0x0f) | SIGNAL_RS); + if (Bits == 4) { + drv_HD_I2C(controller, ((data >> 4) & 0x0f), 1, 0); + drv_HD_I2C(controller, (data & 0x0f), 1, 0); + } else if (Bits == 8) { + drv_HD_I2C(controller, data, 1, 0); + } } static void drv_HD_I2C_command(const unsigned char controller, const unsigned char cmd, __attribute__ ((unused)) const unsigned long delay) { - /* send data with RS disabled */ - drv_HD_I2C_nibble(controller, ((cmd >> 4) & 0x0f)); - drv_HD_I2C_nibble(controller, ((cmd) & 0x0f)); + /* send command data with RS disabled */ + if (Bits == 4) { + drv_HD_I2C(controller, ((cmd >> 4) & 0x0f), 0, 0); + drv_HD_I2C(controller, ((cmd) & 0x0f), 0, 0); + } else if (Bits == 8) { + drv_HD_I2C(controller, cmd, 0, 0); + } } static void drv_HD_I2C_data(const unsigned char controller, const char *string, const int len, __attribute__ ((unused)) @@ -781,13 +804,14 @@ static int drv_HD_I2C_load(const char *section) { if (cfg_number(section, "Bits", 8, 4, 8, &Bits) < 0) return -1; - if (Bits != 4) { - error("%s: bad %s.Bits '%d' from %s, should be '4'", Name, section, Bits, cfg_source()); - return -1; - } info("%s: using %d bit mode", Name, Bits); + if (Bits != 4 && Bits != 8) { + error("%s: bad %s.Bits '%d' from %s, should be '4' or '8'", Name, section, Bits, cfg_source()); + return -1; + } + if (drv_generic_i2c_open(section, Name) != 0) { error("%s: could not initialize i2c attached device!", Name); return -1; @@ -804,16 +828,24 @@ static int drv_HD_I2C_load(const char *section) if ((SIGNAL_GPO = drv_generic_i2c_wire("GPO", "GND")) == 0xff) return -1; - /* initialize display */ - drv_HD_I2C_nibble(allControllers, 0x03); - udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ - drv_HD_I2C_nibble(allControllers, 0x03); - udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ - drv_HD_I2C_nibble(allControllers, 0x03); - udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ - drv_HD_I2C_nibble(allControllers, 0x02); - udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ - drv_HD_I2C_command(allControllers, 0x28, T_EXEC); /* 4 Bit mode, 1/16 duty cycle, 5x8 font */ + if (Bits == 4) { + /* initialize display */ + drv_HD_I2C(allControllers, 0x02, 0, 0); + udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ + drv_HD_I2C(allControllers, 0x03, 0, 0); + udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ + drv_HD_I2C(allControllers, 0x03, 0, 0); + udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ + drv_HD_I2C(allControllers, 0x02, 0, 0); + udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ + drv_HD_I2C_command(allControllers, 0x28, T_EXEC); /* 4 Bit mode, 1/16 duty cycle, 5x8 font */ + } else if (Bits == 8) { + drv_HD_I2C(allControllers, 0x30, 0, 0); /* 8 Bit mode, wait 4.1 ms */ + udelay(T_INIT1); /* 8 Bit mode, wait 4.1 ms */ + drv_HD_I2C(allControllers, 0x30, 0, 0); /* 8 Bit mode, wait 100 us */ + udelay(T_INIT2); /* 8 Bit mode, wait 4.1 ms */ + drv_HD_I2C_command(allControllers, 0x38, T_EXEC); /* 8 Bit mode, 1/16 duty cycle, 5x8 font */ + } info("%s: I2C initialization done", Name); diff --git a/drv_generic_i2c.c b/drv_generic_i2c.c index 2170b0c..1bee16f 100644 --- a/drv_generic_i2c.c +++ b/drv_generic_i2c.c @@ -62,7 +62,8 @@ static char *Driver = ""; static char *Section = ""; static int i2c_device; - +static int ctrldev; +static int datadev; static void my_i2c_smbus_write_byte_data(const int device, const unsigned char val) { @@ -91,34 +92,49 @@ static void my_i2c_smbus_read_byte_data(const int device, const unsigned char da } #endif +int drv_generic_i2c_pre_write(int dev) { + + info("%s: selecting slave device 0x%x", Driver, dev); + if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { + error("%s: error selecting slave device 0x%x\n", Driver, dev); + return -EPIPE; + } + + info("%s: initializing I2C slave device 0x%x for output", Driver, dev); + if (i2c_smbus_write_byte_data(i2c_device, 3, 0) < 0) { + error("%s: error initializing device 0x%x\n", Driver, dev); + close(i2c_device); + } + + return 0; +} int drv_generic_i2c_open(const char *section, const char *driver) { - int dev; char *bus, *device; udelay_init(); Section = (char *) section; Driver = (char *) driver; bus = cfg_get(Section, "Port", NULL); device = cfg_get(Section, "Device", NULL); - dev = atoi(device); + ctrldev = atoi(device); + device = cfg_get(Section, "DDevice", NULL); + datadev = atoi(device); + info("%s: initializing I2C bus %s", Driver, bus); if ((i2c_device = open(bus, O_WRONLY)) < 0) { error("%s: I2C bus %s open failed !\n", Driver, bus); goto exit_error; } - info("%s: selecting slave device 0x%x", Driver, dev); - if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { - error("%s: error selecting slave device 0x%x\n", Driver, dev); - goto exit_error; - } - info("%s: initializing I2C slave device 0x%x", Driver, dev); - if (i2c_smbus_write_quick(i2c_device, I2C_SMBUS_WRITE) < 0) { - error("%s: error initializing device 0x%x\n", Driver, dev); - close(i2c_device); + if (datadev) { + if (drv_generic_i2c_pre_write(datadev) < 0) + goto exit_error; } + if (drv_generic_i2c_pre_write(ctrldev) < 0) + goto exit_error; + return 0; exit_error: @@ -172,8 +188,29 @@ void drv_generic_i2c_data(const unsigned char data) my_i2c_smbus_write_byte_data(i2c_device, data); } +static void i2c_out(int dev, unsigned char val) +{ + info("%s: initializing I2C slave device 0x%x", Driver, dev); + if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { + error("%s: error selecting slave device 0x%x\n", Driver, dev); + return; + } + + i2c_smbus_write_byte_data(i2c_device, 1, val); +} -void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length) +void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length, int bits) { - i2c_smbus_write_block_data(i2c_device, command, length, data); + if (bits == 4) { + i2c_smbus_write_block_data(i2c_device, command, length, data); + } else if (bits == 8 && datadev) { + /* set data on pins */ + info("cmd: %08x, data0: %08x, data1: %08x\n", command, data[0], data[1]); + i2c_out(datadev, data[0]); + /* set enable pin including optional rs and rw */ + i2c_out(ctrldev, command | data[1]); + /* unset enable pin including optional rs and rw */ + i2c_out(ctrldev, command); + } + } diff --git a/drv_generic_i2c.h b/drv_generic_i2c.h index 2cc6a02..bd68e44 100644 --- a/drv_generic_i2c.h +++ b/drv_generic_i2c.h @@ -57,6 +57,6 @@ int drv_generic_i2c_close(void); unsigned char drv_generic_i2c_wire(const char *name, const char *deflt); void drv_generic_i2c_byte(const unsigned char data); void drv_generic_i2c_data(const unsigned char data); -void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length); +void drv_generic_i2c_command(const unsigned char command, /*const */ unsigned char *data, const unsigned char length, int bits); #endif -- 2.1.4 |
From: Baran A. <bar...@go...> - 2015-04-23 11:18:37
|
Hey there, i working on my driver and get a compile error. Does anybody know, what this means? /configure: line 10380: syntax error: unexpected end of file Makefile 381: recipe for target ´config.status´failed make: *** [config.status] Error 2 At the first time, the ./configure command works, after the make command i got this error... ./configure: line 10380: syntax error: unexpected end of file I followed all steps until to run the first compiling (before the framework setup) from the "how to write a new driver“ wiki. I´m not using svn, because i just have read only permissions. thanks! best regards Baran > Am 21.04.2015 um 14:34 schrieb Baran Altundal <Bar...@go...>: > > Oh sry you´re right, i mean read-only :) > > My programming skills to be an developer is not so good, but i want to try, to write a driver for the Raspberry Pi GPIO access or maybe to modify an available driver if its possible. The how_to says: > > use drv_Sample.c as a template but do not simply copy it, but let subversion do the job: > svn cp drv_Sample.c drv_<yourname>.c > > I got an error, but the svn cp and svn up code is working now :/ > > When i do changes on the lcd4linux folder, recognizes the LCD4Linux.conf file int he /etc section, too? Because the main folder which i´m using is lcd4linux-0.10.1-RC2 > > > >> Am 21.04.2015 um 14:03 schrieb Michael Reinelt <mi...@re... <mailto:mi...@re...>>: >> >> Hello baran, >> >>> Is it necessary for the Subversion access to become a developer? >> >> If you plan to do more, its easier, yes. But you can do your modifications, and send me a patch, which I can apply and check in for you. >> >>> At the moment i just have write only permission. >> I am sure you mean "read-only" :-) >> >> regards, Michael >> >> >> -- >> Michael Reinelt <mi...@re... <mailto:mi...@re...>> >> http://home.pages.at/reinelt <http://home.pages.at/reinelt> >> GPG-Key 0xDF13BA50 >> ICQ #288386781 > |
From: Baran A. <bar...@go...> - 2015-04-21 12:34:46
|
Oh sry you´re right, i mean read-only :) My programming skills to be an developer is not so good, but i want to try, to write a driver for the Raspberry Pi GPIO access or maybe to modify an available driver if its possible. The how_to says: use drv_Sample.c as a template but do not simply copy it, but let subversion do the job: svn cp drv_Sample.c drv_<yourname>.c I got an error, but the svn cp and svn up code is working now :/ When i do changes on the lcd4linux folder, recognizes the LCD4Linux.conf file int he /etc section, too? Because the main folder which i´m using is lcd4linux-0.10.1-RC2 > Am 21.04.2015 um 14:03 schrieb Michael Reinelt <mi...@re...>: > > Hello baran, > >> Is it necessary for the Subversion access to become a developer? > > If you plan to do more, its easier, yes. But you can do your modifications, and send me a patch, which I can apply and check in for you. > >> At the moment i just have write only permission. > I am sure you mean "read-only" :-) > > regards, Michael > > > -- > Michael Reinelt <mi...@re...> > http://home.pages.at/reinelt > GPG-Key 0xDF13BA50 > ICQ #288386781 |
From: Michael R. <mi...@re...> - 2015-04-21 12:04:08
|
Hello baran, > Is it necessary for the Subversion access to become a developer? If you plan to do more, its easier, yes. But you can do your modifications, and send me a patch, which I can apply and check in for you. > At the moment i just have write only permission. I am sure you mean "read-only" :-) regards, Michael -- Michael Reinelt <mi...@re...> http://home.pages.at/reinelt GPG-Key 0xDF13BA50 ICQ #288386781 |
From: Baran A. <bar...@go...> - 2015-04-21 11:57:36
|
Is it necessary for the Subversion access to become a developer? As far as i have understood, i need an developer account, but who should i contact to send the htpasswd user information ? At the moment i just have write only permission. thanks best regards Baran > Am 21.04.2015 um 03:24 schrieb Michael Reinelt <mi...@re...>: > > https://ssl.bulix.org/projects/lcd4linux/wiki/driver_howto > > > Am 2015-04-20 um 14:06 schrieb Baran Altundal: >> Maybe there should be a way to modify the source code of a driver... >> Does anybody know, how big would be the effort to write a new driver and which area of the source code, needs to be changed? >> >> Thank you. >> >> >> best regards >> >> Baran >> >> 2015-04-20 3:21 GMT+02:00 Michael Reinelt <mi...@re... <mailto:mi...@re...>>: >> >> As faras I know, LCD4Linux does not support the GPIO pins of the Raspberyy. >> >> Am 2015-04-19 um 19:45 schrieb Baran Altundal: >> > Hey there, >> > >> > i tried to wire a HD44780 LCD with the GPIO Pins from a Raspberry Pi. In the LCD4Linux.conf file, i have to >> define the >> > Port, but the Raspberry Pi haven´t any driver ports like an Parallel Port… >> > >> > Display HD44780-generic { >> > >> > Driver 'HD44780' >> > >> > Model 'generic' >> > >> > Port '/dev/parports/0‘ <<---- >> > >> > Size ‘16x2‘ >> > >> > ……. >> > >> > How can i define the Port information, if i want to use it with the GPIO Pins? Is that maybe the incorrect HD44780 >> > driver, which i´m using? >> > >> > I want it to use like the LCD-Linux driver but with LCD4Linux, how can i change this? >> > >> > >> > >> > Best Regards >> > >> > Baran >> > >> > >> > ------------------------------------------------------------------------------ >> > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT >> > Develop your own process in accordance with the BPMN 2 standard >> > Learn Process modeling best practices with Bonita BPM through live exercises >> > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ >> > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF >> > >> > >> > >> > _______________________________________________ >> > Lcd4linux-users mailing list >> > Lcd...@li... <mailto:Lcd...@li...> >> > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users >> > >> >> -- >> Michael Reinelt <mi...@re... <mailto:mi...@re...>> >> http://home.pages.at/reinelt >> GPG-Key 0xDF13BA50 >> ICQ #288386781 >> >> ------------------------------------------------------------------------------ >> BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT >> Develop your own process in accordance with the BPMN 2 standard >> Learn Process modeling best practices with Bonita BPM through live exercises >> http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ >> source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF >> _______________________________________________ >> Lcd4linux-users mailing list >> Lcd...@li... <mailto:Lcd...@li...> >> https://lists.sourceforge.net/lists/listinfo/lcd4linux-users >> >> > > -- > Michael Reinelt <mi...@re...> > http://home.pages.at/reinelt > GPG-Key 0xDF13BA50 > ICQ #288386781 |
From: Michael R. <mi...@re...> - 2015-04-21 01:24:53
|
https://ssl.bulix.org/projects/lcd4linux/wiki/driver_howto Am 2015-04-20 um 14:06 schrieb Baran Altundal: > Maybe there should be a way to modify the source code of a driver... > Does anybody know, how big would be the effort to write a new driver and which area of the source code, needs to be changed? > > Thank you. > > > best regards > > Baran > > 2015-04-20 3:21 GMT+02:00 Michael Reinelt <mi...@re... <mailto:mi...@re...>>: > > As faras I know, LCD4Linux does not support the GPIO pins of the Raspberyy. > > Am 2015-04-19 um 19:45 schrieb Baran Altundal: > > Hey there, > > > > i tried to wire a HD44780 LCD with the GPIO Pins from a Raspberry Pi. In the LCD4Linux.conf file, i have to > define the > > Port, but the Raspberry Pi haven´t any driver ports like an Parallel Port… > > > > Display HD44780-generic { > > > > Driver 'HD44780' > > > > Model 'generic' > > > > Port '/dev/parports/0‘ <<---- > > > > Size ‘16x2‘ > > > > ……. > > > > How can i define the Port information, if i want to use it with the GPIO Pins? Is that maybe the incorrect HD44780 > > driver, which i´m using? > > > > I want it to use like the LCD-Linux driver but with LCD4Linux, how can i change this? > > > > > > > > Best Regards > > > > Baran > > > > > > ------------------------------------------------------------------------------ > > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > > Develop your own process in accordance with the BPMN 2 standard > > Learn Process modeling best practices with Bonita BPM through live exercises > > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ > > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > > > > > > > _______________________________________________ > > Lcd4linux-users mailing list > > Lcd...@li... <mailto:Lcd...@li...> > > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users > > > > -- > Michael Reinelt <mi...@re... <mailto:mi...@re...>> > http://home.pages.at/reinelt > GPG-Key 0xDF13BA50 > ICQ #288386781 > > ------------------------------------------------------------------------------ > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live exercises > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Lcd4linux-users mailing list > Lcd...@li... <mailto:Lcd...@li...> > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users > > -- Michael Reinelt <mi...@re...> http://home.pages.at/reinelt GPG-Key 0xDF13BA50 ICQ #288386781 |
From: Baran A. <bar...@go...> - 2015-04-20 12:06:51
|
Maybe there should be a way to modify the source code of a driver... Does anybody know, how big would be the effort to write a new driver and which area of the source code, needs to be changed? Thank you. best regards Baran 2015-04-20 3:21 GMT+02:00 Michael Reinelt <mi...@re...>: > As faras I know, LCD4Linux does not support the GPIO pins of the Raspberyy. > > Am 2015-04-19 um 19:45 schrieb Baran Altundal: > > Hey there, > > > > i tried to wire a HD44780 LCD with the GPIO Pins from a Raspberry Pi. In > the LCD4Linux.conf file, i have to define the > > Port, but the Raspberry Pi haven´t any driver ports like an Parallel > Port… > > > > Display HD44780-generic { > > > > Driver 'HD44780' > > > > Model 'generic' > > > > Port '/dev/parports/0‘ <<---- > > > > Size ‘16x2‘ > > > > ……. > > > > How can i define the Port information, if i want to use it with the GPIO > Pins? Is that maybe the incorrect HD44780 > > driver, which i´m using? > > > > I want it to use like the LCD-Linux driver but with LCD4Linux, how can i > change this? > > > > > > > > Best Regards > > > > Baran > > > > > > > ------------------------------------------------------------------------------ > > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > > Develop your own process in accordance with the BPMN 2 standard > > Learn Process modeling best practices with Bonita BPM through live > exercises > > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- > event?utm_ > > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > > > > > > > _______________________________________________ > > Lcd4linux-users mailing list > > Lcd...@li... > > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users > > > > -- > Michael Reinelt <mi...@re...> > http://home.pages.at/reinelt > GPG-Key 0xDF13BA50 > ICQ #288386781 > > > ------------------------------------------------------------------------------ > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live > exercises > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Lcd4linux-users mailing list > Lcd...@li... > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users > |
From: Michael R. <mi...@re...> - 2015-04-20 01:21:55
|
As faras I know, LCD4Linux does not support the GPIO pins of the Raspberyy. Am 2015-04-19 um 19:45 schrieb Baran Altundal: > Hey there, > > i tried to wire a HD44780 LCD with the GPIO Pins from a Raspberry Pi. In the LCD4Linux.conf file, i have to define the > Port, but the Raspberry Pi haven´t any driver ports like an Parallel Port… > > Display HD44780-generic { > > Driver 'HD44780' > > Model 'generic' > > Port '/dev/parports/0‘ <<---- > > Size ‘16x2‘ > > ……. > > How can i define the Port information, if i want to use it with the GPIO Pins? Is that maybe the incorrect HD44780 > driver, which i´m using? > > I want it to use like the LCD-Linux driver but with LCD4Linux, how can i change this? > > > > Best Regards > > Baran > > > ------------------------------------------------------------------------------ > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live exercises > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > > > _______________________________________________ > Lcd4linux-users mailing list > Lcd...@li... > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users > -- Michael Reinelt <mi...@re...> http://home.pages.at/reinelt GPG-Key 0xDF13BA50 ICQ #288386781 |
From: Baran A. <bar...@go...> - 2015-04-19 17:45:52
|
Hey there, i tried to wire a HD44780 LCD with the GPIO Pins from a Raspberry Pi. In the LCD4Linux.conf file, i have to define the Port, but the Raspberry Pi haven´t any driver ports like an Parallel Port… Display HD44780-generic { Driver 'HD44780' Model 'generic' Port '/dev/parports/0‘ <<---- Size ‘16x2‘ ……. How can i define the Port information, if i want to use it with the GPIO Pins? Is that maybe the incorrect HD44780 driver, which i´m using? I want it to use like the LCD-Linux driver but with LCD4Linux, how can i change this? Best Regards Baran |
From: Stefan U. H. <st...@he...> - 2015-04-06 17:29:59
|
Hi Michael, Am 06.04.2015 um 04:52 schrieb Michael Reinelt: >> But when I start lcd4linux I get after a while (but mostly right at >> startup) the following error: >> >> HD44780: ioctl(/dev/parport1, PPCLAIM) failed: 4 Interrupted >> system call >> HD44780: could not initialize parallel port! >> HD44780: start display failed! >> Error initializing driver HD44780: Exit! >> >> Does this sound like a timing issue? > > No, I don't think so. The problem is that PPCLAIM fails. > > Regarding the syslog messages from your 2nd post, this sounds like the > reason for "Interrupted system call" > > Maybe something else is using the parport? (some printer wizard, CUPS, > ...) thanks for your hint. Then the problem needs to be searched indeed elsewhere. Do you have by any chance a hint, how to look for other processes on the parport? As I'm not a developer myself, I am unware of tools that could e.g. trace processes that try to access the parport. Cheers & Thanks, Stefan. -- Stefan U. Hegner <st...@he...> * * * D-32584 Löhne --- good ole Germany internet: http://www.hegner-web.de * * * GPG-Key | 048D 7F64 0BEB 73B1 2725 F-Print | C05E 4F77 9674 EF11 55FE |
From: Michael R. <mi...@re...> - 2015-04-06 02:52:42
|
Hi Stefan, > But when I start lcd4linux I get after a while (but mostly right at startup) the following error: > > HD44780: ioctl(/dev/parport1, PPCLAIM) failed: 4 Interrupted system call > HD44780: could not initialize parallel port! > HD44780: start display failed! > Error initializing driver HD44780: Exit! > > Does this sound like a timing issue? No, I don't think so. The problem is that PPCLAIM fails. Regarding the syslog messages from your 2nd post, this sounds like the reason for "Interrupted system call" Maybe something else is using the parport? (some printer wizard, CUPS, ...) regards, Michael -- Michael Reinelt <mi...@re...> http://home.pages.at/reinelt GPG-Key 0xDF13BA50 ICQ #288386781 |
From: Stefan U. H. <suh...@gm...> - 2015-04-05 10:38:44
|
Hi there, me again ... Am 04.04.2015 um 23:10 schrieb Stefan U. Hegner: > I got no clue about the lowlevel timings. I now just took the example > from the website and replaced the old fuzz-setting: > > Timing { > CY 1000 > PW 450 > AS 140 > AH 20 > INIT1 4100 > INIT2 100 > EXEC 80 > WRCG 120 > CLEAR 2250 > HOME 2250 > ONOFF 2250 > GPO_ST 20 > GPO_PW 230 > POWER 500 > } > > For the moment, this seems to work. It was wise to be a bit sceptic. About twelve hours later, lcd4linux hung again. Here's the snippet from my syslog: Apr 5 11:46:56 zomba kernel: INFO: task lcd4linux:14452 blocked for more than 120 seconds. Apr 5 11:46:56 zomba kernel: Not tainted 3.16.0-4-amd64 #1 Apr 5 11:46:56 zomba kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Apr 5 11:46:56 zomba kernel: lcd4linux D ffff8803adfdce78 0 14452 1 0x00000000 Apr 5 11:46:56 zomba kernel: ffff8803adfdca20 0000000000000082 0000000000012f00 ffff880439b43fd8 Apr 5 11:46:56 zomba kernel: 0000000000012f00 ffff8803adfdca20 ffffffffa02bc040 ffff880439b43e78 Apr 5 11:46:56 zomba kernel: ffffffffa02bc044 ffff8803adfdca20 00000000ffffffff ffffffffa02bc048 Apr 5 11:46:56 zomba kernel: Call Trace: Apr 5 11:46:56 zomba kernel: [<ffffffff8150cb35>] ? schedule_preempt_disabled+0x25/0x70 Apr 5 11:46:56 zomba kernel: [<ffffffff8150e5e3>] ? __mutex_lock_slowpath+0xd3/0x1c0 Apr 5 11:46:56 zomba kernel: [<ffffffff8150e6eb>] ? mutex_lock+0x1b/0x2a Apr 5 11:46:56 zomba kernel: [<ffffffffa02b9387>] ? pp_ioctl+0x27/0x970 [ppdev] Apr 5 11:46:56 zomba kernel: [<ffffffff811c92d3>] ? seq_read+0x1b3/0x360 Apr 5 11:46:56 zomba kernel: [<ffffffff811b9ecf>] ? do_vfs_ioctl+0x2cf/0x4b0 Apr 5 11:46:56 zomba kernel: [<ffffffff812063d5>] ? proc_reg_read+0x45/0x70 Apr 5 11:46:56 zomba kernel: [<ffffffff811a7ae3>] ? vfs_read+0x93/0x170 Apr 5 11:46:56 zomba kernel: [<ffffffff811ba131>] ? SyS_ioctl+0x81/0xa0 Apr 5 11:46:56 zomba kernel: [<ffffffff8150ff6d>] ? system_call_fast_compare_end+0x10/0x15 [...] Apr 5 11:48:56 zomba kernel: INFO: task lcd4linux:14452 blocked for more than 120 seconds. Apr 5 11:48:56 zomba kernel: Not tainted 3.16.0-4-amd64 #1 Apr 5 11:48:56 zomba kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Apr 5 11:48:56 zomba kernel: lcd4linux D ffff8803adfdce78 0 14452 1 0x00000000 Apr 5 11:48:56 zomba kernel: ffff8803adfdca20 0000000000000082 0000000000012f00 ffff880439b43fd8 Apr 5 11:48:56 zomba kernel: 0000000000012f00 ffff8803adfdca20 ffffffffa02bc040 ffff880439b43e78 Apr 5 11:48:56 zomba kernel: ffffffffa02bc044 ffff8803adfdca20 00000000ffffffff ffffffffa02bc048 Apr 5 11:48:56 zomba kernel: Call Trace: Apr 5 11:48:56 zomba kernel: [<ffffffff8150cb35>] ? schedule_preempt_disabled+0x25/0x70 Apr 5 11:48:56 zomba kernel: [<ffffffff8150e5e3>] ? __mutex_lock_slowpath+0xd3/0x1c0 Apr 5 11:48:56 zomba kernel: [<ffffffff8150e6eb>] ? mutex_lock+0x1b/0x2a Apr 5 11:48:56 zomba kernel: [<ffffffffa02b9387>] ? pp_ioctl+0x27/0x970 [ppdev] Apr 5 11:48:56 zomba kernel: [<ffffffff811c92d3>] ? seq_read+0x1b3/0x360 Apr 5 11:48:56 zomba kernel: [<ffffffff811b9ecf>] ? do_vfs_ioctl+0x2cf/0x4b0 Apr 5 11:48:56 zomba kernel: [<ffffffff812063d5>] ? proc_reg_read+0x45/0x70 Apr 5 11:48:56 zomba kernel: [<ffffffff811a7ae3>] ? vfs_read+0x93/0x170 Apr 5 11:48:56 zomba kernel: [<ffffffff811ba131>] ? SyS_ioctl+0x81/0xa0 Apr 5 11:48:56 zomba kernel: [<ffffffff8150ff6d>] ? system_call_fast_compare_end+0x10/0x15 [...] Apr 5 11:50:56 zomba kernel: INFO: task lcd4linux:14452 blocked for more than 1 20 seconds. Apr 5 11:50:56 zomba kernel: Not tainted 3.16.0-4-amd64 #1 Apr 5 11:50:56 zomba kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Apr 5 11:50:56 zomba kernel: lcd4linux D ffff8803adfdce78 0 14452 1 0x00000000 Apr 5 11:50:56 zomba kernel: ffff8803adfdca20 0000000000000082 0000000000012f00 ffff880439b43fd8 Apr 5 11:50:56 zomba kernel: 0000000000012f00 ffff8803adfdca20 ffffffffa02bc040 ffff880439b43e78 Apr 5 11:50:56 zomba kernel: ffffffffa02bc044 ffff8803adfdca20 00000000ffffffff ffffffffa02bc048 Apr 5 11:50:56 zomba kernel: Call Trace: Apr 5 11:50:56 zomba kernel: [<ffffffff8150cb35>] ? schedule_preempt_disabled+0x25/0x70 Apr 5 11:50:56 zomba kernel: [<ffffffff8150e5e3>] ? __mutex_lock_slowpath+0xd3/0x1c0 Apr 5 11:50:56 zomba kernel: [<ffffffff8150e6eb>] ? mutex_lock+0x1b/0x2a Apr 5 11:50:56 zomba kernel: [<ffffffffa02b9387>] ? pp_ioctl+0x27/0x970 [ppdev] Apr 5 11:50:56 zomba kernel: [<ffffffff811c92d3>] ? seq_read+0x1b3/0x360 Apr 5 11:50:56 zomba kernel: [<ffffffff811b9ecf>] ? do_vfs_ioctl+0x2cf/0x4b0 Apr 5 11:50:56 zomba kernel: [<ffffffff812063d5>] ? proc_reg_read+0x45/0x70 Apr 5 11:50:56 zomba kernel: [<ffffffff811a7ae3>] ? vfs_read+0x93/0x170 Apr 5 11:50:56 zomba kernel: [<ffffffff811ba131>] ? SyS_ioctl+0x81/0xa0 Apr 5 11:50:56 zomba kernel: [<ffffffff8150ff6d>] ? system_call_fast_compare_end+0x10/0x15 [...] ... this keeps on repeating until 12:04:56 every two minutes Any hints as where to play with are most warmly welcome. Background to the system: * System: Debian 8.0 Jessie * Kernel: Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt7-1 (2015-03-01) x86_64 GNU/Linux * lcd4linux Version: 0.11.0~svn1200-3 ... happy Easter! Stefan. -- Stefan U. Hegner <suh...@gm...> * * * D-32584 Löhne --- good ole Germany |
From: Stefan U. H. <st...@he...> - 2015-04-04 21:23:06
|
Hi there, I just migrated to a new server and also moved the lcd4linux display to the new box. As with the old server, I added a multi-io card to get the legacy parport for lcd4linux. It's a Delock PCIx Parport & 2x Serial card (in total the machine has two of those). Here's the output from lspci -v: 07:00.2 Parallel controller: MosChip Semiconductor Technology Ltd. PCIe 9912 Multi-I/O Controller (prog-if 03 [IEEE1284]) Subsystem: Device a000:2000 Flags: bus master, fast devsel, latency 0, IRQ 17 I/O ports at 4010 [size=8] I/O ports at 4000 [size=8] Memory at b1510000 (32-bit, non-prefetchable) [size=4K] Memory at b1500000 (32-bit, non-prefetchable) [size=4K] Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [78] Power Management version 3 Capabilities: [80] Express Legacy Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Kernel driver in use: parport_serial The lcd4linux.conf says regarding the display: Display HD44780-generic { Driver 'HD44780' Model 'generic' Port '/dev/parport1' Size '20x4' asc255bug 0 Icons 2 GPOs 0 Wire { RW 'GND' RS 'AUTOFD' ENABLE 'STROBE' ENABLE2 'GND' GPO 'INIT' POWER 'GND' } Timing { fuzz '175' } } But when I start lcd4linux I get after a while (but mostly right at startup) the following error: HD44780: ioctl(/dev/parport1, PPCLAIM) failed: 4 Interrupted system call HD44780: could not initialize parallel port! HD44780: start display failed! Error initializing driver HD44780: Exit! Does this sound like a timing issue? I got no clue about the lowlevel timings. I now just took the example from the website and replaced the old fuzz-setting: Timing { CY 1000 PW 450 AS 140 AH 20 INIT1 4100 INIT2 100 EXEC 80 WRCG 120 CLEAR 2250 HOME 2250 ONOFF 2250 GPO_ST 20 GPO_PW 230 POWER 500 } For the moment, this seems to work. However, I'd appreciate, if someone could drop me a line or two about this, because I'd like to undstand what I'm doing and where to tweak, If I run into trouble again. Thanks a lot in advance. Stefan. -- Stefan U. Hegner <st...@he...> * * * D-32584 Löhne --- good ole Germany internet: http://www.hegner-web.de * * * GPG-Key | 048D 7F64 0BEB 73B1 2725 F-Print | C05E 4F77 9674 EF11 55FE |
From: Matthew H. <ma...@ma...> - 2015-02-17 05:25:44
|
Hi Michael, Thanks for the quick reply, I don't have an oscilloscope unfortunately. I am sure it is connected correctly, and I have traced the cable all the way through via multimeter continuity testing. Interestingly, I tried some other sample configs I found and I can get what looks like a flash cursor every now and then. Also, when changing the contrast, if I turn it to full, I get the top row blacked out, but only HALF the second row!? Totally confused now! Is there any other way to do a signal test? Cheers, Matt Regards, Matthew Hodder Mob: 0422 610 560 On 17 February 2015 at 02:10, Michael Reinelt <mi...@re...> wrote: > Hello Matthew, > > do you have a oscilloscope or something? > > I guess either the wiring os wrong, or soemthing is wrong with your > parport. > > are you sure you have the RW line connected properly? > > From the warnings in the log, the display does not return the busy-flag > (which is ok if you don't use busyflag checking), but it may be a hint that > something is very basically wrong. > > checking some of the signals on the parallel port with a oscilloscope > could help a lot, we don't need deep timing or signal nalysis, just knowing > that the signal on some pins is "moving" > > > > regards, Michael > > > Am 2015-02-16 um 11:04 schrieb Matthew Hodder: > >> Hi all, >> >> Hoping someone can point me in the right direction. >> >> I'm running LCD4Linux on a Sophos UTM box (Suse base), I suspect I may >> have a dud parallel port, but wanted someone >> elses thoughts. >> >> LCD4Linux is compiled with just the HD44870 driver, I'm doing a basic >> config just to prove I can get a display up on the >> LCD. I have double/triple checked wiring and I'm sure I have it right. >> >> My config file looks like this: >> >> ---------------------------------------------------------------- >> >> Display HD44780-winamp { >> Driver 'HD44780' >> Model 'generic' >> UseBusy 1 >> Port '/dev/parport0' >> Size '16x2' >> Wire { >> RW 'AUTOFD' >> RS 'INIT' >> ENABLE 'STROBE' >> ENABLE2 'GND' >> GPO 'GND' >> } >> } >> >> >> Widget MEM { >> class 'Text' >> expression meminfo('MemTotal')/1024 >> prefix 'MB:' >> width 11 >> align 'L' >> precision '0' >> update 1000 >> } >> >> Layout Default { >> Row1 { >> Col1 'MEM' >> } >> } >> >> Display 'HD44780-winamp' >> Layout 'Default' >> >> ---------------------------------------------------------------- >> >> When I run it using: sudo /sbin/lcd4linux -Fvv >> >> I get the following: >> >> ---------------------------------------------------------------- >> >> Version 0.11.0-SVN-965 starting >> lcd4linux.c: initializing driver HD44780 >> HD44780: $Rev: 905 $ >> HD44780: using model 'generic' >> HD44780: using parallel port >> HD44780: using 1 Controller(s) >> HD44780: using 8 bit mode >> udelay: using gettimeofday() delay loop >> HD44780: using ppdev /dev/parport0 >> HD44780: wiring: DISPLAY:RS - PARPORT:INIT (Pin 16) >> HD44780: wiring: DISPLAY:RW - PARPORT:AUTOFD (Pin 14) >> HD44780: wiring: DISPLAY:ENABLE - PARPORT:STROBE (Pin 1) >> HD44780: wiring: DISPLAY:ENABLE2 - PARPORT:GND >> HD44780: wiring: DISPLAY:ENABLE3 - PARPORT:GND >> HD44780: wiring: DISPLAY:ENABLE4 - PARPORT:GND >> HD44780: wiring: DISPLAY:BACKLIGHT - PARPORT:GND >> HD44780: wiring: DISPLAY:GPO - PARPORT:GND >> HD44780: wiring: DISPLAY:GPI - PARPORT:GND >> HD44780: wiring: DISPLAY:POWER - PARPORT:GND >> HD44780: timing: CY = 1000 ns (default) >> HD44780: timing: PW = 450 ns (default) >> HD44780: timing: AS = 140 ns (default) >> HD44780: timing: AH = 20 ns (default) >> HD44780: timing: INIT1 = 4100 us (default) >> HD44780: timing: INIT2 = 100 us (default) >> HD44780: timing: EXEC = 80 us (default) >> HD44780: timing: WRCG = 120 us (default) >> HD44780: timing: CLEAR = 2250 us (default) >> HD44780: timing: HOME = 2250 us (default) >> HD44780: timing: ONOFF = 2250 us (default) >> HD44780: using busy-flag checking >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: timeout waiting for busy flag on controller 1 (0xff) >> HD44780: too many busy flag failures, turning off busy flag checking. >> HD44780: using 0 GPI's and 0 GPO's >> initializing layout 'Default' >> widget 'MEM': Class 'text', Parent '<root>', Layer 1, Row 0, Col 0 >> lcd4linux.c: starting main loop >> >> ---------------------------------------------------------------- >> >> But nothing ever displays on the LCD. I get the above regardless if the >> LCD is connected or not, so I simply don't think >> it is seeing the LCD at all. I have tried two different LCDs as well with >> the same result >> >> Any pointers from here or how I can trouble shoot further? >> >> Thanks in advance! >> >> Regards, >> Matt Hodder >> >> >> ------------------------------------------------------------ >> ------------------ >> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server >> from Actuate! Instantly Supercharge Your Business Reports and Dashboards >> with Interactivity, Sharing, Native Excel Exports, App Integration & more >> Get technology previously reserved for billion-dollar corporations, FREE >> http://pubads.g.doubleclick.net/gampad/clk?id=190641631& >> iu=/4140/ostg.clktrk >> >> >> >> _______________________________________________ >> Lcd4linux-users mailing list >> Lcd...@li... >> https://lists.sourceforge.net/lists/listinfo/lcd4linux-users >> >> > -- > Michael Reinelt <mi...@re...> > http://home.pages.at/reinelt > GPG-Key 0xDF13BA50 > ICQ #288386781 > |
From: Michael R. <mi...@re...> - 2015-02-16 16:27:53
|
Hello Matthew, do you have a oscilloscope or something? I guess either the wiring os wrong, or soemthing is wrong with your parport. are you sure you have the RW line connected properly? From the warnings in the log, the display does not return the busy-flag (which is ok if you don't use busyflag checking), but it may be a hint that something is very basically wrong. checking some of the signals on the parallel port with a oscilloscope could help a lot, we don't need deep timing or signal nalysis, just knowing that the signal on some pins is "moving" regards, Michael Am 2015-02-16 um 11:04 schrieb Matthew Hodder: > Hi all, > > Hoping someone can point me in the right direction. > > I'm running LCD4Linux on a Sophos UTM box (Suse base), I suspect I may have a dud parallel port, but wanted someone > elses thoughts. > > LCD4Linux is compiled with just the HD44870 driver, I'm doing a basic config just to prove I can get a display up on the > LCD. I have double/triple checked wiring and I'm sure I have it right. > > My config file looks like this: > > ---------------------------------------------------------------- > > Display HD44780-winamp { > Driver 'HD44780' > Model 'generic' > UseBusy 1 > Port '/dev/parport0' > Size '16x2' > Wire { > RW 'AUTOFD' > RS 'INIT' > ENABLE 'STROBE' > ENABLE2 'GND' > GPO 'GND' > } > } > > > Widget MEM { > class 'Text' > expression meminfo('MemTotal')/1024 > prefix 'MB:' > width 11 > align 'L' > precision '0' > update 1000 > } > > Layout Default { > Row1 { > Col1 'MEM' > } > } > > Display 'HD44780-winamp' > Layout 'Default' > > ---------------------------------------------------------------- > > When I run it using: sudo /sbin/lcd4linux -Fvv > > I get the following: > > ---------------------------------------------------------------- > > Version 0.11.0-SVN-965 starting > lcd4linux.c: initializing driver HD44780 > HD44780: $Rev: 905 $ > HD44780: using model 'generic' > HD44780: using parallel port > HD44780: using 1 Controller(s) > HD44780: using 8 bit mode > udelay: using gettimeofday() delay loop > HD44780: using ppdev /dev/parport0 > HD44780: wiring: DISPLAY:RS - PARPORT:INIT (Pin 16) > HD44780: wiring: DISPLAY:RW - PARPORT:AUTOFD (Pin 14) > HD44780: wiring: DISPLAY:ENABLE - PARPORT:STROBE (Pin 1) > HD44780: wiring: DISPLAY:ENABLE2 - PARPORT:GND > HD44780: wiring: DISPLAY:ENABLE3 - PARPORT:GND > HD44780: wiring: DISPLAY:ENABLE4 - PARPORT:GND > HD44780: wiring: DISPLAY:BACKLIGHT - PARPORT:GND > HD44780: wiring: DISPLAY:GPO - PARPORT:GND > HD44780: wiring: DISPLAY:GPI - PARPORT:GND > HD44780: wiring: DISPLAY:POWER - PARPORT:GND > HD44780: timing: CY = 1000 ns (default) > HD44780: timing: PW = 450 ns (default) > HD44780: timing: AS = 140 ns (default) > HD44780: timing: AH = 20 ns (default) > HD44780: timing: INIT1 = 4100 us (default) > HD44780: timing: INIT2 = 100 us (default) > HD44780: timing: EXEC = 80 us (default) > HD44780: timing: WRCG = 120 us (default) > HD44780: timing: CLEAR = 2250 us (default) > HD44780: timing: HOME = 2250 us (default) > HD44780: timing: ONOFF = 2250 us (default) > HD44780: using busy-flag checking > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: too many busy flag failures, turning off busy flag checking. > HD44780: using 0 GPI's and 0 GPO's > initializing layout 'Default' > widget 'MEM': Class 'text', Parent '<root>', Layer 1, Row 0, Col 0 > lcd4linux.c: starting main loop > > ---------------------------------------------------------------- > > But nothing ever displays on the LCD. I get the above regardless if the LCD is connected or not, so I simply don't think > it is seeing the LCD at all. I have tried two different LCDs as well with the same result > > Any pointers from here or how I can trouble shoot further? > > Thanks in advance! > > Regards, > Matt Hodder > > > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk > > > > _______________________________________________ > Lcd4linux-users mailing list > Lcd...@li... > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users > -- Michael Reinelt <mi...@re...> http://home.pages.at/reinelt GPG-Key 0xDF13BA50 ICQ #288386781 |
From: Piet v. d. B. <pv...@te...> - 2015-02-16 15:50:30
|
Hi Matthew, Did you check the contrast of the LCD's ? Another thing that can be the problem is the newer parallel ports use 3.3 Volt on the pins and most of the LCD's needs 5 Volt to operate. You should check this out. Perhaps some other list member can check the config for you. regards Piet On 16-2-2015 10:04, Matthew Hodder wrote: > Hi all, > > Hoping someone can point me in the right direction. > > I'm running LCD4Linux on a Sophos UTM box (Suse base), I suspect I may > have a dud parallel port, but wanted someone elses thoughts. > > LCD4Linux is compiled with just the HD44870 driver, I'm doing a basic > config just to prove I can get a display up on the LCD. I have > double/triple checked wiring and I'm sure I have it right. > > My config file looks like this: > > ---------------------------------------------------------------- > > Display HD44780-winamp { > Driver 'HD44780' > Model 'generic' > UseBusy 1 > Port '/dev/parport0' > Size '16x2' > Wire { > RW 'AUTOFD' > RS 'INIT' > ENABLE 'STROBE' > ENABLE2 'GND' > GPO 'GND' > } > } > > > Widget MEM { > class 'Text' > expression meminfo('MemTotal')/1024 > prefix 'MB:' > width 11 > align 'L' > precision '0' > update 1000 > } > > Layout Default { > Row1 { > Col1 'MEM' > } > } > > Display 'HD44780-winamp' > Layout 'Default' > > ---------------------------------------------------------------- > > When I run it using: sudo /sbin/lcd4linux -Fvv > > I get the following: > > ---------------------------------------------------------------- > > Version 0.11.0-SVN-965 starting > lcd4linux.c: initializing driver HD44780 > HD44780: $Rev: 905 $ > HD44780: using model 'generic' > HD44780: using parallel port > HD44780: using 1 Controller(s) > HD44780: using 8 bit mode > udelay: using gettimeofday() delay loop > HD44780: using ppdev /dev/parport0 > HD44780: wiring: DISPLAY:RS - PARPORT:INIT (Pin 16) > HD44780: wiring: DISPLAY:RW - PARPORT:AUTOFD (Pin 14) > HD44780: wiring: DISPLAY:ENABLE - PARPORT:STROBE (Pin 1) > HD44780: wiring: DISPLAY:ENABLE2 - PARPORT:GND > HD44780: wiring: DISPLAY:ENABLE3 - PARPORT:GND > HD44780: wiring: DISPLAY:ENABLE4 - PARPORT:GND > HD44780: wiring: DISPLAY:BACKLIGHT - PARPORT:GND > HD44780: wiring: DISPLAY:GPO - PARPORT:GND > HD44780: wiring: DISPLAY:GPI - PARPORT:GND > HD44780: wiring: DISPLAY:POWER - PARPORT:GND > HD44780: timing: CY = 1000 ns (default) > HD44780: timing: PW = 450 ns (default) > HD44780: timing: AS = 140 ns (default) > HD44780: timing: AH = 20 ns (default) > HD44780: timing: INIT1 = 4100 us (default) > HD44780: timing: INIT2 = 100 us (default) > HD44780: timing: EXEC = 80 us (default) > HD44780: timing: WRCG = 120 us (default) > HD44780: timing: CLEAR = 2250 us (default) > HD44780: timing: HOME = 2250 us (default) > HD44780: timing: ONOFF = 2250 us (default) > HD44780: using busy-flag checking > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: timeout waiting for busy flag on controller 1 (0xff) > HD44780: too many busy flag failures, turning off busy flag checking. > HD44780: using 0 GPI's and 0 GPO's > initializing layout 'Default' > widget 'MEM': Class 'text', Parent '<root>', Layer 1, Row 0, Col 0 > lcd4linux.c: starting main loop > > ---------------------------------------------------------------- > > But nothing ever displays on the LCD. I get the above regardless if > the LCD is connected or not, so I simply don't think it is seeing the > LCD at all. I have tried two different LCDs as well with the same result > > Any pointers from here or how I can trouble shoot further? > > Thanks in advance! > > Regards, > Matt Hodder > > > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk > > > _______________________________________________ > Lcd4linux-users mailing list > Lcd...@li... > https://lists.sourceforge.net/lists/listinfo/lcd4linux-users |