Hallo, ich habe jetzt eine Lösung gefunden 
Für alle, die das gleiche Problem haben.Da steht die Lösung : https://www.roboternetz.de/community...usebit+atmega8
Jetzt konnte ich den Motortreiber auch schon testen. Er funktioniert und wird nicht einmal mit zwei RB-35 Motoren lauwarm !! 
Doch habe ich jetzt noch eine Frage zum PC-Bot-Interface. Ich habe für Testzwecke das aufgebaut: Bascom Code:
Code:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Config Serialin = Buffered , Size = 20
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Declare Sub Cw
Declare Sub Ccw
Declare Sub Stopp
Declare Sub Bremsen
Dim Stringinput As String * 20
Dim Teilstrings(5) As String * 6 'einzelne / zerlegte Strings
Dim Stringscnt As Byte
Dim Motornummer As Byte
Dim Motormachen As Byte
Dim Speed As Integer
Dim Sicher As Integer
Dim Pruef As Integer
Pruef = 10
Dim A As Byte
A = 0
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Print "Alles OK"
Do
'Stringinput = "M,1,1,500,502"
A = Ischarwaiting()
If A = 1 Then
Input Stringinput
Waitms 20
Print "Seriel"
End If
Stringscnt = Split(stringinput , Teilstrings(1) , ",") 'aufteilen nach ","
Motornummer = Val(teilstrings(2))
Motormachen = Val(teilstrings(3))
Speed = Val(teilstrings(4))
Sicher = Val(teilstrings(5))
Pruef = Motornummer + Motormachen
Pruef = Pruef + Speed
If Pruef = Sicher Then
If Teilstrings(1) = "M" Then
If Motornummer = 1 Then
Select Case Motormachen
Case 0
Call Bremsen
Case 1
Call Cw
Case 2
Call Ccw
Case 3
Call Stopp
End Select
End If
End If
End If
Loop
End
Sub Bremsen
Print "Bremsen !"
End Sub
Sub Stopp
Print "Stopp !"
End Sub
Sub Cw
Print "CW mit :" ; Speed
End Sub
Sub Ccw
Print "CCW mit :" ; Speed
End Sub
Visual Basic Code :
Code:
Imports System.IO.Ports.SerialPort
Public Class Form1
Dim Buffer As String
Dim Motornummer As Integer
Dim Motormachen As Integer
Dim Speed As Integer
Dim Pruef As Integer
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs)
If SerialPort1.IsOpen Then
SerialPort1.Close()
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
'Comport Einstellungen
SerialPort1.PortName = TextBox1.Text
SerialPort1.BaudRate = TextBox2.Text
SerialPort1.Open()
Button1.Enabled = False
TextBox1.Enabled = False
TextBox2.Enabled = False
Catch ex As Exception
MessageBox.Show("Achtung: Die Schnittstelle konnte nicht geöffnet werden! ")
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If SerialPort1.IsOpen Then
SerialPort1.Close()
Button1.Enabled = True
TextBox1.Enabled = True
TextBox2.Enabled = True
Button2.Enabled = False
End If
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Control.CheckForIllegalCrossThreadCalls = False
Buffer = (SerialPort1.ReadExisting)
'Die Textbox heißt Terminal und die Daten werden dort
'hineinkopiert()
TextBox3.AppendText(Buffer)
TextBox3.ScrollToCaret()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Motornummer = TextBox5.Text
Motormachen = 1
Speed = TextBox4.Text
Pruef = Motornummer + Motormachen
Pruef = Pruef + Speed
If SerialPort1.IsOpen Then
SerialPort1.WriteLine("M," + String.Format(Motornummer) + "," + String.Format(Motormachen) + "," + String.Format(Speed) + "," + String.Format(Pruef) & vbCr)
End If
Pruef = 0
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Motornummer = TextBox5.Text
Motormachen = 2
Speed = TextBox4.Text
Pruef = Motornummer + Motormachen
Pruef = Pruef + Speed
If SerialPort1.IsOpen Then
SerialPort1.WriteLine("M," + String.Format(Motornummer) + "," + String.Format(Motormachen) + "," + String.Format(Speed) + "," + String.Format(Pruef) & vbCr)
End If
Pruef = 0
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Motornummer = TextBox5.Text
Motormachen = 0
Speed = TextBox4.Text
Pruef = Motornummer + Motormachen
Pruef = Pruef + Speed
If SerialPort1.IsOpen Then
SerialPort1.WriteLine("M," + String.Format(Motornummer) + "," + String.Format(Motormachen) + "," + String.Format(Speed) + "," + String.Format(Pruef) & vbCr)
End If
Pruef = 0
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Motornummer = TextBox5.Text
Motormachen = 3
Speed = TextBox4.Text
Pruef = Motornummer + Motormachen
Pruef = Pruef + Speed
If SerialPort1.IsOpen Then
SerialPort1.WriteLine("M," + String.Format(Motornummer) + "," + String.Format(Motormachen) + "," + String.Format(Speed) + "," + String.Format(Pruef) & vbCr)
End If
Pruef = 0
End Sub
End Class
Mein Problem: Es will nicht funktionieren!! Doch ich weiß einfach nicht warum ?? Immer wenn ich was mit dieser dummen seriellen Schnittstelle machen will, funktioniert es nicht... Ich hoffe ihr könnt mir helfen, da sonst mein Motortreiber für den Mülleimer ist. Ohne diese Grundkommunikation kann ich nichts machen 
Der Einsteiger
Lesezeichen