wie schnell ist der Parallelport?



  • Hallo Leute,

    ich hoffe das ich hier im richtigen Forum bin.
    Ich will mit dem Parallelport meines PC's zwei Schrittmotoren ansteuern. Um eine Ausreichende hohe Drehzahl zu bekommen brauche ich eine Frequenz von 10kHz.
    Ist es überhaupt möglich solch hohe Frequenzen am Parallelport auszugeben?

    Ich stelle den Beitrag auch nochmal ins Assambler Forum.

    Gruß

    spacehelix



  • Ist nicht gut möglich, weil Windows kein Realtime-OS ist. Das heißt, es kann dir keine Antwortzeiten garantieren und ist damit für zeitkritische Sachen ziemlich unbrauchbar.
    Dein Programm dürfte z.B. niemals für länger als 0.1ms unterbrochen werden, um 10kHz zu schaffen.

    Besser wäre es, den Schrittmotoren etwas Intelligenz zu verschaffen, etwas ein Mikrocontroller. Dann ist die Datenübertragung vom PC aus nicht mehr zeitkritisch.

    edit: Anders sieht es aus, wenn du DOS benutzt. Da sollte das möglich sein, weil das Betriebssystem dir nicht dazwischenschießen kann.



  • Hi cd9000,

    Sorry das ich nicht geschrieben habe welches Betriebssystem ich benutze. Da ich ein Echtzeitfähiges Betriebssytem brauche, werde ich MS DOS als Betriebsystem verwenden.

    Meine Bedenken habe ich darin das, das Auslesen der Koordinaten aus einer Datei meine Prozessor zu sehr auslastet.
    Ich habe auch noch nie mit irgendwelchen Interrupts gearbeitet.
    Weißt du wie man die Frequenz von 10KHz hinbekommt. Ich habe gelesen das man den Timerbaustein den jeder PC hat, setzen muss und wenn der Abgelaufen ist unterbricht ein Interrupt Befehl das laufende Programm.

    Aber wie setze ich den überhaubt den Timerbaustein bzw. führe ich ein Interrupt aus?

    Gruß

    Kevin



  • Also wenn es das ist, was ich meine das es ist, dann musst nicht den Interrupt aufrufen, sondern den Code für den betroffenen Interrupt schreiben. Auf was du unbedingt dabei achten musst, ist dass du den Code der zuvor dafür gesetzt wurde auch ausgeführt wird. Und du musst am Ende deines Programms das auch wieder zurücksetzen!

    Kurz gesagt:
    Du brauchst eine Funktion, die deine 10kHz erzeugen und die den Code, der bisher vom betroffenen Interrupt ausgeführt wurde auch ausführt (d. h. die Codestelle aufruft; klingt komplizierter als es ist ;)).
    Im eigentlichen Programm musst du dir die Adresse des bisherigen Codes des Interrupts merken. Danach musst du den Aufruf umändern auf deine eigene Funktion.
    Am Ende deines Programms musst du das natürlich wieder rückgängig machen, ansonsten wird sich dein System sehr schnell aufhängen (was noch das unkritischste ist) und ein Neustart ist nötig.

    Bei der ganzen Sache musst du also sehr gut aufpassen was du machst und teste am besten zuerst auf einem Testsystem, ob es fehlerfrei läuft.


Anmelden zum Antworten