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
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
HD_Blast schrieb: > TIM1->ARR= 0x04B0; Passt der Wert? Wenn ich das mit dem ARR richtig verstehe wird dort doch allgemein der Reload-Wert eingestellt? Bei dir 0d1200. Wenn du aber am Anfang da mit 1800 rein gehst, kommst du doch nie an? Bin aber auch nur ein Trial'n'Error-Amateur :D
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!!
Nico W. schrieb: > Bei dir 0d1200. Wenn du aber am > Anfang da mit 1800 rein gehst, kommst du doch nie an? Hast natürlich vollkommen Recht! Nico W. schrieb: > Bin aber auch nur ein Trial'n'Error-Amateur Bist du nicht :D
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.