Forum: Mikrocontroller und Digitale Elektronik STM32F4 Timer synchronisieren


von Sebastian T. (sebastian_tsch)


Lesenswert?

Hi,

Ich muss auf einem STM32F4 3 Timer und je 3 PWM Channels 
synchronisieren. Dazu habe TIM2 als Master gewählt und TIM1 sowie TIM4 
als Slave. TIM2 gibt mir die PWM signale richtig aus und TIM1 sowie TIM4 
sind richtig initialisiert von der PWM ausgabe her, doch nicht die 
synchronisation:

Zum synchronisieren habe ich folgendes gewählt:
1
//Set Master/Slave Modes
2
  TIM2->CR2 |= 0x0010;//Set TIM2 to Master Mode
3
  TIM1->SMCR |= (0x0010) | (0x0006); //(0x0010) -> TIM2 Master, (0x0006) -> Trigger activated
4
  TIM4->SMCR |= (0x0010) | (0x0006); 
5
6
  //Activate Timers
7
  TIM_Cmd(TIM2, ENABLE); //Timer 2 activates other timers, since master

Doch Timer1 sowie Timer4 werden nicht gestartet. Jemand eine Idee?

Datenblatt: 
http://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf 
(p.629 ff.)

Grüsse

von grundschüler (Gast)


Lesenswert?

der Master setzt ja nur das en-bit in cr1. Kann man im debugger sehr gut 
beobachten.

beim f103 funktioniert:
1
  //Master:sel Triggeroutput timx_cr2->msm TRG0
2
  #define timx_oc1ref_msm (0b100<<4)
3
  #define timx_smcr_msm (0b1<<7)
4
  TIM1->CR2|=timx_oc1ref_msm;
5
  TIM1->SMCR|=(timx_smcr_msm);
6
7
  //slave:trigger-mode, only start is synchronis.
8
  #define timx_smcr_sms (0b110<<0)//only start sets enable
9
  #define timx_smcr_ts (0b000<<4)//trigger sel trg0 to itr0 ????
10
  TIM2->SMCR|=(timx_smcr_ts);
11
  TIM2->SMCR|=(timx_smcr_sms);

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.