Hallo die Damen und Herren! Ich habe vor einen Laserstrahl in 2 Dimensionen abzulenken, und hatte früher erst die Idee einen xy-Galvo vom Ebay zu benutzen. Hab ich ausprobiert, leider hatte ich das Problem, daß es eine Hysterese gab, wodurch der Laserstrahl nie richtig genau die Positionen getroffen hat. Eine Kreislinie ist ein flach eingedellter Kreis geworden. Somit ist die Anwendung für ein Laserbelichten von Platinen fast undenkbar, denn da können dadurch Kurzschlüsse übrigbleiben. Woran kann das liegen? Ist es der Analoge Servo der das Ablenken nie genau macht? Idee also verworfen. Kam nächste Idee: In HDD-s sind ja bekannterweise perfekte Servos für das Cylinder-Tracking schon eingebaut. Also wenn ich sage lese auf sektor 12345689, dann geht er auf den Track, wo dieser Sektor auch ist, und zwar in ein paar ms. Ein paar Maxtor HDDs sind glücklicherweise so aufgebaut, daß man die Servoachse auch ohne Öffnung des Gehäuses sehen und als Spiegelhalterung benutzen kann. Wenn man also 2 davon benutzt, hat man die perfekte Ablenkeinheit. OK, hab ich getan, aber da kam das, was Linux so schnell macht... Read cache. Dadurch werden nicht mehr alle Punkte angefahren, die ich verlange... Wie schalte ich dieses Helferlein ab, so daß die HDDs immer zum gewünschten Track springen müssen? Die HDD habe ich mit einem USB zu IDE Converter angeschlossen. Irgend welche weiteren Ideen? Ziel ist der perfekte Digitale Galvo Servo :D LG, Martin
A. K. schrieb: > O_DIRECT schon probiert? Ja, da gibts aber immer einen Fehler "invalid Argument" Obwohl die Argumente OK sind, wenn keine O_DIRECT benutzt wird...
Wenn Kernel alt genug, dann such mal nach "raw device". Ist veraltet und soll rausfliegen, aber zumindest der 2.6er hat den Driver noch. Wenn modprobe raw funktioniert, dann ist er noch drin.
Martin G. schrieb: > Ja, da gibts aber immer einen Fehler "invalid Argument" Beim open oder beim read? Read muss nämlich aligned sein.
Fehlermeldung beim Read. Python code. WIe sage ich dem Python wo die variablen sein sollen?
Gute Frage... Ich nix Python. Ich hoffe freilich, dass wenigstens die Daten blitzsaubere Blöcke sind und nicht 13 Bytes vom Nirgendwo. Denn das geht mit Python zweifellos.
Ruf hdparm auf. Das kann O_DIRECT und kann auch Sektoren lesen.
Ach ja: So macht man das beispielsweise in jeder Sprache, in der Arrays nach dem Start am gleichen Platz im Speicher bleiben: Man alloziert einmal 1023 Bytes und liest 512 Bytes, einen Offset von 0..511 durchprobierend. Kann auch sein, dass es nicht 512 sondern 4096 sein muss.
Die Platten haben normal auch einen Read-Cache eingebaut. Auf den hat Dein Linux keinen Einfluss. Ich würde daher zuerst per hdparm den Write-Cache der Platte abschalten. Das geht im Gegensatz zum Read-Cache. Ich weiß aber nicht ob der Befehl durch deinen USB-IDE-Umsetzer durchgeht, manche können nicht alle Befehle umsetzen. Danach dann immer Schreibbefehle senden um die Position zu setzen. Bei was für Maxtor-Modellen geht das mit dem Anzapfen der Kopfposition von außen?
Gerd E. schrieb: > Die Platten haben normal auch einen Read-Cache eingebaut. Auf den hat > Dein Linux keinen Einfluss. > > Ich würde daher zuerst per hdparm den Write-Cache der Platte abschalten. > Das geht im Gegensatz zum Read-Cache. Ich weiß aber nicht ob der Befehl > durch deinen USB-IDE-Umsetzer durchgeht, manche können nicht alle > Befehle umsetzen. Recht hat er... Nicht alle Befehle gehen durch. Nicht mal hdparm --read-sector ... Muß ich wohl doch eine alte Mainboard direkt dafür zweckentfremden... Warum geht eigentlich nicht alles durch? ist doch nichts anderes als ein Schreiben auf Register, oder wie spricht man mit einer Festplatte? Da wär vielleicht ein kleines Projekt in Sichtweite, wenn man direkt die IDE Schnittstelle ankitzeln könnte, und einen Mbed oder Arduino drauf loslassen könnte :D > > Danach dann immer Schreibbefehle senden um die Position zu setzen. > > Bei was für Maxtor-Modellen geht das mit dem Anzapfen der Kopfposition > von außen? Die dünnen 20GB Gurken, da muß man die Folie neben der Platine abziehen und viola da ist die Achse... (vorsicht, nicht die Folie mit dem Staubfilter drunter...) Oder die Fireball 3 mit 40 GB. (code vam51jj0)
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.