More tea please.

I2C Adapters

Since our robotics kit uses an I2C bus, it would be really handy for me to have a USB-to-I2C adapter. With the addition of a simple RJ11 adapter, I’d be able just plug in a module and start hacking on it without the annoying set-up times, that involve sorting out the Slug and power board combo. If Student Robotics had several of these adapters, then any member could just grab a module and start hacking on some code.


I’ve just come across Till Harbaum’s i2c-tiny-usb design. Rather surprisingly this uses a relatively cheap ATtiny45 Atmel AVR and nothing else. It bitbangs the USB protocol. Apparently, this works rather well. What’s even more exciting, is that there’s a kernel driver available for the i2c-tiny-usb. This makes it behave as a proper Linux i2c bus device, so interacting with it from software couldn’t be simpler. This board can be an I2C master with clock speeds of up to 50KHz.


The Open Source InterFace (OSIF) is part of the OpenServo project, and I believe was designed by Barry Carter. Carter took the i2c-tiny-usb design, and adapted it to use an AVR with more pins, and upped the maximum I2C clock speed to 400KHz. Furthermore, the board has support for serial (I think UART), 6 GPIO lines and an ADC channel. Barry Carter sells the OSIF for £20 a board.

Carter also provides a kernel driver for the OSIF as well :-D

I bought an OSIF earlier today. I like the way that the OSIF uses work from two previous open hardware projects to create and sell the results. More on how it goes when I get it…

Posted at 5:51 pm on Tuesday 23rd October 2007

Sunday 6th August, 2007

Posted at 12:01 am on Monday 6th August 2007

Hacky hacky hacky hack

args = re.sub( r"/usr/lib/libpng12.so", "", args ) 

s = subprocess.Popen( "/home/rob/ecssr/proj-svn/slug/init-br/build_armeb/staging_dir/bin/armeb-linux-uclibc-g++-orig " + args , 
                      shell = True )
Posted at 10:52 pm on Saturday 24th March 2007

PWM Board Now Software Compatible

I just finished sorting out using the toolchain for the PWM board. Problem with the toolchain that I had was that the binutils I had installed (2.16) doesn’t support the MSP430F2013. After some searching around I found the patch I needed to apply to binutils in mspgcc CVS – and then managed to find a post about it on the mailing list.

Once the toolchain was built I ran a simple program that toggled the output pins continuously:

#include <msp430x20x3.h>

static int i = 0;

int main( void )

	P1SEL = 0;
	P1DIR = 0xFF;

		P1OUT ^= 0xFF;

The program ran correctly, and the level translation between the MSP430 and the servo outputs worked nicely. Good. Only motor controller to go now, and then we’ll be living in a softwarey world. Ah yes – the TI USB UIF interface seems to be working perfectly in spy-bi-wire mode :-)

Posted at 1:37 am on Friday 9th March 2007

Site by Rob Gilton. © 2008 - 2019