Ich habe mal endlich etwas Zeit und beschäftige mich weiter mit meinem
alten Projekt der Festplattenansteuerung mit Atmega32.
Um einen Einstieg zu finden lese ich mit dem Commando (Identify Drive)
meine Festplattenparameter aus, soweit alles Super, bis auf dass die
richtigen Festplattenparameter aus der Ausgabe alle um 1 Word
verschoben sind.
Beispiel:
Word Nr: 000 00208 0b0000000011010000
Word Nr: 001 01114 0b0000010001011010
Word Nr: 002 16383 0b0011111111111111 // Anzahl Zylinder
' sollte eigentlich
in '
der Word Nr.2 zu finden '
sein
Word Nr: 003 00000 0b0000000000000000
Word Nr: 004 00016 0b0000000000010000 // Köpfe nach Datenblatt '
' in word Nr.3
Word Nr: 005 00000 0b0000000000000000
Word Nr: 006 00000 0b0000000000000000
Word Nr: 007 00063 0b0000000000111111 //sektoren richtig wäre '
' word Nr. 6
Word Nr: 008 00000 0b0000000000000000
Word Nr: 009 00000 0b0000000000000000
Word Nr: 010 00000 0b0000000000000000
Word Nr: 011 08224 0b0010000000100000
Habe ich die IDE Spezifikation falsch verstanden, oder mache ich etwas
falsch.
Hier mein Programm Listing zum auslesen (Benutze WinAvr)
void IdentifyDrive(void)
{
uint16_t dummy;
//uint16_t * ptr_eeprom = 0;
uint16_t * ptr_eeprom = 0;
uint16_t temp;
WaitNBusy(0);
SetMasterActive();
SetRegAddr(COMMAND_REG); // command Register
WriteRegister(0xec); // identify Drive Opcode
delay2us();
SetRegAddr(DATA_REG);
eeprom_busy_wait();
for(dummy = 0; dummy < 256 ;dummy++)
{
delay2us();
eeprom_busy_wait();
eeprom_write_word(ptr_eeprom,ReadRegister() );
ptr_eeprom = ptr_eeprom + 1;
}
sendstring("\n Fertig Informationen auslesen"); // Debug
};
Wäre froh, wenn ich endlich Klarheit hätte, warum die ausgelesenen
Daten um 1 Word verschoben sind.
Gruß Tobi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.