1 /* (CC-BY-NC-SA) ROBIN KRENS - ROBIN @ ROBINKRENS.NL
4 * 2019/8/4 - ROBIN KRENS
17 #include <sys/robsys.h>
19 #include <lib/regfunc.h>
20 #include <lib/string.h>
21 #include <lib/tinyprintf.h>
23 #include <drivers/tsensor.h>
25 /* void * update_handler() {
31 void tsensor_init( ) {
35 rsetbit(RCC_APB2ENR, 3); // GPIOB enable
36 rsetbit(RCC_APB1ENR, 2); // TIM4 enable
37 rsetbitsfrom(TIM4_CR1, 5, 0x00); // edge-aligned mode
38 rclrbit(TIM4_CR1, 4); // upcounter (clrbit!)
40 rwrite(TIM4_PSC, 0xFFFF); // 1 MHz: 23
41 rwrite(TIM4_ARR, 0xAB9); // preload register
43 rwrite(GPIOB_CRL, 0x4A444444); // PB6 for Channel 1 TIM4 alternate
45 rwrite(TIM4_CCR1, 0x55C); // half of ARR
46 rwrite(TIM4_RCR, 0x0F); // repeat
47 rsetbit(TIM4_EGR, 0); // update generation
49 rsetbitsfrom(TIM4_CCMR1, 4, 0x7); // PWM mode 1
51 //rsetbit(TIM4_CCMR1, 3); // preload enable
52 //rsetbit(TIM4_CR1, 7); // buffered
54 //rsetbit(TIM4_CR1, 3); // one pulse mode
56 rsetbit(TIM4_CCER, 0); // enable output channel 1
57 // rsetbit(TIM4_BDTR, 15); // main output
61 //ivt_set_gate(41, update_handler, 0);
63 //rsetbit(TIM4_DIER, 0);
64 //rsetbit(NVIC_ISER0, 25); // interupt 41 - 32