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.