TikTak
April 16, 2018, 2:03pm
1
bonjour
j'aimerai bien utiliser les pin PWM de l'arduino due mais avec une fréquence plus élevée. la question a été déjà posé mais je ne trouve toujours pas comment faire changer la fréquence.
Je voudrais savoir si les librairies utilisées pour modifier la fréquence des pins 3,6,5,9,10,11 s'appilquent aussi a l'arduino due.
lesept
April 16, 2018, 2:07pm
2
Fonction PwmFrequency
Pour le Due, des éléments de réponse ici .
Un autre exemple plus clair éventuellement (PWMH0 à 1 MHz):
/******************************************************************************/
/* PWMH0 1 MHz */
/******************************************************************************/
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
PMC->PMC_PCER1 |= PMC_PCER1_PID36; // PWM power ON
PIOC->PIO_PDR |= PIO_PDR_P3; // Set pin to a peripheral
PIOB->PIO_ABSR |= PIO_PC3B_PWMH0; // Set PWM pin peripheral type B for PWMH0 (Arduino pin 35)
PWM->PWM_CLK = PWM_CLK_PREB(0) | PWM_CLK_DIVB(2); // select Frequency : Mck/2 = 42 MHz
PWM->PWM_CH_NUM[0].PWM_CMR = PWM_CMR_CPRE_CLKB; // The period is left aligned, clock source as CLKB on channel 0
PWM->PWM_CH_NUM[0].PWM_CPRD = 42; // Set the PWM frequency 42 MHz/42 = 1 MHz
PWM->PWM_CH_NUM[0].PWM_CDTY = 20; // Set the PWM duty cycle to (CDTY/CPRD) * 100 %
PWM->PWM_IER1 = PWM_IER1_CHID0; // Interrupt on Channel 0 counter
NVIC_EnableIRQ(PWM_IRQn); // Enable interrupt
PWM->PWM_ENA = PWM_ENA_CHID0; // Enable PWM channel 0
}
void loop() {
}
void PWM_Handler() {
static uint32_t Count;
PWM->PWM_ISR1; // Clear status register
if (Count++ == 1000000) {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // Toggle pin every 1 Hz
Count = 0;
}
}
3Sigma
April 16, 2018, 3:05pm
4
Bonjour,
Je te recommande vivement pwm_lib (GitHub - antodom/pwm_lib: This is a C++ library to abstract the use of the eight hardware PWM channels available on Arduino DUE's Atmel ATSAM3X8E microcontroller. ) qui écrabouille par sa facilité d'utilisation tout ce qu'on peut trouver ailleurs.
Maintenant, si tu préfères manipuler les registres avec tes petites mains (question de goût), les réponses précédentes sont très bonnes.