Forum: Mikrocontroller und Digitale Elektronik STM32F405 Timer captured nicht


von Rangi J. (rangi)


Lesenswert?

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?

von Rangi J. (rangi)


Lesenswert?

vergessen, das Signal ist 5V mit 1k Vorwiderstand.
Eingänge sind ja 5V tolerant. Damit darf es aber nicht zusammenhängen, 
oder?

von WChris (Gast)


Lesenswert?

Hi,

meiner Meinung nach ist der Timer i.O.

Du hast den Input-Pin falsch konfiguriert. Er ist als Input gesetzt 
womit nur das ISR bedient wird.
Statt dessen muß Du ihn als AF-Pin konfigurieren:
1
/* Clock für PORTB ist schon aktiv */
2
 GPIOB->AFRH |= (2<<4);  /* P9 Alternative Function 2 -> TIM4CH4 */
3
 GPIOB->MODER |= (2<<18); /* AF-Function */
4
/*Push-Pull aktiv*/

Schau Dir vorsichtshalber nochmal Figure 25 und Table 35 in RM0090 an.

Gruß
   Chris

von WChris (Gast)


Lesenswert?

Ups - muß natürlich IDR und nicht ISR heißen, sorry

von Rangi J. (rangi)


Lesenswert?

@WChris
danke, das wars, habs nicht gesehen. Es muss wohl Freitag gewesen 
sein...

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
Noch kein Account? Hier anmelden.