Skip to content

Commit

Permalink
fixed LED pwm
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Klang committed Nov 18, 2021
1 parent 667b95c commit 7b93b6a
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 209 deletions.
54 changes: 24 additions & 30 deletions ACDC/ACDC.ioc
Original file line number Diff line number Diff line change
Expand Up @@ -144,21 +144,20 @@ Mcu.IP11=SPI3
Mcu.IP12=SYS
Mcu.IP13=TIM2
Mcu.IP14=TIM4
Mcu.IP15=TIM5
Mcu.IP16=TIM8
Mcu.IP17=UART5
Mcu.IP18=UART7
Mcu.IP19=USB_DEVICE
Mcu.IP15=TIM8
Mcu.IP16=UART5
Mcu.IP17=UART7
Mcu.IP18=USB_DEVICE
Mcu.IP19=USB_OTG_FS
Mcu.IP2=DEBUG
Mcu.IP20=USB_OTG_FS
Mcu.IP3=DMA
Mcu.IP4=FMC
Mcu.IP5=FREERTOS
Mcu.IP6=NVIC
Mcu.IP7=QUADSPI
Mcu.IP8=RCC
Mcu.IP9=SAI1
Mcu.IPNb=21
Mcu.IPNb=20
Mcu.Name=STM32H743IIKx
Mcu.Package=UFBGA176
Mcu.Pin0=PE3
Expand Down Expand Up @@ -303,10 +302,9 @@ NVIC.SavedPendsvIrqHandlerGenerated=true
NVIC.SavedSvcallIrqHandlerGenerated=true
NVIC.SavedSystickIrqHandlerGenerated=true
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true\:false\:true
NVIC.TIM4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false
PA0.Locked=true
PA0.Signal=S_TIM5_CH1
PA0.Signal=GPIO_Output
PA1.Signal=S_TIM2_CH2
PA11.Mode=Device_Only
PA11.Signal=USB_OTG_FS_DM
Expand Down Expand Up @@ -399,11 +397,7 @@ PC9.Stacked=true
PD0.Signal=FMC_D2_DA2
PD1.Signal=FMC_D3_DA3
PD10.Signal=FMC_D15_DA15
PD12.GPIOParameters=GPIO_PuPd
PD12.GPIO_PuPd=GPIO_PULLUP
PD12.Signal=S_TIM4_CH1
PD13.GPIOParameters=GPIO_PuPd
PD13.GPIO_PuPd=GPIO_PULLUP
PD13.Signal=S_TIM4_CH2
PD14.Signal=FMC_D0_DA0
PD15.Signal=FMC_D1_DA1
Expand Down Expand Up @@ -815,12 +809,10 @@ SH.S_TIM2_CH1.0=TIM2_CH1,PWM Generation1 CH1
SH.S_TIM2_CH1.ConfNb=1
SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2
SH.S_TIM2_CH2.ConfNb=1
SH.S_TIM4_CH1.0=TIM4_CH1,Encoder_Interface
SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1
SH.S_TIM4_CH1.ConfNb=1
SH.S_TIM4_CH2.0=TIM4_CH2,Encoder_Interface
SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2
SH.S_TIM4_CH2.ConfNb=1
SH.S_TIM5_CH1.0=TIM5_CH1,PWM Generation1 CH1
SH.S_TIM5_CH1.ConfNb=1
SH.S_TIM8_CH1.0=TIM8_CH1,PWM Generation1 CH1
SH.S_TIM8_CH1.ConfNb=1
SH.S_TIM8_CH2.0=TIM8_CH2,PWM Generation2 CH2
Expand All @@ -832,11 +824,10 @@ SH.SharedStack_PC12.0=SDMMC1_CK
SH.SharedStack_PC12.1=SPI3_MOSI,TX_Only_Simplex_Unidirect_Master
SH.SharedStack_PC12.ConfNb=2
SH.SharedStack_PC9.0=SDMMC1_D1
SH.SharedStack_PC9.1=GPIO_EXTI9+0
SH.SharedStack_PC9.2=TIM3_CH4
SH.SharedStack_PC9.3=TIM8_CH4
SH.SharedStack_PC9.4=GPIO_Output+0
SH.SharedStack_PC9.ConfNb=5
SH.SharedStack_PC9.1=TIM3_CH4
SH.SharedStack_PC9.2=TIM8_CH4
SH.SharedStack_PC9.3=GPIO_EXTI9
SH.SharedStack_PC9.ConfNb=4
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256
SPI2.CLKPhase=SPI_PHASE_2EDGE
SPI2.CLKPolarity=SPI_POLARITY_HIGH
Expand All @@ -857,16 +848,19 @@ SPI3.NSSPMode=SPI_NSS_PULSE_DISABLE
SPI3.VirtualType=VM_MASTER
TIM2.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM2.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM2.IPParameters=Channel-PWM Generation2 CH2,Channel-PWM Generation1 CH1
TIM4.EncoderMode=TIM_ENCODERMODE_TI12
TIM4.IC1Filter=4
TIM4.IC2Filter=4
TIM4.IPParameters=EncoderMode,IC1Filter,IC2Filter
TIM5.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM5.IPParameters=Channel-PWM Generation1 CH1
TIM2.IPParameters=Channel-PWM Generation2 CH2,Channel-PWM Generation1 CH1,Prescaler,Period
TIM2.Period=1023
TIM2.Prescaler=100
TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM4.IPParameters=Channel-PWM Generation2 CH2,Channel-PWM Generation1 CH1,Period,Prescaler
TIM4.Period=1023
TIM4.Prescaler=100
TIM8.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM8.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM8.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2
TIM8.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Period,Prescaler
TIM8.Period=1023
TIM8.Prescaler=100
USB_DEVICE.CLASS_NAME_FS=AUDIO
USB_DEVICE.IPParameters=VirtualMode-AUDIO_FS,VirtualModeFS,CLASS_NAME_FS,VID-AUDIO_FS,MANUFACTURER_STRING-AUDIO_FS,PID_AUDIO_FS,PRODUCT_STRING_AUDIO_FS
USB_DEVICE.MANUFACTURER_STRING-AUDIO_FS=Rebel Technology
Expand Down
1 change: 0 additions & 1 deletion ACDC/Core/Inc/stm32h7xx_it.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ void DMA1_Stream1_IRQHandler(void);
void DMA1_Stream2_IRQHandler(void);
void DMA1_Stream3_IRQHandler(void);
void ADC_IRQHandler(void);
void TIM4_IRQHandler(void);
void SPI3_IRQHandler(void);
void SAI1_IRQHandler(void);
void QUADSPI_IRQHandler(void);
Expand Down
6 changes: 3 additions & 3 deletions ACDC/Core/Src/ACDC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Pin led_out3(XIBECA_PIN23);
Pin led_out4(XIBECA_PIN24);

void setLed(uint8_t led, uint32_t rgb){
uint32_t pwm = 0xFFFFFFFFU - __USAT(rgb>>10, 10);
uint32_t pwm = 1023 - (__USAT(rgb>>2, 10)); // expects 12-bit parameter value
switch(led){
case 1:
if(rgb == RED_COLOUR){
Expand Down Expand Up @@ -126,7 +126,7 @@ void initLed(){
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); // out4
// HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_1); // clip1
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); // out1
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); // out2
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_2); // out2

led_in1.outputMode();
led_in2.outputMode();
Expand Down Expand Up @@ -161,6 +161,6 @@ void onSetup(){
void onLoop(void){
for(size_t i=0; i<4; ++i){
setLed(i+1, getParameterValue(PARAMETER_AA+i));
setLed(i+4, getParameterValue(PARAMETER_BA+i));
setLed(i+5, getParameterValue(PARAMETER_BA+i));
}
}
92 changes: 25 additions & 67 deletions ACDC/Core/Src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ DMA_HandleTypeDef hdma_spi3_tx;

TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim4;
TIM_HandleTypeDef htim5;
TIM_HandleTypeDef htim8;

UART_HandleTypeDef huart5;
Expand Down Expand Up @@ -88,7 +87,6 @@ static void MX_TIM2_Init(void);
static void MX_TIM4_Init(void);
static void MX_UART5_Init(void);
static void MX_UART7_Init(void);
static void MX_TIM5_Init(void);
static void MX_TIM8_Init(void);
void StartDefaultTask(void const * argument);

Expand Down Expand Up @@ -171,7 +169,6 @@ int main(void)
MX_TIM4_Init();
MX_UART5_Init();
MX_UART7_Init();
MX_TIM5_Init();
MX_TIM8_Init();
/* USER CODE BEGIN 2 */

Expand Down Expand Up @@ -655,9 +652,9 @@ static void MX_TIM2_Init(void)

/* USER CODE END TIM2_Init 1 */
htim2.Instance = TIM2;
htim2.Init.Prescaler = 0;
htim2.Init.Prescaler = 100;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 4294967295;
htim2.Init.Period = 1023;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
Expand Down Expand Up @@ -701,28 +698,19 @@ static void MX_TIM4_Init(void)

/* USER CODE END TIM4_Init 0 */

TIM_Encoder_InitTypeDef sConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};

/* USER CODE BEGIN TIM4_Init 1 */

/* USER CODE END TIM4_Init 1 */
htim4.Instance = TIM4;
htim4.Init.Prescaler = 0;
htim4.Init.Prescaler = 100;
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
htim4.Init.Period = 65535;
htim4.Init.Period = 1023;
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
sConfig.IC1Filter = 4;
sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
sConfig.IC2Filter = 4;
if (HAL_TIM_Encoder_Init(&htim4, &sConfig) != HAL_OK)
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
{
Error_Handler();
}
Expand All @@ -732,58 +720,22 @@ static void MX_TIM4_Init(void)
{
Error_Handler();
}
/* USER CODE BEGIN TIM4_Init 2 */

/* USER CODE END TIM4_Init 2 */

}

/**
* @brief TIM5 Initialization Function
* @param None
* @retval None
*/
static void MX_TIM5_Init(void)
{

/* USER CODE BEGIN TIM5_Init 0 */

/* USER CODE END TIM5_Init 0 */

TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};

/* USER CODE BEGIN TIM5_Init 1 */

/* USER CODE END TIM5_Init 1 */
htim5.Instance = TIM5;
htim5.Init.Prescaler = 0;
htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
htim5.Init.Period = 4294967295;
htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_PWM_Init(&htim5) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim5, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM5_Init 2 */
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM4_Init 2 */

/* USER CODE END TIM5_Init 2 */
HAL_TIM_MspPostInit(&htim5);
/* USER CODE END TIM4_Init 2 */
HAL_TIM_MspPostInit(&htim4);

}

Expand All @@ -807,9 +759,9 @@ static void MX_TIM8_Init(void)

/* USER CODE END TIM8_Init 1 */
htim8.Instance = TIM8;
htim8.Init.Prescaler = 0;
htim8.Init.Prescaler = 100;
htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
htim8.Init.Period = 65535;
htim8.Init.Period = 1023;
htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim8.Init.RepetitionCounter = 0;
htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
Expand Down Expand Up @@ -1059,7 +1011,7 @@ static void MX_GPIO_Init(void)
HAL_GPIO_WritePin(GPIOH, GPIO_PIN_4, GPIO_PIN_RESET);

/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3|GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_7, GPIO_PIN_RESET);

/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(ADC_SPI_NCS_GPIO_Port, ADC_SPI_NCS_Pin, GPIO_PIN_RESET);
Expand Down Expand Up @@ -1138,6 +1090,12 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

/*Configure GPIO pin : PC9 */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

/*Configure GPIO pin : PH4 */
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
Expand All @@ -1151,8 +1109,8 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);

/*Configure GPIO pins : PA3 PA7 */
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_7;
/*Configure GPIO pins : PA0 PA3 PA7 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
Expand Down
Loading

0 comments on commit 7b93b6a

Please sign in to comment.