[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: LPT2 problems



> I've have a question about why this function
> below from etrax100parlcd.c looks like it does?
> For example, why sends it the instr three times?

The reason we repeat the same instruction three times is to
satisfy the timing requirements of the display controller
(in this case the HD44780U). You could however use nop();
instead to get the timing right. But that doesn't really
matter.

> static void display_write_instr(byte
> instr)                                     
> {                                                             
>                   
>   /* instr and LCD_E must be valid for 80ns
> */                                  
>   *R_PAR0_CTRL_DATA = PAR_OE |
> LCD_E;                                           
>   *R_PAR0_CTRL_DATA = PAR_OE | LCD_E |
> instr;                                   
>   *R_PAR0_CTRL_DATA = PAR_OE | LCD_E |
> instr;                                   
>   *R_PAR0_CTRL_DATA = PAR_OE |
> instr;                                           
>   *R_PAR0_CTRL_DATA =
> 0;                                                        
> }
> And what about this 
> "..be valid for 80ns"? 

The timing characteristics of the HD44780U clearly state
that the 'enable' signal has to be active for a minimum
of 80ns. I'm sure you'll understand if you have a look at
the timing characteristics of the display controller.

> on LPT2 in head.s and use that instead, and it seems like
> it keeps the values on the LPT2 until you change them.

I'm not sure if I understand what you mean with this.

Anyway, I hope this helps.

best regards
Markus