Stm32f103 TIM1 Register, Verständnisfrage PWM

Gast #4656924
Lesenswert?

Hallo zusammen,

ich habe da mal eine Frage zum stm32f103. Und zwar habe ich mittels 
Interrupts eine 3 phasige Pwm in T1M1 erzeugt. Das hat alles geklappt. 
Ich konnte hierbei die Pulsweiten der einzelnen Ausgänge (TIM1-CCR) auch 
variieren. Nun musste ich aber die Ausgänge mittels dem CCER Register 
invertieren. Nun klappt das leider nicht mehr mit dem einstellen der 
Pulsweite. Blockiert das CCER Register irgendwo diese Funktion? Ich habe 
in der Manuel unter dem CCER Register nichts in der Art gefunden.
Vielen Dank schonmal für eure Antworten.

Viele Grüße
Gast #4657636
Lesenswert?

void Init(void){
     TIM1->ARR= 0x04B0;
     TIM1->CCMR1 = 0x7878;
     TIM1->CCMR2 = 0x7878;
     TIM1->CCER =  0x0FFF;

     TIM1->CCR1=0x4650;// Pulsweite einstellen
     TIM1->CCR2=0x4650;// Pulsweite einstellen
     TIM1->CCR3=0x4650;// Pulsweite einstellen

     TIM1->BDTR = TIM_BDTR_MOE|TT_WERT;//  break and dead-time register
     TIM1->CR1 = TIM_CR1_CEN|((uint32_t)0x0000);//Timer
}

void FU_PWM_Isr(void)
{

  static int aktiver_kanal = 0;
  static int wert = 18000;  // 0-36000

  switch(aktiver_kanal)
  {
    case 0:
    {
      TIM1->CCR1=wert;// Pulsweite einstellen
      TIM1->CCR2=0;// Pulsweite einstellen
      TIM1->CCR3=0;// Pulsweite einstellen
    }break;
    case 1:
    {
      TIM1->CCR1=0;// Pulsweite einstellen
      TIM1->CCR2=wert;// Pulsweite einstellen
      TIM1->CCR3=0;// Pulsweite einstellen
    }break;
    case 2:
    {
      TIM1->CCR1=0;// Pulsweite einstellen
      TIM1->CCR2=0;// Pulsweite einstellen
      TIM1->CCR3=wert;// Pulsweite einstellen
    }break;
  }


  aktiver_kanal++;
  if(aktiver_kanal >= 3)
    aktiver_kanal = 0;
}

Danke schonmal für deine Hilfe
Gast #4664577
Lesenswert?

Ja, der Wert passt!

Die Ursache des Problems liegt bei: static int wert = 18000;  // 0-36000
Hier darf der maximale Wert nur 1200 sein bei ARR= 0x04B0;

Es läuft jetzt wie geschmiert! ;-) Danke trotzdem!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren