查看: 2794|回复: 0

基于AVR XMEGA-A3BU Xplained控制器的Wifi小车制作(11)---PWM

[复制链接]
  • TA的每日心情
    擦汗
    2024-9-30 02:33
  • 签到天数: 444 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-4-19 23:19:59 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 木子鱼 于 2013-5-8 20:53 编辑

            先暂停上午那个两个模块间串口通讯的研究,预计该问题解决最复杂的方法就是加2个RS232 作为一个桥接。
            今晚想小试研究下A3BU Xplained板子的PWM 编程运用
    方法还是同前2帖中一样,继续在打开的工程中点击 ASF Explorer,打开 ASF Wizard
    pwm1.jpg
          
    选中PWM 资源库,添加。然后在ASF Explorer 中可以看到新添加进的
    pwm2.jpg
          
    展开开Quick Start Guide,
        struct pwm_config pwm_cfg;//定义一个变量
        sysclk_init();
        pwm_init(&pwm_cfg, PWM_TCE0, PWM_CH_A, 500);//选择一个PWM输出端口为PE0 and 设置PWM 一周计算频率为500 Hz.

    在工程中找到pwm.h打开
    void pwm_init(void)
    {
         pmic_init();
         sysclk_init();
         cpu_irq_enable();
         pwm_init(&pwm_cfg, PWM_TCE0, PWM_CH_A, 500););//选择一个PWM输出端口为PE0 and 设置PWM 一周计算频率为500 Hz
         pwm_overflow_int_callback(&pwm_cfg, my_callback);
    }
    void my_callback(void)
    {
        //do_something();
    }

    可以看到ASF给pwm函数初始化时内嵌了一个回调函数接口,很方便我们去编写当计数达到pwm设定值时,可以响应一个功能函数  当然如果我们只需要用来PWM 来电机调速  也可以不编写回调函数。

    使用PWM的语句很简单:(比如用PE0端口输出占空比为3/4的PWM来给电动机调速)
      struct pwm_config pwm_cfg;//定义一个变量
      sysclk_init();
      pwm_init(&pwm_cfg, PWM_TCE0, PWM_CH_A, 500);//选择一个PWM输出端口为PE0 and 设置PWM 一周计算频率为500 Hz
      pwm_start(&pwm_cfg,75);//这里的75表示75%=3/4
    是不是超级简单的几条语句就完成了PWM信号输出!!!

       



    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-21 01:14 , Processed in 0.114446 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.