Hallo,
ich habe ein Problem mit Variablen bei dem ich nicht weiterkomme. Ich lese mit einem ATmega48 Signale einer RC- Fernbedienung aus, dazu habe ich folgenden Code abgeändernt:
http://<br />
<a href="http://www.r...sid=</a><br />
Der Code gibt Werte im Bereich von ca. 16300 (Steuerknüppel linke Pos.) bis 8590 (Steuerknüppel rechte Pos.) aus. Um Servos anzusteuern wird von der Lib. Servo in Bascom eine Byte- Variable verlangt (Das ganze soll ein Empf. seitiger Mischer werden). Wie kann ich den Bereich von 7710 Schritten Linear in eine Byte- Variable von 50- 200 legen. Ich habe mir bereits folgenden Thread hier im Forum angeschaut werde aber nicht richtig schlau bez. des Index beim Lookup- Befehl.
http://<br />
<a href="https://www....0832</a><br />
hier noch mein Code:
Code:
'Konfiguration des Timer1
Config Timer2 = Timer , Prescale = 1
Config Timer1 = Timer , Prescale = 1
Config Timer0 = Timer , Prescale = 1
'Konfiguration des INT0
'Interrupt bei jedem Flankenwechsel (0->1 und 1->0)
Config Int0 = Change
Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
Config Portb = Output
Dim Temp As Byte
Dim Reading As Bit
Dim Rc_value As Word
Dim I As Byte
Dim Error As Bit
'======================================================
'Initialisierungen
'======================================================
'Zuweisung der Interrupt-Service-Routinen
On Int0 Rc_read
On Timer1 Rc_error
'Timer-Freigabe
Enable Timer1
Stop Timer1
'Freigabe der Interrupt-Routinen
Enable Int0
Enable Interrupts
'======================================================
'Hauptprogramm-Schleife
'======================================================
Do
Temp = 0
If Reading = 0 Then
Print "Kanal1: " ; Rc_value
End If
Loop
End
'======================================================
'ISR für INT0 - R/C-Kanal lesen
'======================================================
Rc_read:
'Den Timer starten mit steigender Flanke
If Reading = 0 Then
Start Timer1
Reading = 1
'Den Timer stoppen mit fallender Flanke
Else
Stop Timer1
Rc_value = Timer1
Timer1 = 0
Reading = 0
End If
'Error-Bit rücksetzen
Error = 0
Return
'======================================================
'ISR für Timer1 - Fehlerhandling
'======================================================
Rc_error:
'Error-Bit setzen
Error = 1
Reading = 0
Stop Timer1
Rc_value = 6300
Return
besten Dank
Torsten[/url]
Lesezeichen