Re: [beagleboard] Newbie question about I/O on the beaglebone black...

2014-12-03 Thread Jason Lange
If you don't want to get into PRU programming ordinary sequential IO and a
latched buffer might work for you.

On Thu, Sep 25, 2014 at 11:36 PM, John Tonkin john.ton...@gmail.com wrote:


 hi there

 your project is a little mysterious, so it is hard to be specific but here
 are some thoughts based on my own recent research into using beaglebones to
 drive LEDstrips and a custom LCD array.

 from https://github.com/osresearch/LEDscape

 the beaglebone SOC has two PRUs (programmable realtime unit) which are
 designed for this sort of purpose.
 the TI AM335x ARM Cortex-A8 in the BeagleBone Black has two programmable
 microcontrollers built into the CPU that can handle realtime tasks and
 also access the ARM's memory. This allows things that might have been
 delegated to external devices to be handled without any additional
 hardware, and without the overhead of clocking data out the USB port.

 (I am actually using a fork of this library
 https://github.com/Yona-Appletree/LEDscape
 for driving LED strips, and am planning to modify this code for my other
 project)

 PRUs run at 200MHz and have very efficient access to some (more than the
 16 bits that you require) of the GPIO pins (these need to be pin-muxed
 correctly - that is another can of worms / kettle of fish). you read /
 write to pins by reading / writing to specific PRU registers. so you can
 read/write 8 (or more) bits simultaneously. it's much more efficient than
 the more traditional Linux sysfs approach.

 there is a FAQ about using the PRUs stickied at the top of this group and
 lots more info on The internet's.

 Trammell Hudson, who developed the original LEDscape code, seems to have
 done quite a bit of interfacing beaglebones to old computing hardware.

 http://trmm.net/Category:Retrocomputing

 eg http://trmm.net/Mac-SE_video

 another example
 http://blinkenbone.com/projects/blinkenbone

 I've found a logic analyser (eg https://www.saleae.com) to be very useful
 when doing this sort of stuff.

 john

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


[beagleboard] Newbie question about I/O on the beaglebone black...

2014-09-26 Thread John Tonkin

hi there

your project is a little mysterious, so it is hard to be specific but here are 
some thoughts based on my own recent research into using beaglebones to drive 
LEDstrips and a custom LCD array. 

from https://github.com/osresearch/LEDscape

the beaglebone SOC has two PRUs (programmable realtime unit) which are 
designed for this sort of purpose.
the TI AM335x ARM Cortex-A8 in the BeagleBone Black has two programmable 
microcontrollers built into the CPU that can handle realtime tasks and also 
access the ARM's memory. This allows things that might have been delegated to 
external devices to be handled without any additional hardware, and without the 
overhead of clocking data out the USB port.

(I am actually using a fork of this library 
https://github.com/Yona-Appletree/LEDscape
for driving LED strips, and am planning to modify this code for my other 
project)

PRUs run at 200MHz and have very efficient access to some (more than the 16 
bits that you require) of the GPIO pins (these need to be pin-muxed correctly - 
that is another can of worms / kettle of fish). you read / write to pins by 
reading / writing to specific PRU registers. so you can read/write 8 (or more) 
bits simultaneously. it's much more efficient than the more traditional Linux 
sysfs approach.

there is a FAQ about using the PRUs stickied at the top of this group and lots 
more info on The internet's.

Trammell Hudson, who developed the original LEDscape code, seems to have done 
quite a bit of interfacing beaglebones to old computing hardware.

http://trmm.net/Category:Retrocomputing

eg http://trmm.net/Mac-SE_video

another example 
http://blinkenbone.com/projects/blinkenbone

I've found a logic analyser (eg https://www.saleae.com) to be very useful when 
doing this sort of stuff.

john

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


[beagleboard] Newbie question about I/O on the beaglebone black...

2014-09-25 Thread Mike Morris WA6ILQ

I have a possible application for a number of
BBBs and can't find a cogent answer...

Perhaps the collective knowledge and experience
of the group will provide the best answer...

Can the BBB do bytewide I/O under C ??

Here's the situation...

The project is to update an already deployed card
cage based hardware system.  It presently uses
a proprietary Z80 based CPU board that was
designed for the job 25 years ago.

I envision a replacement CPU board that plugs into
the existing proprietary socket - the card would be a
designed-for-the-job mothercard with a BBB upside
down so that the expansion headers plug into (onto ?)
connector strips on the mothercard.

At the moment, I envision that the BBB computing
environment will be Ubuntu running both a web
host and the custom applications program on startup.

The BBB I/O required will be the ethernet, the
host and client USB, the HDMI port, one I2C, and
UART 0 (for debugging).
I can see the custom application exclusively
accessing the A-to-D, the second I2C, one SPI,
and both UART 1 and 2.

The mothercard would have a 5 volt regulator
(the cage power is 12v), the necessary level
converters (all of the backplane buss signals
switch between 5 volt and ground), buffers / voltage
dividers for the A-to-D lines, an Adafruit clock /
calendar chip, perhaps sensors for temperature,
humidity, barometric pressure (on an i2c buss)...
Plus a few other items...  a card ejector tab, a DB9F
connector for the RS-232 debug port, front-facing
HDMI, USB host and client connectors, etc.

Now comes the zinger...  the mothercard interfaces
with the backplane data buss and it needs to look
and feel like the existing CPU board (from the point
of view of the other cards in the cage).

The existing CPU board is self contained (CPU,
RAM, PROM, EEPROM), except for two data
strobes plus two ports of bytewide I/O.   Things
are easier if you want to always send a byte or
always read a byte, but the bidirectional hardware
to get bytes in to and out of the custom applications
program might get tricky.

One port is bytewide output-only and the other is a
bytewide bi-directional port.

One nibble of the first port is used as a 4-bit board
select and the other nibble selects which data register
on that particular board is to be accessed.
Then a bytewide input / output port is used for the
actual data transfer, by way of a write strobe or a
read strobe that actually triggers the transfers of
the data byte.

The above can't be changed as we want the upgrade
path for over 100 of these systems to be a simple
case of having a non-techie walk up to the card cage,
power it down, swap the CPU card, plug in the new
RJ-45 cord, and power it back up.

I know we can use two of the BBB GPIO bits through
5 volt drivers / buffers for the read and write strobes
but how do I do the actual bytewide I/O ???

One possibility is bytewide I2C expander chips...
The Microchip MCP23008 or MCP23S08 looks
interesting.

But before I go down that road I'd like to know if
there is a better one.

And I'd like to hear from anyone that has successfully
done bytewide I/O, or has any suggestions on 5 volt
level converters (unidirectional or bidirectional), or
on a better clock / calendar chip, or i2c buss sensors
for temperature, humidity and barometric pressure.
The collective knowledge and experience of this group
is impressive.

Thanks in advance.

Mike

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