Code:
$baud = 9600
$crystal = 16000000
$regfile "m32def.dat"
Config Portc.2 = Output
Vorne Alias Portc.2
Config Portc.1 = Output
Hinten Alias Portc.1
Config Portc.0 = Output
Links Alias Portc.0
Config Portd.7 = Output
Rechts Alias Portd.7
Config Timer0 = Timer , Prescale = 256 'konfiguriere Timer0 auf 16mikrosekunden pro takt
On Timer0 Pausenerkennung
Enable Timer0 '125 takte für 2millisekunden
Stop Timer0
Timer0 = 200
Config Int0 = Change 'configuriere Int0 Auf Wechsel
Enable Interrupts 'einschalten der Interrupts
Enable Int0 'einschalten Von Interrupt Int0
On Int0 Summensignalmessung 'springe Zu Summensignalmessung
Dim Pitch As Byte
Dim Gier As Byte
Dim Roll As Byte
Dim Nick As Byte
Dim Messung As Bit
Dim Anfang As Bit
Dim Kanal As Byte
Do
Links = 1
Links = 0
Waitms 1000
Print Pitch
Print Gier
Print Roll
Print Nick
Loop
Summensignalmessung:
If Messung = 0 And Kanal = 0 And Anfang = 1 Then
Start Timer0
Messung = 1
Anfang = 0
Incr Kanal
End If
If Messung = 0 And Kanal > 0 And Anfang = 0 Then
Start Timer0
Messung = 1
Incr Kanal
End If
If Messung = 1 And Kanal = 1 Then
Stop Timer0
Pitch = Timer0
Timer0 = 200
Messung = 0
End If
If Messung = 1 And Kanal = 2 Then
Stop Timer0
Gier = Timer0
Timer0 = 200
Messung = 0
End If
If Messung = 1 And Kanal = 3 Then
Stop Timer0
Roll = Timer0
Timer0 = 200
Messung = 0
End If
If Messung = 1 And Kanal = 4 Then
Stop Timer0
Nick = Timer0
Timer0 = 200
Messung = 0
End If
Return
Pausenerkennung:
Stop Timer0
Timer0 = 200
Anfang = 1
Print ; "pause"
Return
End
Und immernoch: Nur Nullen. Aber(!) wie man sieht ist am Schluss im Unterprogramm Pausenerkennung ein Printbefehl drin, d.h. normal müsste ich sehen wenn der Timer in den Überlauf geht (wie gewollt, damit die Pausenzeit mit mehr als 2ms erkannt wird). Am Anfang war der Startwert des Zählers 100, da müsste der Timer nur in der Pause in den Überlauf gehen. Bei 200 müsste er immer in den Überlauf gehen - tut er aber nie! Wo könnte das Problem sein?
Braucht man evtl. nen speziellen Datentyp für die Variablen (Pitch usw.) ?
Übrigens verändert sich mit Sicherheit nur die Impulsdauer, nicht das Tastverhältnis. Ich hab im Programm, das ich am Anfang gezeigt hab mal die gemessene Pausenzeit anzeigen lassen - die verändert sich wenn man die Knüppel von Endanschlag nach Min. Anschlag bewegt!
Lesezeichen