Hello, i have to programm timmers for pwm with registres on arduino giga R1.
It was easy for me on an arduino due but I don't succeed even to programm only one timmer pwm with registres on the arduino giga r1 ![]()
Is ther something I'd miss for exemple with main clock ?
Is there's an ino setup with timmer registers program wich could help me to begin with a good base?
Thanks in advance i'm not a pro for programming at all ![]()
void setup() {
RCC->AHB4ENR |= RCC_AHB4ENR_GPIOAEN; // Enable GPIOA peripheral clock source
RCC->APB1LENR |= RCC_APB1LENR_TIM3EN; // Enable TIM3 peripheral clock source
GPIOA->AFR[0] = (GPIOA->AFR[0] & ~(0x15UL << 28)) | (0x2UL << 28);// AF2 sur port PA7 donc D5, page 582
//GPIOA->MODER = ~0xFFFFFFFF;
GPIOA->MODER = (GPIOA->MODER & ~(0x3UL << 14)) | (0x2UL << 14); // PA7 Alternate function AF
GPIOA->OSPEEDR = (GPIOA->OSPEEDR & ~(0x3UL << 14)) | (0x2UL << 14); // very high speed sur PA7 page 579
TIM3->CCMR1 = 0x6000;//(TIM3->CCMR1 & ~(0x7UL << 12)) | (0x6UL << 12); // compare mode register, OC4 config 110 mode1 up page 1841
TIM3->CCMR1 |= TIM_CCMR1_OC2PE; // buff
TIM3->CCER |= TIM_CCER_CC2E; // capture/compare enable register, OC2 enable page 1842
TIM3->CCR2 |= 15000;
//TIM3->CNT = 0xFF25;
TIM3->PSC = 3;
TIM3->ARR = 2000;
TIM3->CR1 |= TIM_CR1_ARPE;
TIM3->EGR |= TIM_EGR_UG;
TIM3->CR1 |= TIM_CR1_CEN;
}
void loop() {
/*Serial.println("TIM3->CCR2");
Serial.println(TIM3->CCR2);
Serial.println("TIM3->PSC");
Serial.println(TIM3->PSC);
Serial.println("TIM3->ARR");
Serial.println(TIM3->ARR);
Serial.println("TIM3->CR1");
Serial.println(TIM3->CR1, BIN);
Serial.println("TIM3->EGR");
Serial.println(TIM3->EGR, BIN);
Serial.println("GPIOA->AFR[0]");
Serial.println(GPIOA->AFR[0], BIN);
Serial.println("GPIOA->MODER");
Serial.println(GPIOA->MODER, BIN);
Serial.println("GPIOA->OSPEEDR");
Serial.println(GPIOA->OSPEEDR, BIN);
Serial.println("TIM3->CCMR1");
Serial.println(TIM3->CCMR1, BIN);
Serial.println("TIM3->CCER");
Serial.println(TIM3->CCER, BIN);
Serial.println("TIM3->CR1");
Serial.println(TIM3->CR1, BIN);
delay(10000);
*/
}