Forum: Mikrocontroller und Digitale Elektronik STM32F030 TIM1 soll ADC1 triggern (kein HAL)


von Steffen (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

obwohl es im Forum schon einige Beiträge zu diesem Thema gibt, komme ich 
bei meinem Problem nicht wirklich weiter.. Hier eine kurze 
Zusammenfassung was ich genau machen möchte:

Ich benutze einen STM32F030-Controller um einen bürstenlosen 
Elektromotor anzusteuern. Die Signalerzeugung für die 
zwischengeschaltete Endstufe übernimmt der TIM1. In der Mitte der 
PWM-Periode soll der AD-Wandler mehrere Kanäle wandeln. Die Triggerung 
erfolgt über den vierten noch freien Kanal (CC4) des TIM1. Hier wird ein 
Compare-Event in der Mitte der Periode ausgelöst. Über den internen 
Trigger soll dann der ADC mit der Wandlung starten. Dafür wurde als 
Trigger-Quelle beim AD-Wandler der Trigger "TIM1_CC4" ausgewählt 
(ADC->CFGR1, EXTSEL = 0x01 (= TRG1:TIM1_CC4) und EXTEN = 0x01 (= 
Triggerevent bei steigener Flanke)).
Leider startet der AD-Wandler keine Wandlung. Das Compare-Event 
funktioniert allerdings einwandfrei. Über einen Interrupt habe ich das 
mal getestet. Im Manual und in diversen Internetforen wird darauf 
hingewiesen, dass das Bit ADSTART im Register ADC-CR von Hand gesetzt 
werden muss, da sonst bei einem Trigger-Event keine Wandlung startet. 
Auch dies habe ich berücksichtigt, jedoch ohne Erfolg. Weiterhin wird in 
vielen Beiträgen, auch hier auf mikrocontroller.net, berichtet, dass die 
Initialisierungsreihenfolge wichtig ist. Da ich aus Überzeugung keine 
HAL-Library verwende habe ich mir die Reihenfolge bei der Verwendung von 
HALs genau angesehen, jedoch keinen Unterschied zu meinen Code gefunden. 
Auch die von ST bereitgestellten Code-Beispiele haben mir hier nicht 
wirklich weitergeholfen.
Ich wäre wirklich dankbar, wenn mal jemand über meinen Code schauen 
würde und mir da weiterhelfen kann. Ich hänge da jetzt nämlich echt 
schone ne Weile...

Die relevanten Teile aus meinem Code habe ich als PDF angehängt.

Viele Grüße, Steffen

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.