使用TCC1定时器在个人板上生成PWM信号

Use TCC1 timer generate PWM signal on personnal board

提问人:simon 提问时间:11/9/2023 最后编辑:simon 更新时间:11/9/2023 访问量:15

问:

我有一个带有 Arduino samd 内核的个人 baord 构建。如果我查看我的引脚,我想生成 PWM 信号,我有这条线作为我的引脚samd21e18aPA30variant.cpp

{ PORTA, 30, PIO_PWM, PIN_ATTR_DIGITAL|PIO_SERCOM, No_ADC_Channel, NOT_ON_PWM, TCC1_CH0, EXTERNAL_INT_10 }, // SWCLK

所以对我来说,我可以使用,所以这是我尝试过的TCC1_CH0

void setup() {

  GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(TCC1_GCLK_ID) |
                    GCLK_CLKCTRL_GEN_GCLK0 |
                    GCLK_CLKCTRL_CLKEN;
                    
  while (GCLK->STATUS.bit.SYNCBUSY);

  Tcc* TC = (Tcc*) TCC1;
  TC->CTRLA.reg &= ~TCC_CTRLA_ENABLE; 


  TC->WAVE.reg = TCC_WAVE_WAVEGEN_NPWM; 

  TC->CTRLA.reg |= TCC_CTRLA_PRESCALER_DIV1 | 
                   TCC_CTRLA_RUNSTDBY;        


  PORT->Group[PORTA].PINCFG[30].bit.PMUXEN = 1; // activate alternate function
  PORT->Group[PORTA].PMUX[15].reg = PORT_PMUX_PMUXE_E; // use TCC1_CH0

  TC->CC[0].reg = 2000;     
  TC->CC[1].reg = 2500;  

  // Activer le timer
  TC->CTRLA.reg |= TCC_CTRLA_ENABLE;
  while (TC->SYNCBUSY.bit.ENABLE);

}

因此,如果我将示波器插入引脚上,我就会有一些东西,但这很奇怪

enter image description here

如果我更改脉冲宽度变化,但我不明白为什么我只有一个波,如果我将时间测量值 40us 更改为 2ms,例如只出现一个波,情况也是一样的TC->CC[0].reg

定时器 Arduino PWM SAMD21

评论


答: 暂无答案