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...
If there is interest, what kind of specifications would be usefull?
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.
We've been down this path many times in c.a.e, so here's a summary:
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).
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.
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.
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
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,
If one of the maker (Sandisk?) gets big enough to kill off all others, then there will be a standard for USB flash drives.
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 > 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?