IDE interfaces use edge triggering to clock the data from the device. This makes them sensitive to ringing on the interface control signals, which results in two reads being seen by the device where only one was sent from the system.
When you 'drop' a byte, two things may happen: If you are doing a read multiple, the device just starts reading the next sector. If you are doing a read sector, the system doesn't get what it thinks is the last byte because two bytes were sent during one of the data reads. This may hang the interface.
It has been my experience that the buffer in the CF card (or a real drive) is much faster than anything the Atari is doing, which eliminates any chance of overruns. Once the first byte is 'ready' (and, it's always ready in just a ms or so), you can read the data as fast as you like. I've done millions of sectors on CF cards with no data loss.
I don't know what kind of circuit SIDE uses, but yours may need some tweaking. How much ringing you get depends on the ground path, the logic type and the series damping resistance.
I've been experimenting with video playback on the Atari with the SIDE cart, and I've run into a problem with the I/O that I was hoping someone with IDE experience could shed light on. For the most part it works, but there's a problem where a byte is getting dropped from the IDE device.
Here's a ready to go emulator setup so you can see what it's supposed to look like (3MB, too big to attach here). The SIDE drive is already configured when you launch Altirra and you just have to load the player executable.
...and here's what I'm occasionally getting on the real hardware:
I'm using 8-bit transfer mode with a 32 sector block size and the READ MULTIPLE command, with a 512MB CompactFlash card. It was much worse when I was using the plain READ SECTOR command, and adding a DRQ wait at the beginning of each sector didn't help. I reset the device and configure it for PIO mode 6 before playback. I have a 15KHz IRQ running to do sound and to flip PRIOR, so I don't have a lot of cycles to spare for workarounds and definitely can't afford to re-read sector blocks. I've confirmed that the I/O is happening fast enough to avoid buffer underruns in the player and that no errors are getting signaled by the drive. Any ideas?