Hi ! Ich bin auf der Suche nach den Settings für CONF_CANBT1 CONF_CANBT2 CONF_CANBT3 für einen AT90CAn128 mit FOSC == 15000 und einer Baudrate von 500 KBit. Ich bin zu blöd, um das auzurechnen. Hier die "originalen" Werte aus can_drv.h #if FOSC == 16000 //!< Fclkio = 16 MHz, Tclkio = 62.5 ns # if CAN_BAUDRATE == 500 //!< -- 500Kb/s, 8x Tscl, sampling at 75% # define CONF_CANBT1 0x06 // Tscl = 4x Tclkio = 250 ns # define CONF_CANBT2 0x04 // Tsync = 1x Tscl, Tprs = 3x Tscl, Tsjw = 1x Tscl # define CONF_CANBT3 0x13 // Tpsh1 = 2x Tscl, Tpsh2 = 2x Tscl, 3 sample points # elif CAN_BAUDRATE == CAN_AUTOBAUD // Treated later in the file # define CONF_CANBT1 0x00 // Unused # define CONF_CANBT2 0x00 // Unused # define CONF_CANBT3 0x00 // Unused # else # error This CAN_BAUDRATE value is not in "can_drv.h" file # endif #elif FOSC == 12000 //!< Fclkio = 12 MHz, Tclkio = 83.333 ns # if CAN_BAUDRATE == 500 //!< -- 500Kb/s, 12x Tscl, sampling at 75% # define CONF_CANBT1 0x02 // Tscl = 2x Tclkio = 166.666 ns # define CONF_CANBT2 0x08 // Tsync = 1x Tscl, Tprs = 5x Tscl, Tsjw = 1x Tscl # define CONF_CANBT3 0x25 // Tpsh1 = 3x Tscl, Tpsh2 = 3x Tscl, 3 sample points # elif CAN_BAUDRATE == CAN_AUTOBAUD // Treated later in the file # define CONF_CANBT1 0x00 // Unused # define CONF_CANBT2 0x00 // Unused # define CONF_CANBT3 0x00 // Unused # else # error This CAN_BAUDRATE value is not in "can_drv.h" file # endif
Aber das steht doch halbwegs gut erklärt im Datenblatt. Ansonsten könntest du was ganz dreckiges versuchen und zwischen den angegebenen Werten für 18MHz und 12MHz "interpolieren" - sprich die Mitte nehmen. Aber ohne Garantie! Besser Liter Kaffee und ausrechnen!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.