Hier etwas neues.
Ich lasse erst nach Aufforderung senden.
Die Werte sehen auf meinem Display schon gut aus.
nur wenn der negative Wert zum ositiven Wert umschlägt ist er plötzlich sehr groß, kippe ich die Platine weiter sieht es wieder besser aus.
Mache ich da noch was mit den zusammengeführten einzelstrings was falsch?
Es soll einen complement Integer ergeben.
Hier mein Code:
Code:$regfile = "m168def.dat" $crystal = 18432000 $baud = 115200 $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space Dim Z As Byte Dim I As Byte Dim Empfang As String * 14 Dim Nick As Integer Dim Nicka As String * 1 Dim Nickb As String * 1 Dim Roll As Integer Dim Rolla As String * 1 Dim Rollb As String * 1 Dim Gyro As Integer Dim Gyroa As String * 1 Dim Gyrob As String * 1 'Dim Gyroc As String * 1 'Dim Roll As Integer 'Dim Gyro_z As Integer On Urxc Onrxd 'Interrupt auslösen, wenn volsändiges Zeichen geladen. Enable Urxc Enable Interrupts Config Lcd = 16 * 3 , Chipset = Dogm163v5 Config Lcdbus = 4 'configure lcd screen Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portd.2 , Rs = Portd.3 Waitms 100 Initlcd Waitms 100 Display On Cursor Off Noblink Cls Do Waitms 150 Printbin 115 ; 110 ; 112 ; 1 ; 0 ; 1 ; 82 'get data gesendet 115,110,112,176,1 =data complete ' Printbin 115 ; 110 ; 112 ; 3 ; 0 ; 1 ; 84 'GET_ACCEL_BIAS If Len(empfang) > 13 Then Cls Nickb = Mid(empfang , 7 , 1) Nicka = Mid(empfang , 8 , 1) Nick = Makeint(nicka , Nickb) 'Aus beiden Strings ein Integer machen Locate 1 , 1 : Lcd "Nick= " ; Nick Rollb = Mid(empfang , 9 , 1) Rolla = Mid(empfang , 10 , 1) Roll = Makeint(rolla , Rollb) Locate 2 , 1 : Lcd "Roll= " ; Roll Gyrob = Mid(empfang , 11 , 1) Gyroa = Mid(empfang , 12 , 1) Gyro = Makeint(gyroa , Gyrob ) Locate 3 , 1 : Lcd "Gyro= " ; Gyro Empfang = "" End If Loop Onrxd: Empfang = Empfang + Chr(udr) Return End







Zitieren

Lesezeichen