Forum: Mikrocontroller und Digitale Elektronik stm32f407 TIM3-Problem


von grundschüler (Gast)


Lesenswert?

ich habe diesen code:
1
//init:
2
  __HAL_RCC_TIM3_CLK_ENABLE();
3
//  TIM3->CR1|=(3<<8);//ckd
4
  TIM3->ARR=0xffff;
5
6
  TIM3->PSC =600 ;//
7
        //600 => 13847 ticks/sec
8
        //831 => 39147 ticks/sec
9
10
11
  TIM3->CR1|=1 ;//cen | ckd
12
  TIM3->CNT=0;
13
14
....
15
16
//jede sec
17
  lcd_goto(3,1);
18
  lcd_int(TIM3->CNT);
19
  lcd_write(":");
20
  TIM3->CNT=0;

Es sollein einfacher Timer zur Zeitmessung mit 10us Genauigkeit werden.

Irgendwie klappt das mit ckd und psc nicht. Was ist falsch?

von Darth Moan (Gast)


Lesenswert?

Moin,

grundschüler schrieb:
> Irgendwie klappt das mit ckd und psc nicht. Was ist falsch?

Was klappt denn nicht. Ich hatte mir mal ein 10us Timestamp generiert:
    __TIM5_CLK_ENABLE();
    /* TIM5 counts up in steps of 10us to provide a 32bit time stamp 
value */
    TIM5->PSC   = 839;
    TIM5->CR1   = TIM_CR1_CEN;
    TIM5->EGR   = TIM_EGR_UG;
Das reichte. Das UG schien notwendig zu sein:
Bits 15:0 PSC[15:0]: Prescaler value
The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 
1).
PSC contains the value to be loaded in the active prescaler register at 
each update event.

Liegt es vielleicht daran?

von Darth Moan (Gast)


Lesenswert?

Moin,

grundschüler schrieb:
> //jede sec
>   lcd_goto(3,1);
>   lcd_int(TIM3->CNT);
>   lcd_write(":");
>   TIM3->CNT=0;

mir fiel grad ein, TIM 3 ist ein 16bit counter im F407!
Bei 10us steps laeuft er nach 0,6s von selbst ueber.

Bei mir lief das Board mit 168MHz -> PSC 839 fuer 10us steps.
APB1 Divider 4 (Timer X2) -> 84MHz auf TIM5

Welchen Takt hast du?

von grundschüler (Gast)


Lesenswert?

168 Mhz - am Überlauf liegt es nicht. Das habe ich getestet. Meine 
Erwartungshaltung wäre halt dopelter psc ergibt halben Takt. Ich werde 
versuchshalber aber mal deinen tim5-code probieren. danke

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.