找回密码
 立即注册
查看: 229|回复: 8

能否帮忙看一下,电压用的是3.3V,AI8051U为什么发送的PWM,无法测量?中断都无法进

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-05-01 08:52:53

2

主题

7

回帖

656

积分

高级会员

积分
656
发表于 2025-1-2 10:37:43 | 显示全部楼层 |阅读模式
//========================================================================
//函数: void Init_pwma(  )
//描述: 输出PWMA初始化,输出针脚P0.0
//参数: none.
//返回: none.
//版本: V1.0, 2024-12-27
//========================================================================
void Init_pwma(  )

{
cnt1=(PWMA_T1-1);
cnt2=(PWMA_T1-1)>>1;        
PWMA_PS=0x01;//        定义输出0.0
PWMA_PSCRH=(PSCRA-1)>>8;//        预分频24
PWMA_PSCRL=(PSCRA-1);
PWMA_CCER1=0x00;
PWMA_CCMR1=0x00;
PWMA_CCMR1=0x60;
PWMA_CCER1=0x01;
PWMA_ARRH=cnt1>>8;        
PWMA_ARRL=cnt1;
PWMA_CCR1H=cnt2>>8;
PWMA_CCR1L=cnt2;
PWMA_ENO=0x01;
PWMA_BKR=0x80;
PWMA_CR1=0x01;

//========================================================================
//函数: void capture_inst(void )
//描述: 捕获PWMA频率和占空比 输入脚P0.0
//参数:
//返回: none.
//版本: V1.0, 2024-12-27
//========================================================================
void capture_inst(void  )
{
        PWMB_PS=0x00;//输入脚P3.3
        PWMB_CCER1=0x00;
        PWMB_CCMR1=0x01;//IC5映射在TI5FP5
        PWMB_CCMR2=0x02;//IC6映射在TI5FP6
        PWMB_SMCR=0x00;
        PWMB_SMCR=0x54;
        PWMB_CCER1=0x31;//IC5,IC6开启并IC5上升沿,IC6下降沿
        PWMB_CR1=0x01;
        PWMB_IER=0x06;

//        
//        PWMA_PS=0x00;//输入脚P3.3
//        PWMA_CCER1=0x00;
//        PWMA_CCMR1=0x01;//IC5映射在TI5FP5
//        PWMA_CCMR2=0x02;//IC6映射在TI5FP6
//        PWMA_SMCR=0x00;
//        PWMA_SMCR=0x54;
//        PWMA_CCER1=0x31;//IC5,IC6开启并IC5上升沿,IC6下降沿
//        PWMA_CR1=0x01;
//        PWMA_IER=0x06;

        
        
        
        
        
        
        
        
        
        
        
        }
//========================================================================
//函数: void PWMB_ISR(  ) interrupt 27
//描述: 中断捕获,cnt3为周期,cnt4为占空比
//参数:
//返回: none.
//版本: V1.0, 2024-12-27
//========================================================================
        
void PWMB_ISR(  ) interrupt 27
{
        P13=~P13;
        
        if(PWMB_SR1&0x02)
                {        
                        PWMB_SR1&=~0x02;
                        
                cnt3=(PWMB_CCR5H<<8)+PWMB_CCR5L;     
                        
                        
                        }
        if(PWMB_SR1&0x04)
                {        
                        PWMB_SR1&=~0x04;
                        cnt4=(PWMB_CCR6H<<8)+PWMB_CCR6L;  ;

                        }               
                        
                        

        }




void main()
{


        
P_SW2=0x80;
CKCON=0x00;
WTST=0x00;
P0M0=0x01;
P0M1=0x00;
P1M0 =0x00; P1M1 = 0x00;
P2M0=0x00;   P2M1=0x00;
P3M0=0x00;   P3M1=0x00;
P5M0 = 0x00; P5M1 = 0x00;
P3NCS |= 0x08;
P0=0x00;P1=0x00;P2=0x00;P5=0x00;        

P33=0;        
capture_inst( );        
Delay10ms();                        
Init_pwma(  );

Delay10ms();        

EA=1;

ES = 1;

}        

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-1-2 10:54:21 | 显示全部楼层

先在main函数的最后加个while(1);再试一试xiaojiujie

参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-05-01 08:52:53

2

主题

7

回帖

656

积分

高级会员

积分
656
发表于 2025-1-2 11:06:21 | 显示全部楼层
        while(1)
        {
        if(!P36)        IAP_CONTR = 0x60;
//        TX1_write2buff(0x55);
//        TX1_write2buff(0xAA);       
//       
////        TX1_write2buff(cnt3>>8);
////        TX1_write2buff(cnt3);
////   TX1_write2buff(cnt4>>8);
////        TX1_write2buff(cnt4);
//        }
程序是带了while(1);但是中断一直无法进入,P13一直不变化;也没有找到什么原因?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-05-01 08:52:53

2

主题

7

回帖

656

积分

高级会员

积分
656
发表于 2025-1-2 11:09:04 | 显示全部楼层
用示波器也打过,P0.0发出方波,但是PWMB无法捕获,P13一直无变化
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-05-01 08:52:53

2

主题

7

回帖

656

积分

高级会员

积分
656
发表于 2025-1-2 11:12:17 | 显示全部楼层
硬件连接是P0.0直接连接到P3.3
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2025-1-2 15:24:03 | 显示全部楼层
你的主程序没有大循环。

请参考我的例程:
AI8051U-高级PWM相关程序.rar (10.54 MB, 下载次数: 21)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-05-01 08:52:53

2

主题

7

回帖

656

积分

高级会员

积分
656
发表于 2025-1-2 16:58:44 | 显示全部楼层
谢谢梁工提供材料,问题已经找到了,PWMB的IC5针脚实际是P0.1,之前一直按P3.3来测试,所以测不到边沿信号
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-05-01 08:52:53

2

主题

7

回帖

656

积分

高级会员

积分
656
发表于 2025-1-2 17:01:01 | 显示全部楼层
截图20250102165921.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-05-01 08:52:53

2

主题

7

回帖

656

积分

高级会员

积分
656
发表于 2025-1-2 17:01:55 | 显示全部楼层
看错了哈!!
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:30 , Processed in 0.188186 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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