查看: 4185|回复: 4

[原创] 【智能生活-KL25Z】实验四 TPM_PWM和PIT_计数器测试

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-9-2 16:54:03 | 显示全部楼层 |阅读模式
    本帖最后由 zhjb1 于 2016-9-2 16:58 编辑

    FRDM_KL25Z 实验四 TPM_PWM和PIT_计数器测试
    由于低功耗需要对应的低功耗电源管理和模块,暂时放一下,完成常规功能测试后再实现低功耗的问题。
    本实验稍微需要注意点,需要查看KL25手册结合案例修改适合测试结果。
    1. TPM实验
    TPM实验是为了测试PWM输出的问题,按照函数引用简单可靠,先将TPM中的drv中的MKL_tpm.h和MKL_tpm.c拷贝到本程序的drv目录中,再include他们到本程序中,而后就是分析模块:
    MKL_tpm.c中有关于PWM的设置
    原来的打开PTM0和PTM2的时钟,看手册想使用PTB口而不用PTD口[已用做LCD了],看手册PTB1是PTM1_CH1,PTB2是PTM2_CH0,因此将
    SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK | SIM_SCGC6_TPM2_MASK;//打开TPM0,2时钟,改为
    SIM_SCGC6 |= SIM_SCGC6_TPM1_MASK | SIM_SCGC6_TPM2_MASK;//打开TPM1,2时钟
    对应的tpmInit()改成为:
    void tpmInit(void){
    SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTD_MASK;//打开GPIO时钟
    SIM_SCGC6 |= SIM_SCGC6_TPM1_MASK | SIM_SCGC6_TPM2_MASK;//打开TPM1,2时钟
    SIM_SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK | SIM_SOPT2_TPMSRC(1);//打开时钟门  

    PORTB_PCR1 = ( 0 | PORT_PCR_MUX(3));//TPM1_CH1 enable on PTB1
    PORTB_PCR2 = ( 0 | PORT_PCR_MUX(3));//TPM2_CH0 enable on PTB2

    TPM1_MOD  = duty;//TPM_MODULE;
    TPM1_C1SC = TPM_Cn_MODE;//No Interrupts; High True pulses on Edge Aligned PWM
    TPM1_C1V  = duty1;//TPM_INIT_VAL;
    TPM1_SC   = TPM_SC_CMOD(1) | TPM_SC_PS(0);//Edge Aligned PWM running from BUSCLK / 1  
    TPM2_MOD  = duty-4000;//TPM_MODULE;
    TPM2_C0SC = TPM_Cn_MODE;//No Interrupts; Low True pulses on Edge Aligned PWM
    TPM2_C0V  = duty2;//pulse width
    TPM2_SC   = TPM_SC_CMOD(1) | TPM_SC_PS(0);//Edge Aligned PWM running from BUSCLK / 1   
    }
    由于想自己设置周期,因此用duty作为时基,duty1和duty2作为2路脉宽变量
    主程序中增加了tpmInit();和更改dutyx的两段小程序,给出一段:
    //PWM DUTY Change
    void pwmPlu1(void){TPM1_C1V=duty1;}//pulse width
    在循环体中增加:
    if(duty1<20) duty1=6000;
    duty1 -=ddt1;pwmPlu1();
    用以改变PWM脉宽,示波器上看到宽度的变化。
    duty设置为6000,因为对应的主频是6MHz,每步进改变10。
    2. PIT实验
    同样,将MKL_PIT.c和MKL_PIT.h拷贝到本目录中,Include进来,PIT是内部时钟,采用中断方式,不需要外部IO口,所以只是将MKL_PIT.c中的时间改成600000,系统时钟是6MHz,此PIT没0.1秒中断一次。
    main.c中增加了中断函数,用户程序仅仅为计数值增1:
    //PIT Interupt
    void PIT_IRQHandler(void){
    PIT_TFLG0 |= PIT_TFLG_TIF_MASK;//标志位清空
    t0++;tt++;//用户程序
    }
    在主函数初始化中加入中断声明:
    NVIC_EnableIRQ(PIT_IRQn);//PIT中断使能
    NVIC_SetPriority(PIT_IRQn,3);//设置PIT中断优先级
    __enable_irq();//使能总中断
    PIT中断函数中的tt作为显示控制,tt==2时显示和UART0 1次
    结果见照片和视频。PWM两路频率差3倍,因此不能同步显示,采用存储的方式可以看清楚结果。视频链接:,看不了时,点击下边的地址。
    https://v.youku.com/v_show/id_XMTcxMDIzNDU4OA==.html?beta&


    LCD显示的计数值,ADC[16次平均]和两路PWM

    LCD显示的计数值,ADC[16次平均]和两路PWM

    实时显示的结果,上边的PWM可同步

    实时显示的结果,上边的PWM可同步

    存储显示的两路PWM

    存储显示的两路PWM
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-2-13 08:29
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    531

    主题

    2048

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    210
    最后登录
    2018-8-14
    发表于 2016-9-2 17:56:12 | 显示全部楼层
    感谢分享 辛苦了
    签到 签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7519
    最后登录
    2021-8-30
    发表于 2016-9-2 20:43:56 | 显示全部楼层
    楼主玩得不错啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-9-2 21:34:03 | 显示全部楼层
    anny 发表于 2016-9-2 20:43
    楼主玩得不错啊

    谢谢支持,看来需要找低功耗的程序进行实验,否则意义不大。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-27 20:36
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    0

    主题

    47

    帖子

    0

    注册会员

    Rank: 2

    积分
    102
    最后登录
    2016-12-4
    发表于 2016-10-20 20:18:10 | 显示全部楼层
    支持!谢谢分享!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-3 01:30 , Processed in 0.089099 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表