There are two ways to program the ArbotiX - via the FTDI port, or via the ISP port. Each programming method has its pros can cons, and this guide will discuss some of them.
Using the FTDI device like the UartSBee or the FTDI-USB Cable is the most versatile way of programming the ArbotiX. By using the FTDI port, you can easily program the ArbotiX as you would any other Arduino compatible board - just choose the correct board type, and serial port, then hit the upload button. In addition to programming the Arduino, the FTDI port acts as a normal serial port, allowing you to send information to and receive information from the ArbotiX.
There are two main disadvantages to programming via FTDI
1)The XBee and the FTDI port share a hardware serial port. This means that you can only have one of these devices connected at a time. To program the board via FTDI, you will have to remove your XBee module every time you upload a sketch
2)For programming via FTDI to work, a small program has to be pre-loaded onto the ATMEGA644p chip. This program is called a Bootloader, and is pre-programmed onto every new ArbotiX. This program takes up a small amount of your memory. For applications that are using every last bit of the ATMEGA644p's 64k of space, you may need to work without the bootloader.
An ISP (In System Programmer) like the USB AVR Programmer* bypasses the serial port and the bootloader by programming directly to the chip. Because there is no bootloader, you get the full space of the ATMEGA644p. And because the ISP is not using a serial port, there is no need to disconnect the XBee every time you re-program the ArbotiX, making the development cycle for Xbee based projects much faster.
The main disadvantages of using an ISP are
1)Because you bypass the serial port, you don't have access to the serial terminal or normal serial communications, which can make debugging troublesome
2)Programming a robot via ISP will remove the bootloader. This means that if you want to resume programming the robot with an FTDI device, you will need to 'burn' the bootloader to the board.
Notes on using an ISP programmer
- Devices like the USB-AVR programmer may show up as multiple devices. From your device manager you can see one identified as 'Programmer'. If you cannot find this, try both ports
- To upload via an ISP programmer you will need the correct programmer chosen from
Tools -> ProgrammerIn the case of the USB-AVR programmer, choose
AVR ISP mkII(serial)
- Instead of using the 'Upload button' you must use
File -> Upload Using Programmer