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
Lesezeichen