Hallo,
ich habe ein Verständisproblem zur Baudrate vom CAN beim dspic30f4011.
Ich habe ein 6MHz Quarz und möchte eine Baudrate von 250kHz haben.
1 | #define XTFREQ 6000000
|
2 | #define PLLMODE 8
|
3 | #define FCY STFREQ*PLLMODE/4 // =12.000.000
|
4 |
|
5 | #define BITRATE 250000
|
6 | #define NTQ 12
|
7 | #define BRP_VAL ((FCY/(2*NTQ*BITRATE))-1) // C1CFG1bits.BRP = 1
|
Dann habe ich die CAN-Bit-Time-Segmente wie folgt gesetzt
SyncSeg = 1TQ
PropSeg = 3TQ
PhaseSeg1 = 4TQ
PhaseSeg2 = 4TQ
Somit komme ich auf die 12TQ, wie ich sie definiert habe.
Was ich nicht ganz verstehe, woher weiss der controller jetzt, dass es
250kHz sein sollen? Doch nicht durch das define oder? Weil wenn ich die
Anzahl der TQ in den Segmenten ändere, funktioniert es nicht mehr.
PRP_VAL ergibt doch die Länge eines TQs oder? Was würde passieren, wenn
dann 0 herauskommen würde?
Johannes