Make a hard drive constantly spin outside a PC case?
~30 seconds later, it stopped spinning and the only way to make it spin again was to turn the power off and turn it on again.
Obviously this isn't good for a hard drive clock as it needs to be spinning constantly
So how can I make the hard drive spin constantly?
Can I pulse a request line on the IDE cable every once in a while or do I need to actually transfer data to and from the hard drive? If it isn't too complicated I could program a PIC chip to talk to the hard drive to keep it spinning but I'm not sure about the structure of the data or how to talk to the hard drive.
Anyone know the simplest way to keep it spinning?
Thanks, Louis.
2
answers
|
Answer it!
|
There is info over at PJRC on how to interface a PIC with an IDE drive, but it requires about 20 bits of IO to do it: http://www.pjrc.com/tech/8051/ide/wesley.html .
To do this in code, you'll need to (and this is all speculation based on reading the docs):
1] Read the status register until it indicates READY
2] Write 0xE3 to the command register
#1 is probably unnecessary. The write cycle looks like you need to set the following bits (copied from docs):
/CS0=0, /CS1=1, A2..A0=111B, D0..D7=0xEH - set write to command register with "no Idle spindown" command
Then pulse the /WR pin low
The easiest way may just be to hook it up to a computer that allows you to set the idle times in BIOS, and do that. See if it saves it permanently.
Since I have taken the read/write arm out and cut a slot into the platter, the hard drive knows there is a problem and gives up.
I read the specification for ATA/IDE and it says that the device must give a ready signal within 30 seconds. So from that I think the hard drive keeps trying to work for 30 seconds then times out. It also says after it won't accept any commands until it is ready.
I'd copy and paste it here but for some reason it won't let me paste it.
It's here anyway ftp.t10.org/t13/project/d0791r4c-ATA-1.pdf
6.3.13 PDIAG- (Passed diagnostics)
Looks like I'm going to have to reverse engineer the control board =(
![]() |





























