Home to jeffmcbride.net

Software

All of the Omnibot software was written in AVR assembler, and assembled with AVR Studio 4.0. I would have preferred to write it in C, but writing in assembler was one of the requirements for the course, so that's the way it is.

The software was broken up into four "processes" to perform four different tasks:

  1. Read the three PWM signals from R/C receiver
  2. Read the 6 encoder signals to keep track of wheel rotation
  3. Calculate necessary wheel speeds to attain desired trajectory
  4. Control wheels (based on encoder readings) to achieve desired wheel speeds

All of the processes were interrupt driven except for the wheel speed calculation, which was the "main" process, taking up any CPU cycles not used by the interrupts.

For now anyway, that's about all the documentation I'm going to write on the software other than the source code comments. The main code is in omnibot.asm, but there is also an include file (serialbuf.inc) that defines some serial FIFO routines that we used for debugging. It is not really needed to run, but it is referenced in the code so I've included it. You will also need the m162def.inc that comes with AVRStudio. Feel free to e-mail me any questions.

Download omnibotcode.zip