Hallo Zusammen
Ich habe eine CNC Steuerung entwickelt, die auf einer Standard PC
Hardware läuft. Alls Betriebssystem ist FreeDOS im Einsatz. Die
Steuerung gibt Takt/Richtungssignale über den LPT Port aus, die dann die
Servoantriebe der Maschine steuern. So weit so gut, die Steuerung läuft
sehr zuverlässig und sehr stabil.
Nun zu meinem Problem:
Das Takt signal wird nicht sauber erzeugt, und dadurch laufen die
Antriebsmotoren nicht ruhig. Das Signal ist vergleichbar mit einem PWM
Signal.
Hier ein kleines Test-Programm in PowerBASIC zur Takt Erzeugung:
OUT (&H61), INP(&H61) OR 1 'Lautsprecher und damit Zähler 2 aktivieren
OUT (&H21), 252 'Interrupts maskieren
OUT (&H43), &b10110000 '10110000bin 8253 Zähler 2 auf Modus 0
setzen
pause?? = 10000
for a = 1 to 10
out (&h378),&b00000010 'Takt Signal EIN
OUT (&H42), 255 'Zähler mit 65535 laden
OUT (&H42), 255
DO
a? = INP(&H42) 'Zähler auslesen
b?? = INP(&H42)
shift left b??,8
b?? = a? + b??
loop until b?? < pause?? 'Ist Zähler kleiner als Sollwert
out (&h378),&b00000000 'Takt Signal AUS
next
Diese Methode ist nicht optimal, weil ich manchmal bei Zählerstand 9999,
oder 9985, oder 9980, das PWM-bit auf 0 setze. Und somit ist mein PWM
Signal nicht schön konstant.
Gibt es eine möglichkeit mit interrupts zu arbeiten ? Damit mein PWM
Signal immer mit genau der gleichen frequenz kommt ?
Ich hoffe mir kann da jemand weiter helfen
Gruss Michael
Kennt sich denn niemand mit Timer, Counter oder Interrupts aus ? Oder hat jemand eine andere Lösung ?
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.