From Openmoko

Jump to: navigation, search

Processor discussion

--Glenn 14:25, 2 November 2008 (UTC)


This is what has been thought of: a simple processor that still suppports A/D converters and USB. A good candidate appears to be PIC16C765 Cost is approx. 5 USD.

Using an ARM processor just to convert some samples per second into USB appears to be overkill to me on first though. But the PIC is just one of the options to considered. A drawback appears that the ADC resolution is just 8 bit. This is quite coarse for some sensors. 12 bit would be better...

So what we need:

  • single chip
  • supports USB and approx. 8 ADC channels without many external components
  • low power
  • readily available development tools

PIC16C765 is a bad development platform, because it can only be programmed once (OTP). It is also not possible to update to newer enhanced firmware versions for the same reason.

There is also:

But for almost the same or a little more, you get much more with ARM.


  • PIC16C745: July 25, 2003 My Very First USB Peripheral Quote: "...For example, I wanted to change the number of buttons and add a couple of LEDs. To do this, you need to build new HID report descriptors and there you run into problems with incomprehensible standards documentation and inconsistent operating systems implementations...One last item that fits in under "firmware" better than anywhere else is the issue of vendor IDs. Like PCI and other "plug and pray" bus systems, your device presents a vendor ID and a product ID so that the host operating system can locate appropriate drivers. Unlike those other systems, there is no "experimental" vendor ID or apparently any way to get a legitimate vendor ID other than paying the USB Implementers Forum a minimum of $1500 every couple of years...If you want a host application of your own talking to a collection of custom peripherals you've designed, though, things are much harder..."
  • PIC18F4550 USB prototyping board
  • PIC18F2550 development board with USB port
    • PIC18F2550 Experimentierboard Quote: "...Es gibt bei Microchip mehrere Code-Beispiele wie man Programme für den PIC schreibt. Als HID (Human Interface Device), über eine spezielle DLL von Microchip oder als CDC-Device (Communication Device Class). Letzteres habe ich hier benutzt. CDC arbeitet [=works] über einen virtuellen COM-Port. Man schreibt seine Programme so als würde man eine serielle Schnittstelle [=interface] ansprechen. Für CDC ist kein spezieller Treiber[=driver] erforderlich..."
  • PIC18F2550 USB HID Oscilloscope Quote: "...Using HID means that this oscilloscope does not require drivers (only the oscilloscope software)..."

--Glenn 14:23, 2 November 2008 (UTC)

Universal (PIC, ARM) USB driver information:

--Glenn 15:45, 2 November 2008 (UTC)


I have found this:



Hi Rene - That is fine solution using a ftdi usb<->seriel chip. I use it myself. --Glenn 17:41, 3 November 2008 (UTC)


I recommend an AVR or PIC. Since they have no USB Interface, they are both very cheap and are easy to use. For programming an AVR all needed tools are in the most distros repositorys (gcc-avr, binutils-avr, avrlibc, avrdude). As USB interface, i recommend using an FTDI USB/Serial changer. They work very fine also with 1MBit Baud.

Every AVR has an integrated I²C, SPI and UART (Serial) Interface. You can connect 8 analog sensors, you have some Hardware Interrupts, Timers, PWM-Outputs,...

I'm currently working on an interface to control my robot with the freerunner. I'm using a simple gtk interface that sends some commands over a usb/serial cable to an Atmel ATMega32.

--Thomasgruebler 10:12, 3 January 2009 (UTC)

Personal tools