Go Down

Topic: Help with doubling frequency. (Read 1 time) previous topic - next topic


Nov 29, 2012, 04:50 am Last Edit: Mar 08, 2013, 05:32 am by pYro_65 Reason: 1
Hi, I have an LCD that I want to speed up using an external circuit.

Data is transferred via parallel and clocked in using a digital pin. Some commands do not require new parallel data unless you need it to change, so the clock pin can simply be toggled for the number of operations in the command.

To take advantage of this feature even more, I want to speed up the toggling of the clock pin.
My schematic below is what my idea is at the moment.

I use an LCD shield so pin 'B' ( connected to shield ) would be set to input for high impedance to disable it ( hopefully ).
A spare pin 'A' is used to create a signal for a XOR gate, which is split, with one input delayed using buffers.

Is this a common way of creating a pulse on both the HIGH and LOW transitions of pin A?
Also, is this the right way to connect the two Arduino pins together allowing me to "hack" the LCD shield?

Any help is greatly appreciated.

Cheers, Chris.


Have you considered direct port manipulation to speed up the clock pin toggling?

You can, for instance, pulse a pin with two instructions:
Code: [Select]

  PINB = 0x01 ; // toggle pin 8 (bit 0 of port B on Uno)
  PINB = 0x01 ; // toggle pin 8 back again
[ I won't respond to messages, use the forum please ]


Hey, cheers for the response, I'm already using port manipulation. Just looking to squeeze even more out of the system where possible.


Is this a common way of creating a pulse on both the HIGH and LOW transitions of pin A?

Yes that's a common pulse generating circuit.

But unless your buffers are very slow the pulse will be just a few nS, is that OK for the LCD? Have you checked that the likely pulse with is > the min pulse width required by the display?

What I don't get though is that LCDs are normally very slow, how does shaving 62.5nS of the clock pulse save that much? Is it a GLCD?

Rob Gray aka the GRAYnomad www.robgray.com


Yes, its a 320x240 262k ( running in 65k mode ).
The 'Write Data Setup Time' is 2.5 ns, hopefully I can squeeze many toggles into the 62.5ns pulse. I also have plenty of buffers to adjust timing.

I'm doing a fast graphics driver for it as the UTFT library is too slow for what I need. For the test this hardware will benefit, I have gotten full screen random colour paints down to 97ms over the UTFT 560ms with simple software changes; with the toggle frequency doubled or even quadrupled, the draw/clear speed will hopefully be much faster than manually erasing paths during animation.

I'll give a try at the circuit in a little bit, just need to find the best way of wiring the pin to the shield.


Go Up