Taking a quick look at Mbed

A friend at work pointed me at Mbed devices for real-time end of line work. I’ve been involved in work that used 68hc11 processors for that sort of thing (getting very long in the tooth) and I’ve looked at using AVR parts (cheap, dip packages and decently capable). PIC controllers also seem to show up frequently (but the small look I’ve taken at the PIC architectures doesn’t make me happy).

These are ARM Cortex-M0 devices with what initially looks like pretty decent support. As an outbound, real-time controller and a back-end in something like an RPi (for home stuff) these might be a better solution than the AVR chips.

I’ve had good results from building systems with the ‘quick twitch’ responses pared down to the smallest size reasonable and baked into small controllers and keeping the higher level control (that doesn’t have the real-time response requirements) back on a linux or windows based system. This keeps the complexity in a location where powerful development tools and more capable processors reside and makes development much simpler.

I’ve been looking at CAN as an intermediate communications bus for this sort of work as well. The SPI and I2C options work well for tightly coupled peripherals in the same voltage/signalling family but don’t extend well.

Ethernet is wonderful for larger scale coordination between components that are running relatively complete operating systems.

CAN splits the difference with a defined physical layer running differential signalling that provides common mode noise resistance and (probabaly…haven’t looked in detail) avoids ground reference issues. It is still low level enough to code directly to (unlike TCP where the stack gets a bit involved to do things right). It supports quite a few devices on a single connection and has a decent access arbitration mechanism.

I haven’t bought any parts to try playing with this yet, but it seems promising.

Continued RepRap work

Looking to take some more steps forward on a RepRap printer. I’ve got at least some of the electronics for a baseline machine and the Prusa i3 has a wood frame option that looks very attractive.

Electronics list is here,. and a comparison chart here. Alternatives here.   RepRap DIY (looks like a European site). Heated bed discussion. Very much hoping to be able to buy (either as parts or a full assembly) an aluminum plate heated bed like the one in the commercial Prusa i3

Prusa i3 github site. I’m hoping this is where all of the directions, instructions and parts lists live…

System Level Design and FPGA Options

Reading a few things last night there seem to be new tools that work at a more abstract level than VHDL out there. Mentioned were System Verilog, SystemC and Handel-C. I’ll have to take a look sometime in the future. For the moment I suspect that VHDL will more than meet my immediate needs.

I’ve also been looking at FPGA choices a little bit. The Spartan-6 on the breakout board I’ve got looks about right for my initial sandbox work. I’d like to find smaller, larger and newer options for ongoing things…ideally something that is inexpensive enough to use as glue/support logic and can be worked with without needing a custom PCB. It is also clear that the Spartan line is getting old and that Xilinx is shifting FPGA focus towards newer designs such as the Artix

I’d like to look a bit at the CPLD end of the spectrum as these seem to promise smaller, cheaper glue options, perhaps even with less demanding packaging choices. Wondering if Altera has interesting options there…

VHDL and CAN books…

Looking at books on VHDL and CAN bus. My Xilinx Spartan 6 board arrived a couple of days ago and now I need to get to the point where I can make real use of it. I’ve been looking for books to give me more depth in VHDL and a bit more context on CAN and here’s what I’ve come up with…

I’ve found two basic types of books in this area. There are those aimed at  people with little or no digital design experience that spend lots of time explaining the basics of digital logic design and synchronous systems and those that work at taking someone with significant digital design experience and getting them up to speed on how to realize designs in VHDL.

I’ve done enough digital design in SSI/MSI/PALs back when I was doing that sort of thing for work that I’m looking for the latter sort of books and my list below reflects that.

Seems like a decent book on logic synthesis in VHDL. Less expensive than the other broad based book I located but seems a bit narrower in scope.

.

.

.

This book looks more comprehensive than the one above, but it is also more than twice as expensive. I’m thinking that I may get VHDL for Logic Synthesis for now and buy VHDL for Engineers later if I find I’m looking for more information.

.

.

This looks like the best CAN bus book I’ve seen so far. Another rather expensive text, but if it can give me a decent feel for how to best use the facilities CAN provides then it will be worth the money.

I can see a number of different ways to implement a protocol using the functionality that CAN makes avaialable but getting advice on what has worked for others will make it more likely that my first shot is sensible and effective.

.

I ran across this book after I saw the earlier ones (and in the context of the following volume that appears to provide more advances style and implementation approaches). I suspect this is likely a decent book…perhaps with more introductory digital design content than I’d generally prefer though. I may look closer at this one at some point.

.

.

I find myself frequently looking for books that go beyond the basics of syntax and function to discuss best practices and effective usage (and books with ‘effective’ in the title often seem to offer this sort of advice). This looks like an interesting book on the VHDL front from that perspective. I’ll likely buy one of the more general volumes above and read it through first, but once I’ve covered the basics, I’ll likely wind up here to try to refine my understanding and usage.

Looking at CAN bus over lunch

I’ve been looking at low level communications interfaces for microcontrollers for a while. Things like SPI and I2C seem limiting as operating voltage levels vary (at least 3.3v and 5v) and for SPI fan out is clunky/limited.

I’ve had several people whose opinion I respect say good things about CAN. It seems to be predominantly an automotive standard but the interface parts seem to be cheap enough and the interface more than flexible enough to work for general embedded projects. It runs at 5v on the physical layer and the controllers appear to be voltage flexible so that is a big plus.

A quick search turned up some microchip interface components and they have DIP versions so they’d be easy enough to use in a prototype environment.

The MCP2515 (datasheet) appears to be a reasonably priced SPI to CAN controller that would likely work nicely with either an RPi or AV controller (as in an arduino). Mouser has then for $1.88 for singles and $18..50 for ten so pretty reasonably priced.

The MCP2561 (datasheet) seems to be the physical layer companion part, also available in DIP packaging and DigiKey has these for $0.93 each or $19.31 for 25. 

I’ll likely do some more reading tonight. Once I get my workbench in the basement cleared and ready for use, I’ll likely buy a few of each of these and see what I can do with them.

PC/USB to CAN interfaces seem harder to come by. Most of what I saw online are $100.00 and up diagnostic probes. Useful items for development, but very expensive is all you want to do is talk to a device. I did find one break-out board from a side called tindie that seems to offer a $25.00 solution for the basics. Still seems a bit expensive and suggests putting together something ad-hoc with an AVR board and a controller/phy. As an initial, easy to use bootstrapping solution it looks potentially interesting though.

Just ordered an FPGA breakout board

I was reading a book on VHDL (I’ve had some contact, but long ago and somewhat tangential) last night.

I just ordered a Mojo v3 FPGA Development Board  from SparkFun so that I can do some more tangible experimentation with soft hardware 🙂 

It appears that Xilinx has a new version of their toolchain for the Spartan 6 FPGA that is on this board that works on windows 10. I’ll have to download the software and follow their instructions tonight or tomorrow night. I don’t have any specific project plans related to the board at the moment but for $75.00 or so it presents a great opportunity to play with VHDL on a real target.

I’ve been running into a few cases lately where it would be helpful to be better versed in VHDL and for home projects I can see many places where programmable logic would be superior to an embedded controller.

Looking at CAD Options for 3D Printing

Watching some training sessions for Fusion 360. I’m probably going to finally try to commission a RepRap this winter at some point. A co-worker has a prusa i3 and recommended Fusion 360 in start-up mode (free to use as long as you’re not making significant money) as a good tool so I’m going to see what I can learn about putting things together with the tool.

FreeCad has also been recommended and I’ve grabbed a copy. Fusion seems more capable and so I’m inclined to start there. Blender is also something I’ve played with…more for artistic than engineering work though. It is also on the list, but likely behind a practical cad tool at this point.

As a software engineer, the open source tools appeal quite a bit as they’re a possible place to make enhancements to the tooling over time and a way to look at the internals as well as the UI side. They’re on my list and I’ve grabbed the git repos for both tools but at the moment I’m looking more for an overview of the state of the art rather than internal details and I need to understand what current practice looks like before thinking about new features.

I would love to enable use of my HTC Vive with these tools at some point. Being able to walk around a shape or assembly in three-space and manipulate it would be pretty interesting. I suspect it could make some of the manipulations that are of interest much easier for less experienced users.

Full file ID API in Win32

In order to get the full ID of a file in Win32 the GetFileInformationByHandle  returning a BY_HANDLE_FILE_INFORMATION which contains 64 bits of file ID (and the volume id where the file resides) is a start.

The GetFileInformationByHandleEx  with FILE_INFO_BY_HANDLE_CLASS of returns FILE_ID_INFO which provides the full (potentially) 128 bit file id as required for ReFS.

I’ll likely provide support for both of these shortly, likely using C++/CLI to simplify the interface.

Given these two pieces of information it should  be much safer to clear out duplicate files as various sorts of links and mount points will still show the ultimate file identity properly and avoid deleting apparent duplicates that are really just aliased paths to the same file.

 

Engineering execution and creativity mixed for the best results…