glad it worked, speed ok now ?
what lcd are you using exactly ?

Quoting f_lamme <[EMAIL PROTECTED]>:

> Have solved was a signal problem
> --- In [email protected], "f_lamme" <[EMAIL PROTECTED]> wrote:
>>
>> I have changed my function so
>>
>> void lcd_put_byte(unsigned int value, char clk, int reg)
>> {
>>      unsigned int val2;
>>         val2 = value<<8;
>>      gpiosetbits(PORTG, val2 & 0xff00);
>>      gpioclearbits(PORTG, (~val2) & 0xff00);
>>         gpioclearbits(PORTG, PG1);
>>      gpiosetbits(PORTG, PG3);
>>      gpioclearbits(PORTG, PG3);
>>      if (clk==1)
>>      {
>>              gpiosetbits(PORTG, PG3);
>>              gpioclearbits(PORTG, PG3);
>>      }
>>      gpiosetbits(PORTG, PG1);
>>
>> }
>>
>> When I call the function I do such a thing
>>         adr=(r-1)*240+(c-1);
>>      byte=((adr >> 16) & 0x00000001);
>>      banco=(banco << 1) & 0x03;
>>      byte=byte | banco;
>>      gpioclearbits(PORTG, PG16);
>>      gpioclearbits(PORTG, PG17);
>>      gpioclearbits(PORTG, PG18);
>>      lcd_put_byte(byte,0,REG0);
>>
>> With the old system everything was working slowly, but now the
>> dispatch of the data to the dislpay does not work
>> > > PG8-PG15
>> > >
>> > > --- In [email protected], John Crispin <john@> wrote:
>> > >>
>> > >> hi
>> > >>
>> > >> gpiosetbits(PORTG, (value << 8) & 0xffffff00);
>> > >> gpioclearbits(PORTG, (~value << 8) & 0xffffff00);
>> > >>
>> > >>
>> > >> although the & 0xffffff00 bit is not really needed, it is just for
>> > > sanity
>> > >>
>> > >> john
>> > >>
>> > >> >       if (value&0x01)
>> > >> >               gpiosetbits(PORTG, PG8);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG8);
>> > >> >       if (value&0x02)
>> > >> >               gpiosetbits(PORTG, PG9);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG9);
>> > >> >       if (value&0x04)
>> > >> >               gpiosetbits(PORTG, PG10);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG10);
>> > >> >       if (value&0x08)
>> > >> >               gpiosetbits(PORTG, PG11);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG11);
>> > >> >       if (value&0x10)
>> > >> >               gpiosetbits(PORTG, PG12);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG12);
>> > >> >       if (value&0x20)
>> > >> >               gpiosetbits(PORTG, PG13);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG13);
>> > >> >       if (value&0x40)
>> > >> >               gpiosetbits(PORTG, PG14);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG14);
>> > >> >       if (value&0x80)
>> > >> >               gpiosetbits(PORTG, PG15);
>> > >> >       else
>> > >> >               gpioclearbits(PORTG, PG15);
>> > >> >       // cs e clk
>> > >> >       gpioclearbits(PORTG, PG1);
>> > >> >       gpiosetbits(PORTG, PG3);
>> > >> >       gpioclearbits(PORTG, PG3);
>> > >> >       if (clk==1)
>> > >> >       {
>> > >> >               gpiosetbits(PORTG, PG3);
>> > >> >               gpioclearbits(PORTG, PG3);
>> > >> >       }
>> > >> >       gpiosetbits(PORTG, PG1);
>> > >> >
>> > >> > }
>> > >> > the problem and the slowness with which the byte is sent
>> because the
>> > >> > byte is sent bit per bit.
>> > >> > Does a way exist to send a whole byte?
>> > >> > I excuse but I do not speak English very well
>> > >> >
>> > >> >
>> > >>
>> > >
>> > >
>> > >
>> >
>>
>
>
>


Reply via email to