OK, I just got my Logic Analysator and traced the
communication on my PC while forcing it to do PIO
instead of DMA.
I then changed my AVR code to do the exact same
commands and nearly the same timings and... nothing
changed - the drive still responds with error code
0x04 after the read sector 0x20 command is issued.
On the PC:
I noticed a time frame of 115,230ns between the
0x20 Command and the first alternate status register
read. during that time, INTRQ goes high so the drive
"is done" and wants the host to interact with it
again. IORDY is the whole time high from the host.
The status read is 0x58 on the PC.
On the AVR:
IORDY is the whole time low (it is not connected),
INTRQ stays low the whole time, and the first status
read back is 0xD0 for a long time and then it goes to
0xD1 and then 0x59.
Things I plan to try next:
- power down the drive on the pc, power it up and then
try to access sector 1 again and see what happens.
Maybe some magic "initialization" is done on bootup
what I don't do.
- make IORDY high on my AVR too