Hallo zusammen!
Ich habe hier eine Platine auf der ein AT32UC3C steckt und eine andere
Platine mit einem XC161. Auf beiden µC ist eine Software vorhanden deren
Software aber so angepasst werden muss, dass die beiden µC sich über den
Can-Bus verständigen können. Hierbei ist das Problem, dass der XC161 auf
eine Baudrate von 250 kBd eingestellt ist und der AT32UC3C angeblich auf
1000 kBd eingestellt ist.
Jetzt habe ich mir im Internet schon einen Wolf nach einer Anleitung zur
Einstellung der Baudrate am Atmega gesucht, bin aber dabei nicht
wirklich fündig geworden. Das was ich bisher gefunden habe ist, dass ich
für eine Baudrate von 250 kBd PRS, PHS1, PHS2 und PRES so einstellen
muss, dass zuammen mit der Periodendauer des Oszilators (PGCLCK_CANIF)
die Formel
erfüllt sein muss.
Der mir vorliegende Programmcode für den Atmega beinhaltet derzeit
folgende Codezeilen:
1 | #define CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz
|
2 | #define CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_SJW 1
|
3 | #define CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PRES 0
|
4 | #define CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PRS 4
|
5 | #define CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PHS1 1
|
6 | #define CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PHS2 3
|
7 |
|
8 | #define BAUDRATE CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz
|
9 | #define BAUDRATE_SJW CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_SJW
|
10 | #define BAUDRATE_PRES CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PRES
|
11 | #define BAUDRATE_PRS CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PRS
|
12 | #define BAUDRATE_PHS1 CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PHS1
|
13 | #define BAUDRATE_PHS2 CAN_BAUDRATE_1MHZ_CANCLOCK_12MHz_PHS2
|
Setze ich die hier definierten Werte in die o.g. Formel ein, dann komme
ich jedoch auf eine Baudrate von 1,5 MBd und nicht 1 MBd.
Meine Frage wäre also, wie ich die Defines hier umstellen muss um eine
Baudrate von 250 kBd zu erreichen und vielleicht noch eine kurze
Erklärung was die einzelnen Werte bedeuten, da ich ja hier auch
verschiedene Werte für die jeweiligen Variablen einsetzen kann um die
Gleichung zu erfüllen.
Schon mal im Voraus vielen Dank für Eure Antworten!
Gruß
Andreas