Introduction
I received a Parallax HM55B compass module and wanted to quicky test it out, so I interfaced it with an old AVR and wrote a program to read the X and Y values and send them to a PC over the serial port.
Design
The compass module is wired to PORTB of the AVR, and a USB<->Serial connects to the UART.
The software on the AVR is written in assembly. It is programed to wait for a any byte to be recived on the UART, then reads the X and Y values from the HM55B, and transmits them over the UART as 4 bytes – 2 x 16bit signed integers (Y-LSB, Y-MSB, X-LSB, X-MSB).
A simple app is written in C# (2008 Express Edition), which requests X&Y, then converts these values into an angle in degrees.