I’ve been having an issue today with a cryptic (which seems to be the norm for Microsoft) error message. Well, actually it was just an error number:
-1072896658
I was in the midst of adding some minor AJAXified code to a corporate website. The test site works perfectly, however whenever accessing the javascript Object/member xmlHttp.responseText on the release site, I get that magical number of death.
Thankfully Pavan Keely had already done the research on this one – IE is wigging out due to Charset issues. Sure enough, the apache directive “AddDefaultCharset” was set to none. Fixing that, fixed this annoyance.
As if I don’t have enough going on already (school, lab, work, numerous hobby projects, cigars and Tom Waits), I’ve begun modifications of one of those small radio-controlled helicopters using a PIC16f628A microcontroller.
I’ve done something similar with an radio-controlled car in the past (very basic “go forward, turn, go forward, back up” stuff though), but that was 5+ years ago. My goal this time is to code a program allowing the helicopter to lift-off, turn in search of the brightest source of light, and follow it. (Have you ever seen Sea-Monkeys go crazy over a flashlight? That’s my goal here, but with a helicopter)
A lot has changed in 5 years. The last time I worked on a project like this (as basic as it really is), I was using a PIC IDE on Windows 2000 (something I’ve since misplaced). I was also using the PIC16f84A then, a chip that’s since become less than favorable (less memory, needs an external oscillator)
Having migrated entirely to the Linux operating system (aside from a dual-boot laptop for school), I went in search of a decent C compiler and simulator – and I really lucked out. SDCC and GPSIM were exactly what I needed. (I have to give Micah Carrick a big thanks for his article that steered me in this direction)
SDCC is simply a Small Device targetted C compiler, so I’m not going to go into in depth here (see Micah’s great article above). BUT I did have a major issue getting it set up initially:
The problem I experienced with SDCC was that the Gentoo Portage distributed version is 2.5.6 (as of March 2010). Unfortunately, memory locations for individual pins on PORTA and PORTB on the PIC16f628A aren’t defined in the header files in 2.5.6. Usually, one can access them via RB[0-7], etc… So my advice is this – use the subversion distributed version of SDCC (which is presently 2.9.7)
My second issue getting set up was with GPSIM. I’ve not had a chance to delve into the reasons, but for some unknown reason the version 0.23.0 and 0.24.0 wouldn’t play nice with any controller I tried:
gpsim -p16f627 -c testcode.stc
gpsim – the GNUPIC simulator
version: Release 0.23.0
type help for help
**gpsim> SimulationMode:51
FIXME gui_breadboard.cc Build
WARNING: command line processor named “16f627” is being ignored
since the .cod file specifies the processor
WARNING: Ignoring the hex file “testcode.asm”
since the .cod file specifies the hex code
RRR gui_breadboard.cc:createLabel p16f627 11 42
Disabling WDT
FIXME: HLL files are not supported at the moment
**gpsim> running… attempt write to invalid file register
address 0x10a, value 0x1
could not decode trace type: 0x0
0x0000000000000066 p16f627 0x00FC 0x008A movwf pclath
Read: 0x0001 from W
Invalid Trace entry: 0x0
After flailing around trying to make gpsim happy, I finally downgraded to 0.22.0, finding that I had no issues with it.
GPSIM has some nice features – stopwatch, available breakpoints, simulated oscilloscope probes, the ability to lay out basic logic circuits, simulated LEDs and pushbuttons, etc
Ok, so now I’m all set to develop. I’ll post videos of the helicopter before and after modifications, as well as a before and after test-flight shortly.
Update: 3/28/2010:
Rob Pearce has infomed me that the issue above (regarding 0.2[34].0) has been now been fixed in subversion. While writing this article on the road, perusing the bugtracker (or reporting the bug) somehow slipped my mind – my bad. Kudos for the quick response time (once someone actually bothered to report it).
In any event, this article is meant to point out an excellent tool. Have a look at it.
I’ve been planning on building an APRS beacon into my car for some time, initially contemplating using a WebPadDT + XASTIR to do the work, but that idea quickly posed an issue – the WebPad was too big to reasonably it in the car with another passenger (at least in my car).
Yes, I’m well aware that APRS is not really meant as a vehicle tracking device, and in many circles it’s frowned upon.
I’ve enjoyed working with PIC microcontrollers since I was first introduced to the 16f84A years ago. But in all honestly, I’ve not done more than “blinky lights” and very basic modifications to an RC car with them. (Take a look at a great article to get started working with PICs)
Byonics has a cool kit – the Tiny Track3+. Figuring I’d use it as a chance to exercise my soldering skills (which need a bit of work), and liking the fact that I wouldn’t have to hunt for each individual component on my own, I picked one up (with GPS unit).
The project build steps are extremely well documented. Literally, every step along the way is fully explained along with color images in the downloadable PDF. Build time takes under 1 hour (actually closer to 30 minutes, although I incorrectly soldered the female DB9 connector to J2 and had to waste time de-soldering it).
Prior to installing the accompanying PIC16f628A chip, I made sure to back up the currently running software (these chips are dirt cheap, and I’m not entirely sure Byonics will just give me the software if I ever have to replace the chip) Looks like my old serial programmer still works (remember – the USB to serial adapters generally don’t put out enough voltage to program a chip, so make sure you have on-board serial):
After backing up the code, I pop the chip into place on the TinyTracker, and voila -the finished product looks like this:
The Byonics crew have also written software to configure the TinyTracker. Luckily it runs under WINE so I didn’t have to reboot. To configure, power the J1 DB9 connector with a 9volt battery.
And run the configuration program (again, it’s fairly well documented in the manual):
After being hung-up in customs (and a brutal snowstorm), I finally got the radio component of my APRS system – the FD-150A (It took almost a month to get here from Hong Kong)
The output voltage on the FD-150 battery is ~6.25V, too low to power the TinyTracker3 (which requires 7+V). A voltage multiplier would probably fix that, but my overall goal is to encase all components in a NEMA style box, powering it off the car. So for the rest of the testing period, I’m using an external power-supply.
Hopefully in the next few weeks, I’ll have time to finish the entire setup. Keep checking back, I’ll post updates when I can.
It was a year ago this month that I received a comment on the braindeadprojects site from a user named quotaholic.
Quotaholic had also picked up a WebpadDt with the hopes of expanding upon it’s capabilities. My initial goal was a cheap touchpad screen for a car-pc. Quotaholic was thinking about bigger possibilities – and built himself an entire community site.
So somewhere on or around March of 2009, www.webdt.org was born.
While I don’t necessarily agree with some of the goals of the site (I personally don’t understand the point of testing to see which Linux distro’s will run on the webpad – and would like to see the community get behind one distro and build releases specifically aimed at the webpad)… the level of ambition is amazing.
I’ve not had much time to continue with the webpad on my own. Quotaholic however, has released a 100M version of Debian Lenny with the LXDE Desktop Environment geared towards the webpad (penmount drivers working and all)
So what am I doing with my DT now? Using it to stream audio (over my wireless) to my kitchen stereo. And the Gentoo Image that I’ve put a lotof work into? Well, that filesystem is on my storage server while I use Quotaholics release.