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.