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:
besten DankCode:'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
Torsten[/url]







Zitieren

Lesezeichen