Forum: Mikrocontroller und Digitale Elektronik 3 Phasen PWM - Code Probleme(stm32f103, Keil uvision)


von HD_Blast (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Freunde,

ich sitze seit einiger Zeit an dem Programmcode zur Erzeugung einer 
3-Phasen PWM mittels des STM32F103 Mikrocontroller. Die Bedingung ist, 
dass die 3 Kanäle versetzt eingeschaltet werden. Allerdings komme ich ab 
diesem Punkt nicht weiter.

Es ist zwar so, dass jeweils nur ein Kanal aktiv ist, jedoch pulsiert 
das Signal eines Kanals. Ich brauche eure Hilfe beim Programmcode, da 
ich nicht so der Meisterprogrammierer bin ;-)

Im Anhang habe ich ein Bild der Schleife des Programmcodes abgelegt. 
Zusätzlich noch zwei Oszilloskop Bilder. Diese zeigen einmal alle drei 
Kanäle gleichzeitig und einmal mit kleinerer Zeitbasis den einzelnen 
Kanal 1 und die zugehörige gewünschte Frequenz und Periodendauer.

Ich arbeite an diesem Thema für meine Studienarbeit und bin langsam am 
Ende ich brauche eure Hilfe!

Danke im Vorraus für eure Antworten


Mfg

von Nils P. (ert)


Lesenswert?

Was willst du den erreichen? Der µC macht doch genau das was du 
programmiert hast...

Unter Dreiphasen PWM versteh ich etwas anderes.

Wenn du aber das wirklich so haben willst wie beschrieben, dann musst du 
den Wechsel im Tim-Interrupt vollziehen. (habe ich das jetzt wirklich 
geschrieben :rolleye: :-))

Mal dir ein inkrementierendes Timersignal auf und schreib was du wann 
machen willst auf die Zeitachse.

G Ert

von HD_Blast (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Nils,

vielen Dank für deine schnelle Antwort. Ja über den Timer habe ich es 
schon probiert, allerdings nicht hinbekommen. Ich weiß nicht genau wie 
und wann ich einen Interrupt erzeugen / aufrufen kann. Dafür fehlt mir 
das Verständnis und die nötige Syntax.

Ich habe mal ein Bild des Counters gemalt um es mir vor Augen zu führen 
wie der Controller zählt und arbeitet. Es hapert an der Umsetzung in die 
Syntax. Die PWM funktioniert ja auch richtig allerdings soll jeder Kanal 
nur einmal eingeschaltet werden dann, ein Interrupt oder so ähnlich (?) 
;-)

MFG

von Nils P. (ert)


Lesenswert?

Genau für so etwas gibt es Datenblätter :-)

Schau mal hier
http://www.diller-technologies.de/stm32.html#timer_pwm
und da
http://www.diller-technologies.de/stm32.html#interrupts_timer
ist sogar ein Stm32f1

Du musst den Overflow-Int aktivieren und dann die entsprechenden Kanäle 
an bzw aus schalten.

wenn der mc sowieso nichts anderes machen soll (bzw nur einmal) dann 
kannst du es auch einfach selbst programmieren und nur die Pins an und 
ausmachen ohne timer, stichwort Software-pwm

von HD_Blast (Gast)


Lesenswert?

Auf meiner Suche nach Lösungsansätzen bin ich bereits auf eine Vielzahl 
solcher programmbeispiele gestoßen. Bei dieser Umsetzung funktioniert es 
allerdings nicht. In wie weit ist denn mein vorhandener Code richtig, 
bzw wie müsste ich ihn in den interrupt einfügen.

Mfg

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.