Tag Archives: C programming

A (very) long overdue update…

Life has this tendency to get in the way sometimes. I’ve not abandoned this project, just that the available time to work on it hasn’t always been available.

I’ve made quite a bit of progress on building a clone of the DMXter user interface in C, running on an Atmel ATmega2560 AVR processor with a 2 line by 16 character LCD display and some pushbuttons. Development has been done using the avr-gcc tool chain. I have one last block of code that I want to implement before putting this out into the world, along with some clean up and more coherent comments in a few places. I will put this code up on Github when ready for release.

I also have a few other projects that I want to post about. There are a lot of very cool LED type devices to play with, two that I’m playing with are the ubiquitous WS2812 series of RGB LEDs with built in drivers and the other being an amazing 40 watt RGBA or RGBW LED. I’ll post more very soon about these. And maybe some FPGA stuff as well.

Revisiting an old project…

A little ancient history…
First generation Lil' DMXter
Way back in 1990, Bob Goddard of Goddard Design Co and I started on building a DMX512 test set which I named the Lil’ DMXter. Bob and I had been talking about building something like this since 1986 when we worked together on parts of the control equipment for the lighting system that was going into the Apollo Theater renovation in Harlem, NY. DMX512 had been recently created as a standard by engineers in the entertainment lighting industry, but there wasn’t an effective way to troubleshoot these new control systems. I had run up against this very issue while working at the Palladium night club in NYC (1985-90), where there was a large pre-DMX512 digital dimmer installation with no effective way to troubleshoot the digital side of the control system.

By 1990 both Bob and I had thought that SOMEONE had built some sort of useable test instrument that didn’t require an engineering degree, a computer terminal and some sort of magic black box to read data off the line. Never mind that it might be easy to use. In any case, I had this idea for what something like this might look like and had taken a small Pelican case I’d been given, put in an engraved front panel with all the parts (buttons, connectors, LCD display) on it, and with a bit of glue to hold everything together, built a hand prop. Bob took the hand prop and a single page piece of literature that was hastily created by a friend of mine and left for the autumn 1990 LDI trade show in Nashville, TN. By the end of the show it was obvious that not only had no one else come out with anything close to what we wanted to do but that there was major interest and need for such a product.

Upon Bob’s return from LDI we got started on turning this idea into a real product that could be built and sold. Bob took on the challenges of packaging – we still wanted it to fit into the small Pelican case, a battery power supply and all the logistics that go into manufacturing a product. Bob also undertook a detailed investigation of the electrical characteristics of the line driver ICs that we were going to use to create the signals that appeared on the DMX connectors. Bob’s work resulted in a very robust piece of test equipment that would survive out in the real world. So what did I do? I designed all the digital hardware, the main PC board and wrote all the software.

A quick side note – there was one person in the background at the beginning who had a tremendous impact on the design of the DMXter but received little or no credit at the time. Michael Callahan took it upon himself to figure out how all the menus were laid out in the first version. His work made the user interface a consistent and cohesive experience for the end user starting with version 1.00. Michael was also the one who called a set of DMX512 parameters a “flavor” which was what we used in the DMXter to describe the presets of parameters. If you were ever wondering where that term came from, well there you have it!

And now the reason why I’ve decided to create this blog – the software. Specifically the user interface, the arrangement of the five buttons and LCD display, the logic in how it worked from a user’s perspective and the code behind it. I have a current project I want to build to help me with my present day job and I want to use this same user interface for that project. The embedded systems world has changed a lot since the early days of the DMXter. The DMXter hardware was based around an Intel 8051 family microprocessor/microcontroller chip, in large part because it had a built in UART that would run at 250Kbaud when the processor clock was run at 16Mhz. All the software was written in assembly language. I recently did a small project for work that used one of the Atmel AVR series microcontrollers programmed in C. This is the same family of processors used in the Arduino family of microcontroller boards so popular that you can buy some of them at Radio Shack. So I want to implement this user interface in C and run it on an Atmel AVR 8 bit processor. And with it written in C, I should be able to move it to another platform with a small amount of effort.

I’m planning on documenting the user interface, its behavior, the design decisions (at least the ones I can remember) and my process of recreating it in C to run on the AVR processors. I’ve benefited from open source software and most recently open source hardware over the years. I hope to give something back with a C library that implements this user interface for small platforms so that others can use it for non-commercial purposes.