Hallo, ich hab den SJA1000 so wie auf dem Schaltplan zu sehen an den Atmega8 angeschlossen. Ich konnte den Controller erfolgreich initialisieren. Sprich ich hab die Register, die ich geschrieben hab am Ende ausgelesen und die Werte verglichen. Außerdem ist auf dem ersten Logic Analysator auschnitt gut zu sehen, dass der Controller nach dem Reset die Clock am Clock Pin auschaltet. So wie ich es wollte. Nun mein Problem sobald ich eine Can Nachricht senden möchte kommt nur Mist auf dem Bus an. Ich hab die Nachrticht mal auf dem 3. Bild rangezoomt. Es ist einfach keine richtig CAN Nachricht. Ich bin mittlerweile total am verzweifeln und weiß einfach nicht wo mein Fehler liegt. Ich bin über jede Hilfe dankbar. Gruß Christian
Einen CAN Empfänger hast Du aber schon dran ? Um zu schauen ob CAN tut braucht es immer auch einen Empfänger der die CAN Nachricht quittiert (ACK Bit).
Gast
#2403924
Ohne den Source wird Dir keiner helfen können.
Gast
#2403930
Ausserdem einen Transceiver-Baustein, damit der SJA auch seine eigene Botschaft mitlesen kann. Hardware unvollständig, Software nicht vorhanden -> Hilfe unmöglich.
Danke für die schnellen antworten. Als Source hab ich die CAN Lib verwendet und auf SJA1000 gestellt. Hab da jetzt auch schon alles möglich versucht zu ändern. Brauchte alles kein Erfolg. Ich poste die Ausschnitt gleich mal. Als CAN Tranceiver nutze ich den MCP2551. Der SJA1000 bekommt seine nachricht auch über den RX Pin zurück. Das is auf dem 3. Bild gut zu sehen. Channel 2 ist TX und Channel 4 is RX. Müsste ich nicht trotzdem eine vernünftige Nachricht sehen, auch wen kein Empfänger dran ist. Dann müsste doch nur das ACK Bit nicht gesetzt werden? Der Rest müsste ja trotzdem stimmen?
Entschuldigung ich hab den MCP auf dem SChaltplan total vergessen. Also hier der Code. Initialisierung:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
Nachricht senden:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
Nein ohne irgend ein Empfänger sendet der CAN-Chip nicht die ganze Message! Das ACK ist obligatorisch. Auch wenn man einen zweiten SJA dran hätte und der im ListenOnly Mode betrieben wird, klappt das nicht.
Gast
#2404003
Markus Müller schrieb: > Nein ohne irgend ein Empfänger sendet der CAN-Chip nicht die ganze > Message! > Das ACK ist obligatorisch. > > Auch wenn man einen zweiten SJA dran hätte und der im ListenOnly Mode > betrieben wird, klappt das nicht. Das stimmt so nicht. Der SJA wird schon mehrfach versuchen, die message zu senden. Da kein ack kommt, wird er irgendwann das Senden einstellen.
Gast
#2404017
wobei ich meine, dass der SJA ohne Gegenstück den CAN-Bus "vollballert", er hört meines Wissens nach auch nicht auf mit senden auf sondern wiederholt so lange bis ein ACK-Bit gesetzt wird! das kann man sehr schön am Oszi sehen!
Bei mir sendet der SJA1000 die komische Nachircht nur einmal, danach kommt nix mehr. Ich hab als Gegenstück jetzt einen CAN Analsyer dran gehangen. Was allerdings keine Besserung brauchte. Außer das dieser nach der Nachricht vom SJA1000 Error Frame meldet.



