Hallo
Ich habe ein Problem mit meinen Programm und mir sind die Ideen
ausgegangen wo der Fehler liegen könte.
Ich will mit einen Programm einen µC ansteuern. Dieser soll dan
Schaltbefehle ausführen und auch Rückmeldungen bringen. Das ganze ist
für ein Faller Car System, welches ich über ein Modellbahn Programm
steuern will. Das Datenprotocoll für die Serielle Schnitstelle habe ich
und das ist an und für sich auch nicht mein Problem.
Der Computer Sendet zum Anmelden an die "Zentrale" (dies soll mein µC
werden) einige Daten. Der erste Datensatz wird auch super empfangen und
ausgewertet (255,254,33,33,0). Nachdem mein µC die Antwort darauf
gesendet hat, kommt der nächste Datensatz (255,254,240,240). Jedoch
erhält der µC scheinbar nur (255,254,240), als nur 3 der 4 Byte`s.
Habe den Pc mehrmals seine Daten Senden lassen, doch es wird immer beim
zweiten Datenpaket nicht alles empfangen.
Ich habe auch mal die Antwort für das zweite Datenpaket automatisch mit
50 ms Pause senden lassen. Da wurde somit auch das "Zweite" Datenpaket
nicht Richtig empfangen. Da hatte ich jedoch den eindruck da die
mittleren 3 der 6 gesendeten Bytes nicht empfangen wurden.
Es werden halt beim zweiten Datenpaket immer nur 3 Bytes empfangen und
das macht mich stutzig.
Hier mal ein kleiner Auszug aus meinen Programm
Kann leider nur Basic, habe ich damals noch in der Schule zu Win 3.1
Zeiten gelernt.
Zaeler ist die Anzahl der Empfangenen Bytes
In "Empfang 1-10" werden die Bytes zur späteren Auswertung gespeichert
"A" sorgt dafür das alle Bytes Empfangen werden, da ich nicht weiß wie
viele Bytes gesendet werden.
1 | $regfile = "m8def.dat"
|
2 | $crystal = 7372800
|
3 | $baud = 57600
|
4 | Echo Off
|
5 |
|
6 | Do
|
7 | If Ischarwaiting() = 1 Then Gosub Dateneingang
|
8 |
|
9 | If A > 0 Then A = A + 1
|
10 | If A = 250 And Empfang1 = 255 Then
|
11 | A = 0
|
12 | Gosub Auswerten
|
13 | Elseif A > 250 Then
|
14 | A = 0
|
15 | Zaeler = 0
|
16 | End If
|
17 | Loop
|
18 |
|
19 | Auswerten:
|
20 | If Test = 2 Then
|
21 | Printbin Zaeler
|
22 | Printbin 13
|
23 | Printbin Empfang1
|
24 | Printbin Empfang2
|
25 | Printbin Empfang3
|
26 | Printbin Empfang4
|
27 | Printbin Empfang5
|
28 | Printbin Empfang6
|
29 | Printbin Empfang7
|
30 | Printbin Empfang8
|
31 | Printbin Empfang9
|
32 | Printbin Empfang10
|
33 | End If
|
34 | return
|
35 |
|
36 | Dateneingang:
|
37 | Zaeler = Zaeler + 1
|
38 | A = 1
|
39 | X = Inkey()
|
40 | If Zaeler = 1 Then Empfang1 = Asc(x)
|
41 | If Zaeler = 2 Then Empfang2 = Asc(x)
|
42 | If Zaeler = 3 Then Empfang3 = Asc(x)
|
43 | If Zaeler = 4 Then Empfang4 = Asc(x)
|
44 | If Zaeler = 5 Then Empfang5 = Asc(x)
|
45 | If Zaeler = 6 Then Empfang6 = Asc(x)
|
46 | If Zaeler = 7 Then Empfang7 = Asc(x)
|
47 | If Zaeler = 8 Then Empfang8 = Asc(x)
|
48 | If Zaeler = 9 Then Empfang9 = Asc(x)
|
49 | If Zaeler = 10 Then Empfang10 = Asc(x)
|
50 | Return
|
Wäre echt schön wenn jemand von euch, mir eine Lösung für mein Problem
sagen könnte.
PS das Programm habe ich mit Bascom geschrieben und mit den
myAVR_ProgTool mit Hilfe vom MySmartUSB light übertragen.
Gruß Thosten