David,

Without seeing your circuit of how you are setting up your rows & columns 
to be driven, I'll take a blind stab at your issue.
To get rid of artifacts / ghosting / etc...
1) Shift out all your data
2) Turn off your drivers and row power if that is available
3) Delay ~20us
4) Latch the data into your drivers
5) Delay ~20us or more
6) Change your row address
7) Enable your outputs and/or row power

You must have some dead time between rows or you will get artifacts / 
ghosting / whatever you choose to call it.
You might get away with less than 20us but also you might need more 
depending on your circuit.
Too much dead time and you will get flicker - not enough and you guessed it 
- artifacts/ghosting.

For what it seems like you are doing, I'd use the SPI interface to shift 
out your data in blocks of 16-bits  - 9 xfers gets you 144 bits out.
You obviously could bit bang this but why when you have built-in hardware 
that will do it for you. I'd think it would be fast enough in an ISR. I 
should think less than 250 us.
Use the gpio for toggling your latch and output enable and addr/row select 
- these are low speed signals - so no problem
There are definitely easier ways to do this with external hardware, but for 
this size matrix it would be a waste of $. Yes, a $1-2 cpld will do the 
trick - but then you need a pcb etc...
Setup a periodic timer interrupt to sync your shifts / rows of data - take 
your refresh rate (suggest 55-80Hz to avoid flicker) & divide by # of rows 
(timer => 440 to 640 Hz / row)
Use the time between interrupts to setup your next buffer for display

Get someone here to help you with the timer/interrupt under Linux - I have 
no idea on that one. Would like to though - so maybe someone will respond 
with how to do that.

Hope that helps.

Good Luck,
Matt

>
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to