Hallo,
ich habe ein seltsames Problem.
Hier ist der Codeschnipsel:
1 | X= &HB0
|
2 |
|
3 | Senden3 &HA0 , &H09 , &H00
|
4 |
|
5 | Abfrage:
|
6 |
|
7 | Do
|
8 | Waitms 1
|
9 | Loop
|
10 |
|
11 | Int_mcp:
|
12 | Gosub Lesen
|
13 | Return
|
14 |
|
15 | Lesen:
|
16 | Disable Interrupts
|
17 |
|
18 |
|
19 | Mcp2515_read_register Rxb0d0
|
20 | Wert1 = Canin
|
21 | Mcp2515_read_register Rxb0d1
|
22 | Wert2 = Canin
|
23 | Mcp2515_read_register Rxb0d2
|
24 | Wert3 = Canin
|
25 |
|
26 |
|
27 | If Wert1 = &H10 And Wert2 = &H00 And Wert3 = &H01 Then
|
28 | Gosub Bestaetigen
|
29 | End If
|
30 | Enable Interrupts
|
31 | Goto Abfrage
|
32 |
|
33 | Bestaetigen:
|
34 | If X = &HBF Then
|
35 | X = &HB0
|
36 | End If
|
37 | X = X + 1
|
38 | Senden1 X
|
39 | Return
|
und zwar soll da folgendes passieren:
erst mal werden 3 Bytes "A0 09 00" gesendet
(Senden1 bzw.3 ist ein Subprogram, das sauber funktioniert. 1 bzw. 3
nach dem "Senden" ist die Datenlänge)
wenn ein Interrupt auftritt sollen die Daten ausgelesen werden.
Dann werden die verglichen. Wenn alles passt, geht das Programm nach
"Bestätigen"
Das funktioniert aber nicht ganz.
Siehe Screenshot 1
Wenn ich aber
1 | Senden3 &HA0 , &H09 , &H00
|
2 | gosub Bestaetigung
|
3 | Abfrage:
|
schreibe dann kommt das Richtige raus.
Das heisst, ich empfange zuerst
A0 09 00 dann
B1
wie es auch sein soll.
Verstehe nicht, wieso das mit dem ersten Code nicht klappt.
Kann das ein Bug von Bascom sein?
Danke
Gruss Alex S.