查看: 1336|回复: 0

[S12] 关于MC9S12占空比捕获问题

[复制链接]

该用户从未签到

2

主题

2

帖子

0

新手上路

Rank: 1

积分
18
最后登录
2018-12-1
发表于 2018-11-25 11:15:10 | 显示全部楼层 |阅读模式
  我最近移植了原子的输入捕获占空比的例程到MC9S12上,但是感觉实现不了,是哪里设置出了问题吗,第一次使用NXP,还望大神指点一下

void pwm_init(void) {
        TIM1TIOS_IOS2 = 0x00;      //鎸囧畾閫氶亾2涓鸿緭鍏ユ崟鎹夋柟寮?
        //TIM1TCTL4 = (0x03 << 4);            // 璁剧疆閫氶亾2涓烘崟鎹夊弻杈?
        TIM1TCTL4_EDG2A=1;
        TIM1TCTL4_EDG2B=0;
        TIM1TIE_C2I = 0x01;     // 鍏佽閫氶亾2杈撳嚭鎹曡幏涓柇
        //TIM1 32M
        //32M/32 = 1M
        TIM1TSCR2_PR = 0x05;            // 32M/32 = 1M
        TIM1TSCR2_TOI = 1;       // 鍏佽璁℃椂涓柇
        TIM1TFLG1 = 0xff;            // 娓呴櫎鍚処C/OC涓柇鏍囧織浣?
        TIM1TFLG2 = 0x80;     // 娓呴櫎鑷敱瀹氭椂鍣ㄤ腑鏂爣蹇椾綅
        TIM1TSCR1_TFFCA = 0;  // 瀹氭椂鍣ㄦ爣蹇椾綅蹇€熸竻闄?
        TIM1TSCR1_TEN = 1;    // 瀹氭椂鍣ㄤ娇鑳戒綅. 1=鍏佽瀹氭椂鍣ㄦ甯稿伐浣? 0=浣夸富瀹氭椂鍣ㄤ笉璧蜂綔鐢?鍖呮嫭璁℃暟鍣?       
}
#pragma CODE_SEG  NON_BANKED
interrupt VectorNumber_Vtim1ch2 void pwm_ioc(void) {
       
                 if((TIM5CH1_CAPTURE_STA&0X80)==0)
        {          
                        if (TIM1TFLG2_TOF==1)    //璁℃暟鍣ㄦ孩鍑?
                        {            
                                if(TIM5CH1_CAPTURE_STA&0X40)
                                {
                                        if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)
                                        {
                                                TIM5CH1_CAPTURE_STA|=0X80;
                                                TIM5CH1_CAPTURE_VAL=0XFFFF;
                                        }else TIM5CH1_CAPTURE_STA++;
                                }         
                        }
                if (TIM1TFLG1_C2F == 1)         //鎹曡幏涓柇鍙戠敓  
                        {       
                                if(TIM5CH1_CAPTURE_STA&0X40)                       
                                {                                 
                                        TIM5CH1_CAPTURE_STA|=0X80;               
                                        TIM5CH1_CAPTURE_VAL=TIM1TC2;
                                        TIM1TCTL4_EDG2A=1;           //璁剧疆涓轰笂鍗囨部鎹曡幏
                                        TIM1TCTL4_EDG2B=0;
                                }else                                                                 
                                {
                                        TIM5CH1_CAPTURE_STA=0;                       
                                        TIM5CH1_CAPTURE_VAL=0;                                       
                                        TIM5CH1_CAPTURE_STA|=0X40;               
                                        TIM1TCTL4_EDG2A=0;           //璁剧疆涓轰笅闄嶆部鎹曡幏
                                        TIM1TCTL4_EDG2B=1;       
                                }
                        }
        }
                 TIM1TFLG2_TOF=1;            //娓呴櫎涓柇鏍囧織浣?
                 TIM1TFLG1_C2F=1;  
}
#pragma CODE_SEG DEFAULT
uint16_t Get_pwm_duty(void){
       
        if(TIM5CH1_CAPTURE_STA&0X80)//鲁脡鹿娄虏露禄帽碌陆脕脣脪禄麓脦脡脧脡媒脩脴
                {
                        temp=TIM5CH1_CAPTURE_STA&0X3F;
                        temp*=65536;
                        temp+=TIM5CH1_CAPTURE_VAL;
                        pwm_duty=100*temp/1000;
                        TIM5CH1_CAPTURE_STA=0;
                }
}


我知道答案 目前已有0人回答
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-5-9 10:29 , Processed in 0.109456 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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