Timer Interrupt ----> PWM Signal erzeugen

#3068268
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren