Hi,
wow das ist mal ne Antwort. Vielen Dank. Ich habe das ganze jetzt auch schon so in meinem Programm umgesetzt. Zuerst stelle ich das Sensing auf High, dann wenn die isr angesprungen wird, schaue ich ob der pin high oder low ist und stelle danach das sensing um. Ich benutze einen mega32 mit 16mhz. Die erhaltenen Werte teile ich durch zwei. Somit habe ich bei Knüppelmittelstellung einen Wert von 1500 -> perfekt !!! Jetzt muss ich noch den zweiten interrupt dazu bekommen, den zweiten Kanal einzulesen. Werde berichten.
Hier erstmal mein aktueller Code:
Code:
'
'### Chipdefinition ###
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 64
$swstack = 64
$framesize = 64
'### Portdefinition ###
Config Portb.7 = Output ' Port für LED auf Ausgang schalten
Config Portb.6 = Output ' Port für LED auf Ausgang schalten
Config Portb.0 = Output ' Port für Servo_1 auf Ausgang schalten
Config Portb.1 = Output ' Port für Servo_2 auf Ausgang schalten
Config Portb.3 = Output ' Port für Servo_3 auf Ausgang schalten
Config Pind.2 = Input ' Port für RC_1 Signal auf Eingang schalten
'### Alias ###
Led_1 Alias Portb.7 ' LED_1 dem Ausgang Portb.7 zuweisen
Led_2 Alias Portb.6 ' LED_2 dem Ausgang Portb.6 zuweisen
'### Dim ###
Dim Rc As Word
Dim Timer_wert_1 As Word ' Wert für Timer1 bei steigender Flanke
Dim Timer_wert_2 As Word ' Wert für Timer1 bei fallender Flanke
Dim Timer_auswerten As Word ' Wert nach subtrahieren
Dim Timer_flag As Byte ' Flag für Timer fertig
'### Int0 ###
Config Int0 = Rising ' Int0 bei High
Enable Int0
On Int0 Rc_auswerten
Enable Interrupts
'### Timer1 ###
Config Timer1 = Timer , Prescale = 8
Enable Timer1
'### Main ###
Main:
If Timer_flag = 1 Then
Timer_auswerten = Timer_wert_2 - Timer_wert_1
Timer_auswerten = Timer_auswerten / 2
Timer_flag = 0
End If
Print Timer_auswerten
Goto Main
'### int0 ###
'### Wenn int0 ausgelöst wird, schauen ob pin high oder low und dementsprechend Sensing auf Rising oder falling stellen ###
Rc_auswerten:
If Pind.2 = 1 Then
Timer_wert_1 = Tcnt1
Config Int0 = Falling
End If
If Pind.2 = 0 Then
Timer_wert_2 = Tcnt1
Config Int0 = Rising
Timer_flag = 1
End If
Return
Danke nochmal
Gruß Kay
Lesezeichen