From: yipiha <yip...@gm...> - 2008-07-29 12:31:04
|
Hi, I'd like to put on a breakout gs-screen LCD basic 2x16 characters. I thought to use the port LDD but I do not see how, knowing that I do want to show that some information from time to time and not having a screen for the console ... I have read documentation for a similar problem but to put it on a robostix (which I did not) there gives a files .h and .c but I can not download them. http://docwiki.gumstix.org/index.php/Robostix_LCD http://docwiki.gumstix.org/index.php/Robostix_LCD If you could help me Thanks -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18707346.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Dave H. <dhy...@gm...> - 2008-07-29 14:50:18
|
Hi, > I'd like to put on a breakout gs-screen LCD basic 2x16 characters. > > I thought to use the port LDD but I do not see how, knowing that I do want > to show that some information from time to time and not having a screen for > the console ... > > I have read documentation for a similar problem but to put it on a robostix > (which I did not) there gives a files .h and .c but I can not download them. > http://docwiki.gumstix.org/index.php/Robostix_LCD > http://docwiki.gumstix.org/index.php/Robostix_LCD Just use gumstix for the username, and gumstix for the password (which is what the dialog box which prompts you for the username and password says). There is a thread in the archives about adding an character LCD to the gumstix: <http://thread.gmane.org/gmane.linux.distributions.gumstix.general/19862> -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: yipiha <yip...@gm...> - 2008-07-30 08:53:36
|
Thanks I read the links and downloaded files so I think that I have to change the file lcd-hal.h and lcd-hal-avr.c to clarify that I am on port ldd of the breakout-gs but I do not see too how. and how to connect the screen on the breakout-gs thank you in advance Dave Hylands wrote: > > Hi, > >> I'd like to put on a breakout gs-screen LCD basic 2x16 characters. >> >> I thought to use the port LDD but I do not see how, knowing that I do >> want >> to show that some information from time to time and not having a screen >> for >> the console ... >> >> I have read documentation for a similar problem but to put it on a >> robostix >> (which I did not) there gives a files .h and .c but I can not download >> them. >> http://docwiki.gumstix.org/index.php/Robostix_LCD >> http://docwiki.gumstix.org/index.php/Robostix_LCD > > Just use gumstix for the username, and gumstix for the password (which > is what the dialog box which prompts you for the username and password > says). > > There is a thread in the archives about adding an character LCD to the > gumstix: > <http://thread.gmane.org/gmane.linux.distributions.gumstix.general/19862> > > -- > Dave Hylands > Vancouver, BC, Canada > http://www.DaveHylands.com/ > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18728778.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-07-31 08:53:43
|
next ... I modify the example gpreg for a header and then I edit lcd-hal-avr.c for use function on gpreg. this seems to work but the compiler does not recognize the functions ndelay and mdelay I wonder of whether to use the main part of the gpreg file or not to this part: unsigned int i, ii, rval, speed, count, tmp; int fd; fd = open ( "/ dev / mem", O_RDWR | O_SYNC); if (fd <0) ( perror ( "open (\" / dev / mem \ ")"); exit (1); ) map = mmap (0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, FD, / / The following was only needed for certain revisions of broken uClibc / / # ifdef __ARM_EABI__ / / 0x40E00000 / MAP_SIZE / / # else 0x40E00000 & ~ MAP_MASK / / # endif ); if (map == (void *) -1) ( perror ( "mmap ()"); exit (1); ) of course i delete the main of gpreg.c but i ask me if the code above is necessary ? -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18750323.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-07-30 12:37:47
|
So my mapping is : ldd0 -> gpio(58) -> RS ldd1 -> gpio(59) -> RW ldd2 -> gpio(60) -> E ldd3 -> gpio(61) -> db4 ldd4 -> gpio(62) -> db5 ldd5 -> gpio(63) -> db6 ldd6 -> gpio(64) -> db7 Here are the modification made on config.h /* #define CFG_LCD_DATA_PORT PORTA #define CFG_LCD_DATA_SHIFT 0 #define CFG_LCD_E_PORT PORTA #define CFG_LCD_E_PIN 6 #define CFG_LCD_RS_PORT PORTA #define CFG_LCD_RS_PIN 4 #define CFG_LCD_RW_PORT PORTA #define CFG_LCD_RW_PIN 5 */ #define CFG_LCD_RS_PIN 58 #define CFG_LCD_RW_PIN 59 #define CFG_LCD_E_PIN 60 #define CFG_LCD_DB4_PIN 61 #define CFG_LCD_DB5_PIN 62 #define CFG_LCD_DB6_PIN 63 #define CFG_LCD_DB7_PIN 64 and the modification made on lcd-hal-avr.c /* ---- Include Files ----------------------------------------------------- */ #include <stdarg.h> #include "config.h" #include "lcd.h" #include "lcd-hal.h" #include "Delay.h" /* #if !defined( CFG_LCD_DATA_PORT ) # define CFG_LCD_DATA_PORT PORTC #endif #if !defined( CFG_LCD_DATA_SHIFT ) # define CFG_LCD_DATA_SHIFT 0 #endif #if !defined( CFG_LCD_E_PORT ) # define CFG_LCD_E_PORT PORTC #endif #if !defined( CFG_LCD_E_PIN ) # define CFG_LCD_E_PIN 6 #endif #if !defined( CFG_LCD_RS_PORT ) # define CFG_LCD_RS_PORT PORTC #endif #if !defined( CFG_LCD_RS_PIN ) # define CFG_LCD_RS_PIN 4 #endif #define LCD_DATA_MASK ( 0x0F << CFG_LCD_DATA_SHIFT ) #define LCD_E_MASK ( 1 << CFG_LCD_E_PIN ) #define LCD_RS_MASK ( 1 << CFG_LCD_RS_PIN ) #define LCD_RW_MASK ( 1 << CFG_LCD_RW_PIN ) */ /* ---- Public Variables -------------------------------------------------- */ /* ---- Private Constants and Types --------------------------------------- */ #define DDR( port ) (*(&(port) - 1)) /* ---- Private Variables ------------------------------------------------- */ /* ---- Private Function Prototypes --------------------------------------- */ static inline void LCD_HAL_E_High( void ) { //CFG_LCD_E_PORT |= LCD_E_MASK; GPSR( CFG_LCD_E_PIN ) = GPIO_bit( CFG_LCD_E_PIN ); } static inline void LCD_HAL_E_Low( void ) { //CFG_LCD_E_PORT &= ~LCD_E_MASK; GPCR( CFG_LCD_E_PIN ) = GPIO_bit( CFG_LCD_E_PIN ); } static inline void LCD_HAL_E_Pulse( void ) { // E needs to be high for 230 nsec. If we assume a 16 MHz clock, then // that would be 4 NOP's (1 NOP = 62.5 msec) LCD_HAL_E_High(); asm( " nop" ); asm( " nop" ); asm( " nop" ); asm( " nop" ); LCD_HAL_E_Low(); } static inline void LCD_HAL_RS_High( void ) { //CFG_LCD_RS_PORT |= LCD_RS_MASK; GPSR( CFG_LCD_RS_PIN ) = GPIO_bit( CFG_LCD_RS_PIN ); } static inline void LCD_HAL_RS_Low( void ) { //CFG_LCD_RS_PORT &= ~LCD_RS_MASK; GPCR( CFG_LCD_RS_PIN ) = GPIO_bit( CFG_LCD_RS_PIN ); } static inline void LCD_HAL_RW_Low( void ) { /*#if defined( CFG_LCD_RW_PORT ) CFG_LCD_RW_PORT &= ~LCD_RW_MASK; #endif */ #if defined( CFG_LCD_RW_PIN ) GPCR( CFG_LCD_RW_PIN ) = GPIO_bit( CFG_LCD_RS_PIN ); #endif } static inline void LCD_HAL_Data( uint8_t data ) { /* CFG_LCD_DATA_PORT &= ~LCD_DATA_MASK; CFG_LCD_DATA_PORT |= (( data & 0x0F ) << CFG_LCD_DATA_SHIFT ); */ if( (data & 0x01) ){ GPSR( CFG_LCD_DB7_PIN ) = GPIO_bit( CFG_LCD_DB7_PIN ); }else{ GPCR( CFG_LCD_DB7_PIN ) = GPIO_bit( CFG_LCD_DB7_PIN ); } if( (data & 0x02) ){ GPSR( CFG_LCD_DB6_PIN ) = GPIO_bit( CFG_LCD_DB6_PIN ); }else{ GPCR( CFG_LCD_DB6_PIN ) = GPIO_bit( CFG_LCD_DB6_PIN ); } if( (data & 0x03) ){ GPSR( CFG_LCD_DB5_PIN ) = GPIO_bit( CFG_LCD_DB5_PIN ); }else{ GPCR( CFG_LCD_DB5_PIN ) = GPIO_bit( CFG_LCD_DB5_PIN ); } if( (data & 0x04) ){ GPSR( CFG_LCD_DB4_PIN ) = GPIO_bit( CFG_LCD_DB4_PIN ); }else{ GPCR( CFG_LCD_DB4_PIN ) = GPIO_bit( CFG_LCD_DB4_PIN ); } } //*************************************************************************** /** * LCD_HAL_Delay * * Delays for the specified number of milliseconds */ void LCD_HAL_Delay( uint8_t msec ) { ms_spin( msec ); } // LCD_HAL_Delay //*************************************************************************** /** * LCD_HAL_Init * * Initializes the AVR for connecting to an LCD. * * We currently assume 4-bit mode. */ void LCD_HAL_Init( void ) { // Configure the pins as outputs /* DDR( CFG_LCD_DATA_PORT ) |= LCD_DATA_MASK; DDR( CFG_LCD_RS_PORT ) |= LCD_RS_MASK; DDR( CFG_LCD_E_PORT ) |= LCD_E_MASK; #if defined( CFG_LCD_RW_PORT ) DDR( CFG_LCD_RW_PORT ) |= LCD_RW_MASK; #endif */ //out GPDR(CFG_LCD_RS_PIN) |= GPIO_bit(CFG_LCD_RS_PIN); GPDR(CFG_LCD_E_PIN) |= GPIO_bit(CFG_LCD_E_PIN); GPDR(CFG_LCD_RW_PIN) |= GPIO_bit(CFG_LCD_RW_PIN); GPDR(CFG_LCD_DB4_PIN) |= GPIO_bit(CFG_LCD_DB4_PIN); GPDR(CFG_LCD_DB5_PIN) |= GPIO_bit(CFG_LCD_DB5_PIN); GPDR(CFG_LCD_DB6_PIN) |= GPIO_bit(CFG_LCD_DB6_PIN); GPDR(CFG_LCD_DB7_PIN) |= GPIO_bit(CFG_LCD_DB7_PIN); Sorry, for the code like this. when I compile my error "invalid lvalue in assignment" for example function LCD_HAL_RS_Low or is the problem? I'm on the right way? he must change something else ? thanks yipiha wrote: > > Thanks > > I read the links and downloaded files so I think that I have to change the > file lcd-hal.h and lcd-hal-avr.c > > to clarify that I am on port ldd of the breakout-gs but I do not see too > how. > > and how to connect the screen on the breakout-gs > > thank you in advance > > > > Dave Hylands wrote: >> >> Hi, >> >>> I'd like to put on a breakout gs-screen LCD basic 2x16 characters. >>> >>> I thought to use the port LDD but I do not see how, knowing that I do >>> want >>> to show that some information from time to time and not having a screen >>> for >>> the console ... >>> >>> I have read documentation for a similar problem but to put it on a >>> robostix >>> (which I did not) there gives a files .h and .c but I can not download >>> them. >>> http://docwiki.gumstix.org/index.php/Robostix_LCD >>> http://docwiki.gumstix.org/index.php/Robostix_LCD >> >> Just use gumstix for the username, and gumstix for the password (which >> is what the dialog box which prompts you for the username and password >> says). >> >> There is a thread in the archives about adding an character LCD to the >> gumstix: >> <http://thread.gmane.org/gmane.linux.distributions.gumstix.general/19862> >> >> -- >> Dave Hylands >> Vancouver, BC, Canada >> http://www.DaveHylands.com/ >> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's >> challenge >> Build the coolest Linux based applications with Moblin SDK & win great >> prizes >> Grand prize is a trip for two to an Open Source event anywhere in the >> world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> gumstix-users mailing list >> gum...@li... >> https://lists.sourceforge.net/lists/listinfo/gumstix-users >> >> > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18732287.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Dave H. <dhy...@gm...> - 2008-07-30 14:13:24
|
Hi, > static inline void LCD_HAL_E_Pulse( void ) > { > // E needs to be high for 230 nsec. If we assume a 16 MHz clock, then > // that would be 4 NOP's (1 NOP = 62.5 msec) > > LCD_HAL_E_High(); > asm( " nop" ); > asm( " nop" ); > asm( " nop" ); > asm( " nop" ); > LCD_HAL_E_Low(); > } This needs to be changed. The nops on a 400 MHz gumstix take alot less time. Try using ndelay( 230 ); instead. > static inline void LCD_HAL_RW_Low( void ) > { > /*#if defined( CFG_LCD_RW_PORT ) > CFG_LCD_RW_PORT &= ~LCD_RW_MASK; > #endif > */ > #if defined( CFG_LCD_RW_PIN ) > GPCR( CFG_LCD_RW_PIN ) = GPIO_bit( CFG_LCD_RS_PIN ); > #endif > > } I see RW_PIN and RS_PIN intermingled here. I don't see any particular reason why this would give an error. Perhaps you can show the actual error. > //*************************************************************************** > /** > * LCD_HAL_Delay > * > * Delays for the specified number of milliseconds > */ > > void LCD_HAL_Delay( uint8_t msec ) > { > ms_spin( msec ); > > } // LCD_HAL_Delay Replace ms_spin with msleep or mdelay. Remove the #include of Delay.h > when I compile my error "invalid lvalue in assignment" for example function > LCD_HAL_RS_Low You're missing #include <asm/arch/pxa-regs.h> which is where the GPSR, GPCR, etc macros are defined. > I'm on the right way? This seems to be on the right path, except for one thing. That code will only compile as kernel code. It won't work as user-mode code. you'd need to do something like what this page does: <http://docswiki.gumstix.com/index.php/Sample_code/C/gpregs> in order to manipulate the gpio pins from user space. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: yipiha <yip...@gm...> - 2008-07-30 14:53:10
|
I took into account your indications but I still the same mistake there is a need that pxa-regs or other library are necessary? >> when I compile my error "invalid lvalue in assignment" for example >> function >> LCD_HAL_RS_Low >You're missing >#include <asm/arch/pxa-regs.h> >which is where the GPSR, GPCR, etc macros are defined. >> I'm on the right way? >This seems to be on the right path, except for one thing. That code >will only compile as kernel code. It won't work as user-mode code. >you'd need to do something like what this page does: ><http://docswiki.gumstix.com/index.php/Sample_code/C/gpregs> >in order to manipulate the gpio pins from user space. with the method that I use I could not start implementing as your test lcd? -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gumstix-users mailing list gum...@li... https://lists.sourceforge.net/lists/listinfo/gumstix-users -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18735142.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-07-31 14:52:28
|
What is the login and password for download usleep-drv.h .c .... ???? Sorry for this stupid question :confused: yipiha wrote: > > > Dave Hylands wrote: >> >> HI yipiha, >> >>> I modify the example gpreg for a header and then I edit lcd-hal-avr.c >>> for >>> use function on gpreg. >>> >>> this seems to work but the compiler does not recognize the functions >>> ndelay >>> and mdelay >> >> Yeah - those are kernel only functions. You'll want to use this driver as >> well: >> <http://docswiki.gumstix.com/index.php/Usleep_drv> >> >> You can replace the 230 nanosecond delay with a 1 usec delay using the >> usleep-drv >> > > So for my delay, i need to use usleep-drv and so copy and paste > usleep-drv.c et .h > > > Dave Hylands wrote: >> >>> I wonder of whether to use the main part of the gpreg file or not to >>> this >>> part: >>> >>> unsigned int i, ii, rval, speed, count, tmp; >>> int fd; >>> fd = open ( "/ dev / mem", O_RDWR | O_SYNC); >>> if (fd <0) ( >>> perror ( "open (\" / dev / mem \ ")"); >>> exit (1); >>> ) >>> map = mmap (0, >>> MAP_SIZE, >>> PROT_READ | PROT_WRITE, >>> MAP_SHARED, >>> FD, >>> / / The following was only needed for certain revisions of broken uClibc >>> / / # ifdef __ARM_EABI__ >>> / / 0x40E00000 / MAP_SIZE >>> / / # else >>> 0x40E00000 & ~ MAP_MASK >>> / / # endif >>> ); >>> if (map == (void *) -1) ( >>> perror ( "mmap ()"); >>> exit (1); >>> ) >>> >>> >>> of course i delete the main of gpreg.c but i ask me if the code above is >>> necessary ? >> >> Yes - the above code is absolutely necessary. It opens the memory >> device and maps in the register space which makes the registers >> available in user space. That's the magic that makes everything work >> :) >> >> > > Where shall i implement this code ? > > in lcd-hal-avr.c in the function LCL_HAL_Init ??? > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18756361.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Dave H. <dhy...@gm...> - 2008-07-31 16:01:46
|
Use root and root On Thu, Jul 31, 2008 at 7:52 AM, yipiha <yip...@gm...> wrote: > > > What is the login and password for download usleep-drv.h .c .... ???? > > Sorry for this stupid question :confused: -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: Dave H. <dhy...@gm...> - 2008-07-30 15:27:08
|
Hi yipiha, On Wed, Jul 30, 2008 at 7:53 AM, yipiha <yip...@gm...> wrote: > > I took into account your indications > but I still the same mistake > > there is a need that pxa-regs or other library are necessary? pxa-regs.h is necessary, but only usable from kernel space. >>This seems to be on the right path, except for one thing. That code >>will only compile as kernel code. It won't work as user-mode code. >>you'd need to do something like what this page does: > >><http://docswiki.gumstix.com/index.php/Sample_code/C/gpregs> > >>in order to manipulate the gpio pins from user space. > > with the method that I use I could not start implementing as your test lcd? Only if you're building a kernel module. If you're building a regular user-mode program, then the method you coded won't work. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: yipiha <yip...@gm...> - 2008-07-30 15:36:40
|
I added the pxa-reg.h # include <asm-arch/arch-pxa/pxa-regs.h> but I have the same mistakes If I spent the second solution on how user-mode integrated example gpregs for my case for info: I compile my position on development and not on the gumstix going to look in the directory gcc: staging_dir / arm-linxuclicgnueabi / bin / Dave Hylands wrote: > > Hi yipiha, > > On Wed, Jul 30, 2008 at 7:53 AM, yipiha <yip...@gm...> wrote: >> >> I took into account your indications >> but I still the same mistake >> >> there is a need that pxa-regs or other library are necessary? > > pxa-regs.h is necessary, but only usable from kernel space. > >>>This seems to be on the right path, except for one thing. That code >>>will only compile as kernel code. It won't work as user-mode code. >>>you'd need to do something like what this page does: >> >>><http://docswiki.gumstix.com/index.php/Sample_code/C/gpregs> >> >>>in order to manipulate the gpio pins from user space. >> >> with the method that I use I could not start implementing as your test >> lcd? > > Only if you're building a kernel module. If you're building a regular > user-mode program, then the method you coded won't work. > > -- > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18736148.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-08-04 14:07:59
|
Ok usleep-drv and usleep-test works in the gumstix How do you implement the usleep in the lcd-hal-avr.c ? shall i use the function C "exec" ? and i have one more question, in the function LCD_HAL_E_Pulse. the E need to be High for 230 milli second, not nano second ? thanks yipiha wrote: > > Hi dave and thank > > > If I understood I must as a first step: > > usleep compile copy the result in 2.6.21gum / ... > make a modprobe module compiled and depmod > > and functions of usleep are available? > > then call "exec" function usleep in lcd-hal-avr.c, and it's all ? > > > Dave Hylands wrote: >> >> >> No - the -drv.c files are the kernel module files. You'll need to >> compile and build the kernel module. You would use a few lines from >> the usleep-test.c file (which is the user-mode file). You need to open >> /dev/usleep and do the ioctl in place of the delays. >> >> > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18811973.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-08-04 14:28:33
|
Sorry the function C "system" not exec yipiha wrote: > > > Ok usleep-drv and usleep-test works in the gumstix > > How do you implement the usleep in the lcd-hal-avr.c ? shall i use the > function C "exec" ? > > and i have one more question, in the function LCD_HAL_E_Pulse. > > the E need to be High for 230 milli second, not nano second ? > > thanks > > > yipiha wrote: >> >> Hi dave and thank >> >> >> If I understood I must as a first step: >> >> usleep compile copy the result in 2.6.21gum / ... >> make a modprobe module compiled and depmod >> >> and functions of usleep are available? >> >> then call "exec" function usleep in lcd-hal-avr.c, and it's all ? >> >> >> Dave Hylands wrote: >>> >>> >>> No - the -drv.c files are the kernel module files. You'll need to >>> compile and build the kernel module. You would use a few lines from >>> the usleep-test.c file (which is the user-mode file). You need to open >>> /dev/usleep and do the ioctl in place of the delays. >>> >>> >> >> > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18812350.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Dave H. <dhy...@gm...> - 2008-07-30 17:36:19
|
Hi yipiha, > I added the pxa-reg.h > # include <asm-arch/arch-pxa/pxa-regs.h> > > but I have the same mistakes Not necessarily surprising if you're not compiling a kernel module. > If I spent the second solution on how user-mode integrated example gpregs > for my case > > for info: > I compile my position on development and not on the gumstix going to look in > the directory gcc: > staging_dir / arm-linxuclicgnueabi / bin / That's normal. The same compiler is used for building kernel modules and user-mode programs. However, user-mode programs can't directly access the hardware registers like kernel mode programs can. The GPCR etc macros only work if you have direct access to the hardware registers. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: yipiha <yip...@gm...> - 2008-07-31 07:23:05
|
It's clear therefore be better to use the example of gpreg code But I do not see how too put up a lot of data this example does not speak to me I just need to paste copy, call the function written? or should it be changed for my application? if so, how do can you give me an example for how to begin ? thank you very much for your help, this is really appreciable -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18749186.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-08-06 12:30:01
|
Hi Dave I change the usleep-test function creates a micro-sleep in which I call the file lcd-hal-avr.c and I compiled all, the compilation has succeeded Yet when I run the test program-lcd change for my needs nothing appears on the screen only on the console and instructions take a significant amount. I do not see where the problem can come i forward my hardware implentation and my code I tested the functions they gpio and function micro-usleep runs well. If you have an idea I had your disposal and I thank you in advance I am personally blocked http://www.nabble.com/file/p18850147/lcd_GUMSTIX.rar lcd_GUMSTIX.rar VCC +5V GND 0V RS -> Ldd0 -> gpio 58 RW -> Ldd1 -> gpio 59 E -> Ldd2 -> gpio 60 Db4 -> Ldd3 -> gpio 61 Db5 -> Ldd4 -> gpio 62 Db6 -> Ldd5 -> gpio 63 Db7 -> Ldd6 -> gpio 64 Ldd0..6 under 3.3V is set 1 Dave Hylands wrote: > > Hi yipiha, > >> Ok usleep-drv and usleep-test works in the gumstix >> >> How do you implement the usleep in the lcd-hal-avr.c ? shall i use the >> function C "exec" ? > > I wouldn't. You should do the same thing that usleep-test does, which > is to open /dev/usleep and then do an appropriate ioctl to delay for > the desired amount of time. > >> and i have one more question, in the function LCD_HAL_E_Pulse. >> >> the E need to be High for 230 milli second, not nano second ? > > The E signal needs to be high for at least 230 nano-seconds. > > -- > Dave Hylands > Vancouver, BC, Canada > http://www.DaveHylands.com/ > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18850147.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Dave H. <dhy...@gm...> - 2008-07-31 13:59:29
|
HI yipiha, > I modify the example gpreg for a header and then I edit lcd-hal-avr.c for > use function on gpreg. > > this seems to work but the compiler does not recognize the functions ndelay > and mdelay Yeah - those are kernel only functions. You'll want to use this driver as well: <http://docswiki.gumstix.com/index.php/Usleep_drv> You can replace the 230 nanosecond delay with a 1 usec delay using the usleep-drv > I wonder of whether to use the main part of the gpreg file or not to this > part: > > unsigned int i, ii, rval, speed, count, tmp; > int fd; > fd = open ( "/ dev / mem", O_RDWR | O_SYNC); > if (fd <0) ( > perror ( "open (\" / dev / mem \ ")"); > exit (1); > ) > map = mmap (0, > MAP_SIZE, > PROT_READ | PROT_WRITE, > MAP_SHARED, > FD, > / / The following was only needed for certain revisions of broken uClibc > / / # ifdef __ARM_EABI__ > / / 0x40E00000 / MAP_SIZE > / / # else > 0x40E00000 & ~ MAP_MASK > / / # endif > ); > if (map == (void *) -1) ( > perror ( "mmap ()"); > exit (1); > ) > > > of course i delete the main of gpreg.c but i ask me if the code above is > necessary ? Yes - the above code is absolutely necessary. It opens the memory device and maps in the register space which makes the registers available in user space. That's the magic that makes everything work :) -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: yipiha <yip...@gm...> - 2008-07-31 14:25:56
|
Dave Hylands wrote: > > HI yipiha, > >> I modify the example gpreg for a header and then I edit lcd-hal-avr.c for >> use function on gpreg. >> >> this seems to work but the compiler does not recognize the functions >> ndelay >> and mdelay > > Yeah - those are kernel only functions. You'll want to use this driver as > well: > <http://docswiki.gumstix.com/index.php/Usleep_drv> > > You can replace the 230 nanosecond delay with a 1 usec delay using the > usleep-drv > So for my delay, i need to use usleep-drv and so copy and paste usleep-drv.c et .h Dave Hylands wrote: > >> I wonder of whether to use the main part of the gpreg file or not to >> this >> part: >> >> unsigned int i, ii, rval, speed, count, tmp; >> int fd; >> fd = open ( "/ dev / mem", O_RDWR | O_SYNC); >> if (fd <0) ( >> perror ( "open (\" / dev / mem \ ")"); >> exit (1); >> ) >> map = mmap (0, >> MAP_SIZE, >> PROT_READ | PROT_WRITE, >> MAP_SHARED, >> FD, >> / / The following was only needed for certain revisions of broken uClibc >> / / # ifdef __ARM_EABI__ >> / / 0x40E00000 / MAP_SIZE >> / / # else >> 0x40E00000 & ~ MAP_MASK >> / / # endif >> ); >> if (map == (void *) -1) ( >> perror ( "mmap ()"); >> exit (1); >> ) >> >> >> of course i delete the main of gpreg.c but i ask me if the code above is >> necessary ? > > Yes - the above code is absolutely necessary. It opens the memory > device and maps in the register space which makes the registers > available in user space. That's the magic that makes everything work > :) > > Where shall i implement this code ? in lcd-hal-avr.c in the function LCL_HAL_Init ??? -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18755816.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-08-07 14:09:49
|
For the delay, i found the mistake, there was a useless call of function ftme(&endTime) in the usleep.c but there isn't any display on the lcd Where is my mistake ? Thanks for your help. yipiha wrote: > > So > > I have connected a pot in the pin 3 and i don't see anything > > For the gpio when i call the function set ou clear > the pin change of state to 0v at 3v or inverse > > for the delay the function E pulse is one micro-second and the function > Delay is 1 milli-second time msec > > and the zip code > http://www.nabble.com/file/p18854026/lcd_GUMSTIX.zip lcd_GUMSTIX.zip > > > Dave Hylands wrote: >> >> Hi yipiha, >> >>> Yet when I run the test program-lcd change for my needs nothing appears >>> on >>> the screen only on the console >> >> When the 2x16 LCDs are first powered on, you should see that the top >> row is made up of black squares and the bottom row is not. >> >> If you're not seeing that, then you probably need to adjust the contrast. >> >> You should have a 10K pot connected between +5 and ground, with the >> center tap going to pin 3 on the LCD connector, as shown in this link: >> <http://homepage.hispeed.ch/peterfleury/avr-lcd44780.html> >> >>> and instructions take a significant amount. >> >> of time? If so, then some of the delays are probably incorrect. >> >>> I do not see where the problem can come i forward >>> my hardware implentation and my code >> >> Did you configure the LDD pins to be GPIO? i.e. have you confirmed >> that when you write a 1 and a 0 to a particular GPIO that the voltage >> chnaged from 0v to 3.3v? >> >> Do you have your code available in a tarball or zip file? I don't seem >> to have anything handy to unpack a rar file. >> >> -- >> Dave Hylands >> Vancouver, BC, Canada >> http://www.DaveHylands.com/ >> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's >> challenge >> Build the coolest Linux based applications with Moblin SDK & win great >> prizes >> Grand prize is a trip for two to an Open Source event anywhere in the >> world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> gumstix-users mailing list >> gum...@li... >> https://lists.sourceforge.net/lists/listinfo/gumstix-users >> >> > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18870124.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Dave H. <dhy...@gm...> - 2008-07-31 16:04:08
|
Hi, >> You can replace the 230 nanosecond delay with a 1 usec delay using the >> usleep-drv >> > > So for my delay, i need to use usleep-drv and so copy and paste usleep-drv.c > et .h No - the -drv.c files are the kernel module files. You'll need to compile and build the kernel module. You would use a few lines from the usleep-test.c file (which is the user-mode file). You need to open /dev/usleep and do the ioctl in place of the delays. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: yipiha <yip...@gm...> - 2008-08-04 08:57:58
|
Hi dave and thank If I understood I must as a first step: usleep compile copy the result in 2.6.21gum / ... make a modprobe module compiled and depmod and functions of usleep are available? then call "exec" function usleep in lcd-hal-avr.c, and it's all ? Dave Hylands wrote: > > > No - the -drv.c files are the kernel module files. You'll need to > compile and build the kernel module. You would use a few lines from > the usleep-test.c file (which is the user-mode file). You need to open > /dev/usleep and do the ioctl in place of the delays. > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18807767.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: yipiha <yip...@gm...> - 2008-08-08 09:45:39
|
the only reason that I see is the supply of 3.3 v and not 5v For the LCD that I have at my disposal is the MDLS16265 If you have an idea I am taker. Dave Hylands wrote: > > Hi yiphia, > >> For the delay, i found the mistake, there was a useless call of function >> ftme(&endTime) in the usleep.c >> >> but there isn't any display on the lcd >> >> >> Where is my mistake ? > > I don't see anything obvious wrong with the code. > > In my experience, you should be able to connect Power, Ground, and > Contrast up and adjust the contrast until you see a row of black > squares. If you can't see the row of black squares, then there is > something else about the LCD (like maybe it requires a backlight > voltage). You'll need to consult the data sheet. > > Until you can get the row of black squares, there really isn't much > point in trying to debug the code. > > -- > Dave Hylands > Vancouver, BC, Canada > http://www.DaveHylands.com/ > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18888919.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Dave H. <dhy...@gm...> - 2008-08-04 17:13:04
|
Hi yipiha, > Ok usleep-drv and usleep-test works in the gumstix > > How do you implement the usleep in the lcd-hal-avr.c ? shall i use the > function C "exec" ? I wouldn't. You should do the same thing that usleep-test does, which is to open /dev/usleep and then do an appropriate ioctl to delay for the desired amount of time. > and i have one more question, in the function LCD_HAL_E_Pulse. > > the E need to be High for 230 milli second, not nano second ? The E signal needs to be high for at least 230 nano-seconds. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: Dave H. <dhy...@gm...> - 2008-08-06 14:31:12
|
Hi yipiha, > Yet when I run the test program-lcd change for my needs nothing appears on > the screen only on the console When the 2x16 LCDs are first powered on, you should see that the top row is made up of black squares and the bottom row is not. If you're not seeing that, then you probably need to adjust the contrast. You should have a 10K pot connected between +5 and ground, with the center tap going to pin 3 on the LCD connector, as shown in this link: <http://homepage.hispeed.ch/peterfleury/avr-lcd44780.html> > and instructions take a significant amount. of time? If so, then some of the delays are probably incorrect. > I do not see where the problem can come i forward > my hardware implentation and my code Did you configure the LDD pins to be GPIO? i.e. have you confirmed that when you write a 1 and a 0 to a particular GPIO that the voltage chnaged from 0v to 3.3v? Do you have your code available in a tarball or zip file? I don't seem to have anything handy to unpack a rar file. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: yipiha <yip...@gm...> - 2008-08-06 15:43:58
|
So I have connected a pot in the pin 3 and i don't see anything For the gpio when i call the function set ou clear the pin change of state to 0v at 3v or inverse for the delay the function E pulse is one micro-second and the function Delay is 1 milli-second time msec and the zip code http://www.nabble.com/file/p18854026/lcd_GUMSTIX.zip lcd_GUMSTIX.zip Dave Hylands wrote: > > Hi yipiha, > >> Yet when I run the test program-lcd change for my needs nothing appears >> on >> the screen only on the console > > When the 2x16 LCDs are first powered on, you should see that the top > row is made up of black squares and the bottom row is not. > > If you're not seeing that, then you probably need to adjust the contrast. > > You should have a 10K pot connected between +5 and ground, with the > center tap going to pin 3 on the LCD connector, as shown in this link: > <http://homepage.hispeed.ch/peterfleury/avr-lcd44780.html> > >> and instructions take a significant amount. > > of time? If so, then some of the delays are probably incorrect. > >> I do not see where the problem can come i forward >> my hardware implentation and my code > > Did you configure the LDD pins to be GPIO? i.e. have you confirmed > that when you write a 1 and a 0 to a particular GPIO that the voltage > chnaged from 0v to 3.3v? > > Do you have your code available in a tarball or zip file? I don't seem > to have anything handy to unpack a rar file. > > -- > Dave Hylands > Vancouver, BC, Canada > http://www.DaveHylands.com/ > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > -- View this message in context: http://www.nabble.com/LCD-2x16-characters-on-a-breakout-gs-tp18707346p18854026.html Sent from the Gumstix mailing list archive at Nabble.com. |