MCP2515 Mitten im Bertieb Filter einstellen

Gast #2387934
Lesenswert?

Hallo.
Ist mein Vorhaben möglich?

Der MCP2515 wird anfangs Initialisiert und in Listen-Only Modus 
gebracht.
Dann möchte ich mitten im Programm den Filter für Empfang anders setzen.

Dafür versetze ich dem MCP in den Configirations Modus indem ich den 
CANCTRL Register mit &B100000000 beschreibe.
Danach serze ich die Bits für den Filter0 um
Dann geht er wieder in Listen Only Modus zurück und das Programm wird 
fortgesetzt.
Leider klappt das noch nicht so, wie ich will.

Es sind mehrere Fehlerquellen möglich, wollte Parallel zur Fehlersuche 
fragen, ob das überhaupt so funktioniert.

Hier ist der Codeschnipsel, muss man aber nicht verstehen ;) :

1
Werte_erfassen:
2

3
Enable Int1
4
O = 0
5

6
Do
7

8
If O = 1 Then  //Wenn Interrupt ausgelöst wurde ist O = 1
9
Disable Int1   // Deaktiviere hier vorsichtshalber den Interrupt
10

11
If V1 = 0 And V2 = 0 And V3 = 0 Then
12
Höhe = byte4
13
Länge = byte5
14
V1 = 1
15
Mcp2515_bitmodify2 Canctrl , &B11100000 , &B10000000
16
Mcp2515_write_register2 Rxf0sidh , &B11100110               
17
Mcp2515_write_register2 Rxf0sidl , &B01000000              
18
Mcp2515_bitmodify2 Canctrl , &B11100000 , &B01100000
19
Mcp2515_read_register2      //Buffer auslesen um Interrupt zurück zu setzen
20
Goto Werte_erfassen
21
End If
22

23

24
If V1 = 1 And V2 = 0 And V3 = 0 Then
25
Feuchte = byte3
26
V2 = 1
27
Mcp2515_bitmodify2 Canctrl , &B11100000 , &B10000000
28
Mcp2515_write_register2 Rxf0sidh , &B00110101               
29
Mcp2515_write_register2 Rxf0sidl , &B10100000               
30
Mcp2515_bitmodify2 Canctrl , &B11100000 , &B01100000
31
Mcp2515_read_register2
32
Goto Werte_erfassen
33
End If
34

35

36
If V1 = 1 And V2 = 1 And V3 = 0 Then
37
Temperatur = byte4
38
V3 = 1
39
Mcp2515_bitmodify2 Canctrl , &B11100000 , &B10000000
40
Mcp2515_write_register2 Rxf0sidh , &B10011000               
41
Mcp2515_write_register2 Rxf0sidl , &B00000000               
42
Mcp2515_bitmodify2 Canctrl , &B11100000 , &B01100000
43
Mcp2515_read_register2
44
Goto Werte_erfassen
45
End If
46

47
O = 0
48
End If
49

50

51

52
If V1 = 1 And V2 = 1 And V3 = 1 Then
53
Gosub Rechnen_ausgeben
54
V1 = 0
55
V2 = 0
56
V3 = 0
57
End If
58

59
Enable Int1
60

61
Loop
62

63
End



Danke
Gruss Alex S.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren