Forum: Mikrocontroller und Digitale Elektronik MCP2515 Mitten im Bertieb Filter einstellen


von Alex A. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.