Hallo! Ich hoffe ihr könnt mir bei diesem Problem helfen. Ich habe zwar schonmal eine Frage zu diesem Thema gestellt, es kam bis jetz aber immer noch nicht das richtige heraus... Die Ata-spec hab ich gelesen(das notwendigste(timing busycheck, register usw...)) Zum Test versuche ich, die Drive-info zu lesen. Dazu resete ich erstmals die Harddisk. Danach frage ich das busy flag ab, bis es low ist. Dann schreibe ich den befehl &90 (device diagnostic) in das befehlsregister. Danach frage ich das busy flag ab, bis es low ist. Dann schreibe ich den befehl &ec(identify device) in das befehlsregister. Danach lese ich wieder das Statusregister, bis busy low ist und warte bis drq high ist. Wenn dies der Fall ist, schalte ich ins Datenregister, und lese dieses 512 mal aus.(1 Sektor) Doch ich bekomme nur Wirre zeichen, und vorallem jedesmal andere. Doch der Zugriff funktioniert garantiert. Genau in dem Moment, wo ich das Drive-info command schreibe, 'gurgelt' die Festplatte und zwar jedesmal, wenn ich dies versuche. Ich hab im Anhang das Bascom Programm dran. An portc hängen die datenbits 0...7 an pa.0 dior an pa.1 diow an pa.2 ad0 an pa.3 ad1 an pa.4 ad2 an pa.5 reset Ich weiss das einige der Signal low aktiv sind.(dior, diow, reset) Ich habe die Datenbits 8..15 nicht angeschlossen, sondern gegen low geschaltet. Dies weil alle Register über 8 bit angesprochen wird und ich kein fat filesystem proggen will. Daher brauche ich die restlichen 8 bits nicht. Ich verwende ausserdem einen Atmega 16 Desshalb nun meine Frage : Warum geht das nicht? Ich habe alles geprüft, auf kurzschlüsse zwischen den leitungen, ebenfalls mit dem durchgangsprüfer alle Leitungen gecheckt. Auch das Kabel ist nur etwa 20 cm lang. Nik
Hallo Nik, Das interface ist 16-bit, du brauchst also auch die bits 8..15. und wie hast Du die CS leitungen angeschlossen? Lese mal die ATA specs. siehe mal bei der mp3 player "yampp" wie mann es anschliessen soll. Grüße Mark,
Ne, brauch ich nicht...wurde mir hier schonmal bestätigt. Die Register sind acht bit ausser das Zylinder register. Dieses ist jedoch in zwei acht bit register eingeteilt. Und wenn ich KEIN Fat System machen möchte brauche ich auch keine 16-bit. "lese mal die ata specs"-lies meinen Beitrag-hab ich nämlich bereits:) Bis jetzt bin ich auch soweit das ich das status register lesen kann. Mich würde nun eher interessieren, ob mein programm im grunde richtig ist
Hi um den ID-Befehl auszuführen brauchst du aber die oberen Bit da der Befehl eben einen Sektor (=512 Byte) über das Data-Register zurückgibt. Du mußt also nur 256mal lesen, aber eben immer 16 Bit. Außer du verwendest CF Karten. Die lassen sich in einen 8-Bit Modus schalten. Matthias
Trotzdem, 16bit sind ja nicht ein byte. Sind dann zwei bytes in den 16 bit, oder gelten nur die oberen? Wenn darin zwei bytes verpackt wären, müsste ich ja jedenfalls die hälfte empfangen können.. ich bekomme aber nur nullen zurück also nicht ascii nullen, sondern hex &00. sonst nix. Aber die 'normalen' write/read commanos gehen doch auch mit acht bits, oder? Ich langsam keine pins mehr frei. Auserdem: wenn ich das recht sehe, kann ich cs0 auf vcc schalten und cs1 auf gnd, da diese pins low-aktiv sind, wird immer der KOmmando-Register block ausgewählt. Für was ist der steuer Registerblock überhaupt notwendig, wenn man nur einfache befehle ausführen will? Nik
Hi den einen Block braucht man wirklich nicht unbedingt. In den 16 Bit sind jeweils 2 Byte verpackt. Mit deinem Code kann ich leider nichts anfangen weil: 1. Basic (das ginge ja noch) 2. Fast nicht kommentiert (muß ja nicht jede Zeile sein aber ein bischen mehr wär schon schön) 3. Überhaupt nicht strukturiert (ein paar tabs können ganz klar die Übersicht erhöhen) Matthias
Ja, ich werde den code noch mehr kommentieren und nochmals reinstellen, diesen hab ich einfach in etwa 30 minuten zusammengebastelt :) aber kein proble, ich mach ihn etwas verständlicher, wird jedoch noch etwas dauern
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.