Hallo,
ich habe bei oben genanntem Controller folgendes Problem:
Ich verwende ADC1 um analoge Werte zu Samplen und diese per DMA in den
Speicher zu schreiben. Um eine konstante Abtastrate zu erreichen,
aktiviere ich die ADC-Conversion durch einen Timer. Wenn ich hierzu den
TIM8 hernehme (das Signal heißt dann ADC_EXTERNALTRIGCONV_T8_TRGO),
funktioniert alles super!
Leider benötige ich TIM8 für eine andere Funktion, und Timer 1,2,3,4
sind auch schon belegt. Bleibt noch TIM5 & TIM6, diese sind laut
Connection Matrix auch dafür ausgelegt.
Doch egal welchen der beiden Timern ich verwende, der ADC springt nicht
an, mit TIM8 jedoch schon.
Dabei konfiguriere ich alle Timer (5, 6 oder 8) identisch und weise
ihnen jeweils durch
1 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
|
2 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
3 |
|
4 | if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK)
|
5 | {
|
6 | Error_Handler();
|
7 | }
|
das Update-Event als Trigger Output zu. Im Debug-Modus sehe ich auch,
dass alle 3 Timer laufen, da das CNT Register sich ändert.
Die im ADC Setup verwendeten Trigger lauten:
1 | hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T5_TRGO;
|
oder
1 | hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T6_TRGO;
|
oder
1 | hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T8_TRGO;
|
Was habe ich übersehen?