Gast
#5869096
Hi zusammen, ich beschäftige mich gerade mit Timern und möchte bestimmte Beispiele vom STM32 General-purpose timer cookbook mit meinem STM32 Nucleo-F446RE Board nachprogrammieren. Das Beispiel von Kapitel 3.2 mit TIM1 funktioniert wie erwartet: TIM1 startet und zählt bis Capture Compare Register 1 (CCR1) hoch und wechselt die Polarität am Ausgang (GPIOA_PIN_8) von LOW auf HIGH und zählt bis zum Wert des Auto-Reload Registers (ARR) und wechselt die Polarität wieder auf LOW zurück. Das Ganze funktioniert kontinuierlich, da TIM1 kein Slave von einem Master ist. Der PWM Mode 2 wird verwendet Jetzt möchte ich das Beispiel 6.2 ausprobieren bei dem folgendes Szenario gegeben ist (der Code mit dem Schreiben der Register ist in der PDF von STM enthalten: TIM1 wird für die Erzeugung des PWM Signals verwendet und ist ein Slave-Timer, der von TIM2 (Master) getriggert wird. TIM1 verwendet nun PWM Mode 1 und beim Start von TIM1 ist die Polarität des Ausgangs HIGH bis zum Erreichen des Wertes von CCR1 und wechselt zu LOW bis der Wert ARR erreicht ist. Das ganze wird 5 mal wiederholt und danach bleibt die Polarität auf LOW, bis TIM2 dann TIM1 wieder triggert und sich das ganze wiederholt. Ich habe den Code entsprechend kopiert und einige Werte geändert, die sich zwischen dem Board des Beispiels und meinem unterscheiden. Doch leider bekomme ich das Signal nicht so wie erwartet: das Signal ist genauso wie in 3.2, obwohl hier statt PWM Mode 2 nun PWM Mode 1 verwendet wird. Damit ich den Start von TIM2 (Master) sehen kann, habe ich noch einen zweiten Timer (TIM3) als Slave konfiguiert, der einen Interrupt erzeug und immer beim Start von TIM2 eine LED toggelt. Kann mir bitte jemand sagen, was ich falsch mache? Ich drehe mich gerade echt im Kreis bei der Suche nach der Lösung. Im Anhang ist die PDF von dem Timer Cookbook, der Code den ich geschrieben habe und ein Bild, was die erwartete Ausgabe und die momentane Ausgabe von TIM1 darstellt. Hier auch noch mal der Code, falls Bedenken bezüglich des Downloads der C-Datei bestehen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
