The way I see it is that you have two options. You could use the PRUs, or
you could use the McSPI hardware module. I would attempt to help you but I
really do not have any experience with the ws28xx style serial protocol
that many seem to use with external lighting of this type.

I can tell you that a very simple, and cheap msp430g2553 project would be
more that enough to do all this - bare metal. So no needs for a cpld or
FPGA or anything fancy like that. But again as mentioned by Matt above, you
have to design a PCB, + circuit and the costs add up despite the fact that
a G2553 is only about $2-$3 sold as singles.

Anyway, maybe someone here knows the McSPI module well enough to comment on
"shifting out" data to your matrix ? As in actually knowing what they're
talking about . . .

How does this buffer work anyhow ? Is this like a bit field in both
dimensions, or what ? Kind of hard to grasp on a simple code glancing ;)

On Mon, Mar 21, 2016 at 4:36 PM, David Good <david.go...@gmail.com> wrote:

> Yes, I would love for someone to give me tips on setting up a periodic
> timer interrupt.  What I have might be the only way to really do it, but I
> would assume not.
>
> Thanks for your tips on ghosting.  I will use it when I start to see real
> data in the buffers rather than my simple test patterns.
>
> About using SPI.  Yes, this is what I was doing on the Raspberry Pi, but
> haven't done it on the Beaglebone yet.  I will definitely give it a shot.
> Bit banging the clock and data looks like it's costing me ~1ms per row as
> currently implemented.
>
> On the topic of dedicated hardware offloading the workload, I suppose that
> this is exactly what the PRUs are designed for.  Perhaps it's time to say
> Hello World to one of them.  Since this is a personal project, there aren't
> any real design requirements, so any option is open to me right now.  I was
> planning to layout a PCB to clean things up a bit because right now I have
> a hand soldered perf board with ribbon cables :)
>
> Thanks for the suggestions!  Let's see if someone can answer about a
> kernel timer interrupt.
>
> --David
>
> On Mon, Mar 21, 2016 at 6:07 PM, CEinTX <mpo...@gmail.com> wrote:
>
>> 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.
>>
>
> --
> 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.
>

-- 
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