One project I have been playing with the idea for is an embedded control board offering on one side Ethernet and on the other various basic IO functions, RS422/485/232, ADC's, DAC's, Digital IO. This sparked off me researching the various different ways of doing it. This page is my meandering thoughts, and hopefully eventually, a finished product.


Well, unless I decide to be a total masochist and develop a FPGA based solution I am going to need a Processor of some kind, the way I see it the valid options are:

  • 8 bit Microcontroller - a PIC or AVR
  • 8 bit Microprocessor
  • 16 bit Microcontroller
  • 16 bit Microprocessor
  • 32 bit Microcontroller, with onboard flash - Atmel AT91
  • 32 bit Microcontroller, without onboard flash - Atmel AT91RM9200
  • 32 bit Microprocessor, without MCU - i.e. Motorala DragonBall 68ez328
  • 32 bit Microprocessor with MCU - i.e. Intel SA1100

Each has their uses, and eventually I would like to produce more than one type of board, maybe AVR, Dragonball, and AT91RM9200 based boards. But first, I need to do something simple. So I think I am going to use a Atmel AVR. Specifically, the Atmega32/64

For those who don't know the AVR range well the device has the following specs:

  • 32/64KB Flash Memory
  • 2/4KB SRAM
  • 1/2KB EEPROM
  • 8 channel 10bit ADC
  • 32/53 IO lines
  • 1/2 UART
  • SPI Interface
  • 0-16Mhz Clock
  • 40 pin PDIP or 64 lead TQFP
  • Datasheet

The last point, PDIP or TQFP, is vitally important, as I am soldering this together myself, by hand, I can't use BGA. So this Microcontroller should provide me with more than enough features for what I want (on a basic level).

Ethernet Interface

Originally I said that for embedded use with small microcontrollers, there are really two possible devices to use:

  • Cirrus Logic CS8900A
  • Realtek RLT8019AS

However I have since found the Micrel KS8842-16MQL chip. This is an interesting looking device. Rather than your typical ethernet interface IC, this one is infact a switch, it has 2 normal switched ports, and a 3rd port, which to the switch appears as a normal ethernet port, but to the rest of the world appears as an ethernet interface chip with a 8 or 16bit interface. Which is rather useful. Further, because it is effectively a switch, it allows you to daisy chain devices one after the other, simplifing cabling. I am now going to look into designing with these devices.

Another rather useful feature of the Micrel device is the availability of engineering samples. I managed to get three of this device from Solid State Supplies. This is a real bonus.

While searching through for info on connecting the 8019AS to the AVR, I came across the Packet Whacker board, from, which provides a daughter board that does all the ethernet stuff straight off. I also discovered they do an "EDTP Easy Ethernet AVR" board, which appears to have alot of the functionality that I want. However this a) Takes all the fun out of it and b) is too big, I recon I can do the same thing smaller, with the fearures I want. This is to be a learning experience for me, to just by the boards off the shelf would be no fun.

The Circuit

With the two main components out chosen, the circuit follows. Will put it here when I have it

The schematics and PCB will be made using gEDA.

The Board

Let me finish the schematic first!


It was a no brainer given the AVR, to choose C as the programming language, with librarys like the to provide lots of features we need, and then for a TCP/IP stack you can use uIP, which all plugs together very nicely, there is even some nice thread stuff with Protothreads. However there is more to the code than just the librarys and the compiler.

More on this tho once I have done a PCB and have something to code for.

Operating System

For such a highly specialised system using an 8bit micro, it seems very much over kill to use a heavy OS, however I am leaning increasingly towards contiki.

This page last modified Monday, 28-Aug-2006 01:44:18 CEST.