X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/a9296605ae899d82c9e8f682eafe63d999c4a57b..6728e464dbd9929725b8394ca423690873677d9c:/embedded/app/usbcan/lpc17xx_can.c diff --git a/embedded/app/usbcan/lpc17xx_can.c b/embedded/app/usbcan/lpc17xx_can.c index 8b3a773..fd09804 100644 --- a/embedded/app/usbcan/lpc17xx_can.c +++ b/embedded/app/usbcan/lpc17xx_can.c @@ -406,6 +406,29 @@ void CAN_send(struct canchip_t *chip, canmsg_t* msg){ } +void CAN_set_bittiming(struct canchip_t *chip, uint32_t brp, uint32_t sjw, uint32_t tseg1, uint32_t tseg2){ + + uint8_t SAM = 0; // 0 = the bus is sampled once + + brp--; + sjw--; + tseg1--; + tseg2--; + + can_disable_irq(chip->chip_irq); + // enter reset mode + can_write_reg(chip, 1, CAN_MOD_o); + + + can_write_reg(chip, ((SAM<<23)|(tseg2<<20)|(tseg1<<16)|(sjw<<14)|(brp<<0)), CAN_BTR_o); + + + // return to normal operating + can_write_reg(chip, 0, CAN_MOD_o); + + can_enable_irq(chip->chip_irq); +} + void CAN_setBusTiming(struct canchip_t *chip){ uint32_t PCLK_CAN;