Forum: Mikrocontroller und Digitale Elektronik Ernsthafte Frage


von toddoy (Gast)


Lesenswert?

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

von toddoy (Gast)


Lesenswert?

Hat sich geklärt Timing Problem (AVR war zu schnell :=) )

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
Noch kein Account? Hier anmelden.