@@ -876,68 +876,41 @@ and they are used for driving push-pull outputs such as MOSFETs.
876
876
877
877
878
878
879
- // Configure TIM1 for PWM output
880
- TIM1->CR1 |= TIM_CR1_ARPE; // Auto-reload preload enable
881
- TIM1->CR1 &= ~TIM_CR1_DIR; // Up counting mode
882
- TIM1->CCMR1 |= TIM_CCMR1_OC1PE | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; // PWM mode 1 on OC1
883
- TIM1->CCMR2 |= TIM_CCMR2_OC3PE | TIM_CCMR2_OC4PE | TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2; // PWM mode 1 on OC3 and OC4
884
- TIM1->CCER |= TIM_CCER_CC1E | TIM_CCER_CC3E | TIM_CCER_CC4E; // Enable output on OC1, OC3, and OC4
885
- TIM1->PSC = 0 ; // Set prescaler to 0
886
- TIM1->ARR = (168000000 / (38000 * 2 )) - 1 ; // Set auto-reload value for 38kHz frequency
887
- TIM1->CCR1 = 0 ; // Set duty cycle to 0%
888
- TIM1->CCR2 = 0 ; // Set duty cycle to 0%
889
- TIM1->CCR3 = 0 ; // Set duty cycle to 0%
890
- TIM1->CCR4 = 0 ; // Set duty cycle to 0%
891
-
892
- GPIOE->AFR [1 ] &= ~(GPIO_AFRH_AFRH8); // Clear alternate function for PE8
893
- GPIOE->AFR [1 ] |= (0x2 << GPIO_AFRH_AFRH8_Pos); // Set alternate function for PE8
894
- GPIOE->AFR [1 ] &= ~(GPIO_AFRH_AFRH9); // Clear alternate function for PE9
895
- GPIOE->AFR [1 ] |= (0x2 << GPIO_AFRH_AFRH9_Pos); // Set alternate function for PE9
896
- GPIOE->AFR [1 ] &= ~(GPIO_AFRH_AFRH10); // Clear alternate function for PE10
897
- GPIOE->AFR [1 ] |= (0x2 << GPIO_AFRH_AFRH10_Pos); // Set alternate function for PE10
898
- GPIOE->AFR [1 ] &= ~(GPIO_AFRH_AFRH11); // Clear alternate function for PE11
899
- GPIOE->AFR [1 ] |= (0x2 << GPIO_AFRH_AFRH11_Pos); // Set alternate function for PE11
900
- GPIOE->AFR [1 ] &= ~(GPIO_AFRH_AFRH12); // Clear alternate function for PE12
901
- GPIOE->AFR [1 ] |= (0x2 << GPIO_AFRH_AFRH12_Pos); // Set alternate function for PE12
902
- GPIOE->AFR [1 ] &= ~(GPIO_AFRH_AFRH13); // Clear alternate function for PE13
903
- GPIOE->AFR [1 ] |= (0x2 << GPIO_AFRH_AFRH13_Pos); // Set alternate function for PE13
904
- TIM1->BDTR |= TIM_BDTR_MOE; // Main output enable
905
- // Configure CH2 and CH2N on TIM8
906
- TIM8->CR1 |= TIM_CR1_ARPE; // Auto-reload preload enable
907
- TIM8->CR1 &= ~TIM_CR1_DIR; // Up counting mode
908
- TIM8->CR1 &= ~TIM_CR1_CMS; // Set counter mode to center-aligned
909
- TIM8->CR1 |= TIM_CR1_CMS_0 | TIM_CR1_CMS_1; // Set counter mode to center-aligned 3
910
- TIM8->CCMR1 |= TIM_CCMR1_OC2PE | TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2; // PWM mode 1 on OC2
911
- TIM8->CCER |= TIM_CCER_CC2E; // Enable output on OC2
912
- TIM8->PSC = 0 ; // Set prescaler to 0
913
- TIM8->ARR = (168000000 / (38000 * 2 )) - 1 ; // Set auto-reload value for 38kHz frequency
914
- TIM8->CCR1 = 0 ; // Set duty cycle to 0%
915
- TIM8->CCR2 = 0 ; // Set duty cycle to 0%
916
- TIM8->CCR3 = 0 ; // Set duty cycle to 0%
917
- TIM8->CCR4 = 0 ; // Set duty cycle to 0%
918
- TIM8->BDTR |= TIM_BDTR_MOE; // Main output enable
919
-
920
- GPIOA->AFR [1 ] &= ~(GPIO_AFRH_AFRH2); // Clear alternate function for PA14
921
- GPIOA->AFR [1 ] |= (0x8 << GPIO_AFRH_AFRH2_Pos); // Set alternate function for PA14
922
- GPIOB->AFR [0 ] &= ~(GPIO_AFRL_AFRL0); // Clear alternate function for PB0
923
- GPIOB->AFR [0 ] |= (0x8 << GPIO_AFRL_AFRL0_Pos); // Set alternate function for PB0
924
- TIM8->BDTR |= TIM_BDTR_MOE; // Main output enable
925
-
926
- // Start TIM1 and TIM8 PWM outputs
927
- TIM1->EGR |= TIM_EGR_UG; // Generate update event to load new settings
928
- TIM8->EGR |= TIM_EGR_UG; // Generate update event to load new settings
929
- TIM1->CR1 |= TIM_CR1_CEN; // Enable TIM1 counter
930
- TIM8->CR1 |= TIM_CR1_CEN; // Enable TIM8 counter
879
+
931
880
932
881
// Setting ALL pins to LOW
933
- HAL_GPIO_WritePin (GPIOE, GPIO_PIN_8, GPIO_PIN_RESET);
934
- HAL_GPIO_WritePin (GPIOE, GPIO_PIN_9, GPIO_PIN_RESET);
935
- HAL_GPIO_WritePin (GPIOE, GPIO_PIN_10, GPIO_PIN_RESET);
936
- HAL_GPIO_WritePin (GPIOE, GPIO_PIN_11, GPIO_PIN_RESET);
937
- HAL_GPIO_WritePin (GPIOE, GPIO_PIN_12, GPIO_PIN_RESET);
938
- HAL_GPIO_WritePin (GPIOE, GPIO_PIN_13, GPIO_PIN_RESET);
939
- HAL_GPIO_WritePin (GPIOA, GPIO_PIN_14, GPIO_PIN_RESET);
940
- HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
882
+ if (HAL_GPIO_WritePin (GPIOE, GPIO_PIN_8, GPIO_PIN_RESET)!= HAL_OK)
883
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
884
+ }else {Serial.println (" TIM1_CH1 READY - LOW OK" );}
885
+
886
+ if (HAL_GPIO_WritePin (GPIOE, GPIO_PIN_9, GPIO_PIN_RESET)!= HAL_OK)
887
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
888
+ }else {Serial.println (" TIM1_CH1N READY - LOW OK" );}
889
+
890
+ if (HAL_GPIO_WritePin (GPIOE, GPIO_PIN_10, GPIO_PIN_RESET)!= HAL_OK)
891
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
892
+ }else {Serial.println (" TIM1_CH2 READY - LOW OK" );}
893
+
894
+ if (HAL_GPIO_WritePin (GPIOE, GPIO_PIN_11, GPIO_PIN_RESET)!= HAL_OK)
895
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
896
+ }else {Serial.println (" TIM1_CH2N READY - LOW OK" );}
897
+
898
+ if (HAL_GPIO_WritePin (GPIOE, GPIO_PIN_12, GPIO_PIN_RESET)!= HAL_OK)
899
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
900
+ }else {Serial.println (" TIM1_CH3 READY - LOW OK" );}
901
+
902
+ if (HAL_GPIO_WritePin (GPIOE, GPIO_PIN_13, GPIO_PIN_RESET)!= HAL_OK)
903
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
904
+ }else {Serial.println (" TIM1_CH3N READY - LOW OK" );}
905
+
906
+ if (HAL_GPIO_WritePin (GPIOA, GPIO_PIN_14, GPIO_PIN_RESET)!= HAL_OK)
907
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
908
+ }else {Serial.println (" TIM8_CH2 READY - LOW OK" );}
909
+
910
+
911
+ if (HAL_GPIO_WritePin (GPIOB, GPIO_PIN_0, GPIO_PIN_RESET)!= HAL_OK)
912
+ {return (STM32DriverParams*)SIMPLEFOC_DRIVER_INIT_FAILED;
913
+ }else {Serial.println (" TIM8_CH2N READY - LOW OK" );}
941
914
942
915
943
916
return NULL ;
@@ -961,11 +934,6 @@ the code next to each other to ensure that the timers are properly initialized a
961
934
962
935
963
936
964
-
965
-
966
-
967
-
968
-
969
937
// function setting the pwm duty cycle to the hardware
970
938
// - DC motor - 1PWM setting
971
939
// - hardware speciffic
@@ -1010,12 +978,7 @@ void _writeDutyCycle4PWM(float dc_1a, float dc_1b, float dc_2a, float dc_2b, vo
1010
978
1011
979
1012
980
1013
-
1014
-
1015
-
1016
-
1017
-
1018
- int period;
981
+ int period = 4359 ;
1019
982
1020
983
1021
984
void _writeDutyCycle8PWM (float duty_cycle1_h1, float duty_cycle1_h2, float duty_cycle2_h1, float duty_cycle2_h2,
0 commit comments