【CuriosityNano测评报告】+ 驱动型PWM

[复制链接]
1430|2
 楼主| masterqqq 发表于 2020-8-12 11:54 | 显示全部楼层 |阅读模式

输出频率 =238KHz  ≈   24M/100
Duty =  90%/2- 1%=44%  1%为系统预留死区时间

  1. #include <avr/io.h>

  2. #define ON_TIME_START_WOA   10
  3. #define ON_TIME_CYCLES_WOA  90
  4. #define ON_TIME_START_WOB 10
  5. #define ON_TIME_CYCLES_WOB 90

  6. void CLK_Init(void);
  7. void PORT_Init(void);
  8. void TCD_Init(void);

  9. void CLK_Init(void)
  10. {
  11.     /* Set OSCHF as main clock source */
  12.     _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL_CLKSEL_OSCHF_gc);
  13.    
  14.     /* Wait for main clock oscillator changing to finish */
  15.     while (CLKCTRL.MCLKSTATUS & CLKCTRL_SOSC_bm)
  16.     {
  17.         ;
  18.     }
  19.    
  20.     /* Change OSCHF frequency to 24 MHz */
  21.     _PROTECTED_WRITE(CLKCTRL.OSCHFCTRLA, CLKCTRL_FREQSEL_24M_gc);
  22.    
  23.     /* Set the multiplication factor for PLL to 2x */
  24.     _PROTECTED_WRITE(CLKCTRL.PLLCTRLA, CLKCTRL_MULFAC_2x_gc);
  25. }

  26. void PORT_Init(void)
  27. {
  28.     /* Configure PORT A PIN4 and PIN5 as output low */
  29.     PORTA.DIRSET |= PIN4_bm | PIN5_bm;
  30.     PORTA.OUTSET |= PIN4_bm | PIN5_bm;
  31. }

  32. void TCD_Init()
  33. {

  34.   
  35.     /* Select the Two Ramp mode */
  36.     TCD0.CTRLB |= TCD_WGMODE_TWORAMP_gc;

  37.     TCD0.CMPASET = ON_TIME_START_WOA;
  38.     TCD0.CMPACLR = ON_TIME_START_WOA + ON_TIME_CYCLES_WOA;
  39.     TCD0.CMPBSET = ON_TIME_START_WOB;
  40.     TCD0.CMPBCLR = ON_TIME_START_WOB + ON_TIME_CYCLES_WOB;
  41.   

  42.     /* Enable the PWM channels */
  43.     _PROTECTED_WRITE(TCD0.FAULTCTRL, TCD_CMPAEN_bm | TCD_CMPA_bm
  44.                                    | TCD_CMPBEN_bm | TCD_CMPB_bm);
  45.    
  46.     /* Wait for TCD to be ready for enabling */
  47.     while (!(TCD0.STATUS & TCD_ENRDY_bm))
  48.     {
  49.         ;
  50.     }

  51.     /* Select PLL as input clock and enable TCD */
  52.     TCD0.CTRLA |= TCD_CLKSEL_PLL_gc | TCD_ENABLE_bm;
  53. }

  54. int main(void)
  55. {
  56.     CLK_Init();
  57.     PORT_Init();
  58.     TCD_Init();
  59.    
  60.     while (1)
  61.     {

  62.     }
  63. }



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
CoolSilicon 发表于 2020-8-12 14:42 | 显示全部楼层
可以可以~~~
xuanhuanzi 发表于 2020-8-12 20:02 | 显示全部楼层
最好来个波形看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:32MCU单片机查询网 http://www.32mcu.com MCU选型,嵌入式设计辅助,选择最适合的MCU

35

主题

173

帖子

146

粉丝
快速回复 在线客服 返回列表 返回顶部