Propeller Cerberus hybrid
Dr_Acula
Posts: 5,484
Blue sky brainstorming here with combining a .net board and a propeller, with both the propeller as a 'master' or as a 'slave' and I'd appreciate some thoughts from the brains trust.
Board is here http://www.ghielectronics.com/catalog/product/349
The sockets are all 10 pins and the pinouts are here http://wiki.tinyclr.com/index.php?title=FEZ_Cerberus_Developer
Formal description of socket types here http://gadgeteer.codeplex.com/wikipage?title=.NET%20Gadgeteer%20Socket%20Types
There are lots of addon boards here http://www.ghielectronics.com/catalog/category/275/
So - first thing. Scroll down that last link to near the bottom and they are charging $124.95 for a VGA addon board. Immediately the propeller springs to mind as a much cheaper option. It would be a propeller, eeprom, VGA socket, some resistors, and a 10 pin header socket. Power comes down the socket which makes things easy. Could use I2C or serial or SPI as the comms protocol. The propeller could do the same job for maybe 1/4 of the price.
Second idea - those touchscreens seem a little expensive. I'm still trying to find out how fast a pin can be toggled in C# - someone posted some code saying it was only 8khz but I'm sure they can go faster as I2C is 400khz. But that involves a custom driver. Someone else posted some code showing an update for a screen taking over a minute. Averagejoe and I started with times like that too, but when we added external ram and ported the code into pasm we got an update down to only 30ms. So there is definitely scope for a lower priced and faster touchscreen with the propeller as the driver.
And then there is the idea of using the propeller as a 'master' and having some of those 10 way headers on a board and tapping into the mass produced prices of peripheral boards.
I might fire up Eagle and design a few boards and see where it leads
Thoughts would be most appreciated.
Board is here http://www.ghielectronics.com/catalog/product/349
The sockets are all 10 pins and the pinouts are here http://wiki.tinyclr.com/index.php?title=FEZ_Cerberus_Developer
Formal description of socket types here http://gadgeteer.codeplex.com/wikipage?title=.NET%20Gadgeteer%20Socket%20Types
There are lots of addon boards here http://www.ghielectronics.com/catalog/category/275/
So - first thing. Scroll down that last link to near the bottom and they are charging $124.95 for a VGA addon board. Immediately the propeller springs to mind as a much cheaper option. It would be a propeller, eeprom, VGA socket, some resistors, and a 10 pin header socket. Power comes down the socket which makes things easy. Could use I2C or serial or SPI as the comms protocol. The propeller could do the same job for maybe 1/4 of the price.
Second idea - those touchscreens seem a little expensive. I'm still trying to find out how fast a pin can be toggled in C# - someone posted some code saying it was only 8khz but I'm sure they can go faster as I2C is 400khz. But that involves a custom driver. Someone else posted some code showing an update for a screen taking over a minute. Averagejoe and I started with times like that too, but when we added external ram and ported the code into pasm we got an update down to only 30ms. So there is definitely scope for a lower priced and faster touchscreen with the propeller as the driver.
And then there is the idea of using the propeller as a 'master' and having some of those 10 way headers on a board and tapping into the mass produced prices of peripheral boards.
I might fire up Eagle and design a few boards and see where it leads
Thoughts would be most appreciated.
Comments
He wants to offer a low cost Prop based alternative to the overpriced VGA board GHI offers. Basically poach sales from them. The trick is, is to make it easy to use. That means not learning Spin or Pasm. Just be able to send commands and data to it.
The Gameduino does it with the Arduino via Include files for the C compiler. Makes it very easy to do graphics.
The VGA board would be the same as the Propeller PocketTerm from brielcomputers, but maybe instead of a RS232 as the comms link you use the TTL signals and a 10 pin header as this saves two max3232 chips. And the onboard regulators on the pocketerm would not be needed either. So the board would be smaller.
It looks like a lot of fun, and there's some really cool ideas I was brainstorming. Take the "music production" app I've been kicking around. It would be way smarter to use something like the Cerberus as the "control" and have propeller's running the sound emulators.
I look forward to seeing what you come up with. Keyboard,video,mouse are always handy breakouts and the propeller could handle this quite well IMO.
It is a simple board, as power would come from elsewhere so no regulators needed. This leverages off all those peripheral boards that are already available, joysticks, SD card etc etc.
Missing things not available and which the propeller could do well:
A VGA board would be a VGA socket and some resistors.
A TV board which is a RCA socket and 3 resistors
A keyboard/mouse board which is a PS2 DIN connector and some resistors*
A touchscreen board which would be two ram chips and 5 161 chips and a few gates.
The * for keyboard is that cerberus can run USB host mode so would probably use USB keyboards rather than PS2 ones.
Comms to the cerberus board would be via a TTL serial link.
There are some other synergies too.
I've got a Cerberus board on order. The IDE looks clever. You connect up the modules to the main board within the IDE and it automatically works out the pin allocation and writes the code accordingly. No reason that couldn't be done for the propeller version too.
The touchscreen one is the one I'd like to really think about. I am wondering about moving the SPI for the touch sensor off to the cerberus SPI port, but keep the SD on the propeller board as that allows faster transfer of data from the SD card to the display. Then abstract the spin code into some simple commands that you pass down a serial link, eg open file, read n bytes, move to ram location, dump to display. I think the propeller will do this better than the cerberus as it can multi task with all the cogs.
Below is a recent quote from a post on the GHI Electronics forum. I have been to the GHI Electronics site quite a bit, and you would be surprised how often the Propeller comes up, but everybody considers it to be a specialized device. I think a lot of people know about the Propeller, but consider it to be to different to really start using it?
Ray
I think you've made a great point here. I've not had a chance to check the Cerberus specs for serial comms. I'm wondering if there's hardware handshaking available, because if there is it may be possible to use a similar methodology to that I'm exploring with the touchburger and expansion board.
The big problem I'm facing right now is shutting the serial cog on the Touchburger down before screen refreshes / memory access. I think the easiest way is to FORCE de-assert of the RTS pin using the main program's cog. Then empty the buffer before shutting serial cog down.
I keep getting cool ideas as to what could be done, it will be interesting to see what develops!
For a Prop/VGA interface, there is some discussion at the moment on the N8VEM site regarding a driver with individual colors for each character. I think Kuroneko wrote a driver, but what is missing (I think) is the code to run the ANSI escape sequences. ANSI would be a good protocol as it has been around for years.
Doc, look at this article OBC posted on instructables:
http://www.instructables.com/id/Calling-Bulletin-Board-Systems-BBS/step7/Catching-the-BBS-bug/
ansiterm.bin has color per cell and it has (nearly) full ANSI capabilities.
It's based on code borrowed from Vince Briel's Pocketterm, VGA driver by Pulmoll, plus some work to extend ANSI sequences and make the color palette more RGBI-like. There is a version for TV also, with similar capabilities, using Potatohead's text driver.
I think Pulmoll also had ANSI processing in one of his emulators, but he used PASM in a separate cog, while in ansiterm.bin it's done in spin.
Now it would be worth trying to replace the VGA driver with the one from Kuroneko, as that should save one more cog.
Ok, here are 4 boards.
1) The motherboard - changed slightly from the previous design so there is an SPI, SD card, two serial links and I2C down the right side of the prop, and P14 and P15 can be used for audio out. That leaves 14 pins for a data plus address plus rd plus wr bus.
2) A programmer/regulator board. Use either switchers or linear regs. Power from a wall wart. Or use a USB to header adaptor on ebay for $13 which brings out 5V so you can power everything off the USB port.
3) A board with resistors and sockets for TV VGA Mouse and Keyboard
4) A touchscreen board. The touchscreen uses a few more chips than previous designs and will be slightly slower as data is sent out to the ram in bytes rather than in words. Dumping data from ram to the screen is the same speed though. The upside is that the touch SPI port and the SD port have dedicated propeller pins, so that makes the code easier, and also those two cables could either go to a Cerberus board or to a Propeller board.