Ich versuche gerade den TIM4CH4 an STM32F405 zum Capture zu bringen,
aber es passiert nichts. Was habe ich denn vergessen?
1 | /*pseudocode*/
|
2 |
|
3 | /* Clock für PORTB ist schon aktiv */
|
4 | GPIOB->AFRH |= (2<<4); /* P9 Alternative Function 2 -> TIM4CH4 */
|
5 | GPIOB->MODER &= ~(3<<18); /*Input*/
|
6 | /*kein Pullup aktiv*/
|
7 |
|
8 | APB1ENR |= STM32_RCC_APB1ENR_TIM4EN; /*clock für TIM4 anschalten*/
|
9 | TIM4->CCMR2 = (1<<8); /* CC4 channel is configured as input, IC4 is mapped on TI4 */
|
10 | TIM4->CCER = (1<<13) | (1<<12); /* falling edge + enable */
|
11 | TIM4->PSC = 52; /*prescaler*/
|
12 | TIM4->CNT = 0; /* counter auf 0 */
|
13 | TIM4->CR1 = 1; /* start*/
|
Was ich im Debugger sehe:
- Der Timer läuft, TIM4->CNT ändert sich
- Ich kann manuell ein Capture auslösen wenn ich in das TIM4->EGR
register schreibe. Dann hat das TIM4->CCR4 Register den Wert des Timers
übernommen.
- Wenn ich High- oder Low-Pegel an PB9 anlege wird der Wert auch im
PORTB->IDR angezeigt, aber ein Capture erfolgt nicht.
Ich habe auch schon steigende Flanke und beide Flanken probiert. Egal
was ich an dem Port-Pin mache, es wird nicht gecaptured.
Was fehlt denn nur damit es geht? oder ist es vllt ein
Reihenfolgeproblem?