Moin,
hab hier drei uC (2x 18F458 + SAM3X8E) die mit 125kBaud über den CAN-Bus
kommunizieren sollen.
Mir fällt auf, daß - ich kann machen was ich will - die Bit-Zeit auf dem
Oszi bei den beiden PICs nicht 8.0 sondern 8.2us beträgt. Am Quarz
liegt's nicht, ich hab mehrere ausprobiert; auch bei anderen Taktraten
ist das Verhalten entsprechend. Ist das ein grundsätzliches Problem?
Ich hab die PICs mit
1 | CANInitialize (4, //SJW // 1
|
2 | 5, //BRP // 5
|
3 | 7, //PHSEG1 // 7
|
4 | 6, //PHSEG2 //6
|
5 | 2, //PROPSEG // 2
|
6 | CAN_CONFIG_SAMPLE_THRICE & // once
|
7 | CAN_CONFIG_PHSEG2_PRG_ON & //off
|
8 | CAN_CONFIG_LINE_FILTER_ON &
|
9 | CAN_CONFIG_MSG_TYPE_BIT); //STD_MSG
|
initialisiert. Nach der ersten 8-Byte Nachricht (SAM3X8E -> PIC) komme
ich auf 14 Fehler danach kommen keine mehr - der Zähler zählt brav bei
jeder Nachricht gegen 0. Gibt's dafür ne Erklärung? Oder sollte das
tatsächlich so ne Art intelligente Synchonisation sein?