Just a little curious - Does anyone know of any small interface
boards, that would allow a microcontroller to access an IDE hard disk
drive, or ATAPI device (cdrom drive)? Not any kind of combo-board (SBC,
MP3 player capable, etc), just a single, small board that connects an
ATA device to an MCU.

If not...Would there be any interest in such a board? I know the
applications might be a little limited, but it seems like such an
interesting project that I can't help but wonder...

I don't know of one, but something I think that would be much more useful is
a way to interface a microcontroller to those USB flash drives, or to a CF
card (probably been done?). For most applications, if its big enough and
needs enough memory to use a hard drive then its better to use an embedded
PC anyway.

To interface to a flash drive it might be a problem because they all seem to
need different drivers (eg for win98) so it would depend on what chips are
in the flash drive.

1. There is a standard (storage class) for those USB pendisks. The
same class is implemented by USB card-readers, USB CD-ROM drives, and
USB hard drives. Win98 didn't have a generic storage class driver,
which is why all those devices ship with Win98 drivers (or don't
support Win98).

2. In order to connect to one of those devices, you need a USB host
implementation. While this is doable, the resources required to do it
are more than your average 8-bit controller has available.

3. It's much simpler and less painful to connect directly to different
storage media, ATAPI devices, etc. But you CAN do an embedded USB host
if you want to.

If you have approx. 20 spare pins (16 Data, IRQ, CS, R, W), you can
just program the micro to talk in IDE mode. You don't need any
external hardware. If you are short on pins, you can always multiplex
the pins.

It is very software specific to the micro.

Yes, for example, http://ide-cf.info-for.us

If one of the maker (Sandisk?) gets big enough to kill off all others,
then there will be a standard for USB flash drives.

I and others have used a standard 16 bit Super I/O controller card for years
on micros. For me it was a 'no-brainer' way of getting a PIC16F877 to have a
parallel port, 2 extra serial channels as well as floppy and HD interface.
Dr. Cheung(sp) used a similar approach to win thousands in the INK contest a
few years back when he added an NIC card to the same PIC.
Using the Super I/O card is cheap($5 or less),easy to wire up, and easy to
program. All info is readily on the 'web' just remember 'Google is my
friend'.
hth
j

It's not really as hard as it seems, in fact you can drive it directly
from your I/O ports using 16-bits for data and 8-bits for control. You
would run it in programmed I/O mode as opposed to DMA. This is usually
the method that the PC BIOS boots up in before the O/S kicks in.

The ATA interface looks like a stack of 8-bit registers with 16-bits for
the data register. Write an 8-bit READ SECTOR instruction to the command
register and there it is, the sector data is ready and waiting for you
to pick out a word at a time, in your own time. So really, the hardware
interface is simple because the IDE (Integrated Drive Electronics) does
all the real work. It's just if you want it to be FAT32/NTFS PC
compatible that you will need a <<<<little>>>>> more software to
interpret and interface to properly.

I just had a look at the GIDE/Z80 interface that someone mentioned. Yes,
if you want to design with a CPU that might be older than you are then
you will need all those extra chips. This is just the way someone did it
10 years ago with archaic technology even at that time. It's funny how
people make it hard for themselves just because they think it is more
complicated than it is.

Hmmmm, sometimes these extra I/O chips cost more than the micro they
hang off. I try to choose a micro that has all the I/O lines on-board as
these usually cost only a little more. An MSP430F149 or better still the
LPC2106 with it's 32-bit I/O will knock over the IDE interface
lickety-split. At around $8 even here in oz the 'baby' LPC2104 has 128K
flash, 16K ram, peripherals galore and 60Mhz 32-bit operation. Why would
I bother with less?