2618|2

251

帖子

0

资源

一粒金砂(高级)

PIC32MX250 休眠后电平中断唤醒不成功

MCU:  PIC32MX250F128D   A1
问题:怎么样才能成功电平变化唤醒MCU?
调试程序,发现不能进入电平变化中断;
关于寄存器设置如下:
  1. void CN_config()
  2. {
  3. //    bool tFlag;
  4.     INTDisableInterrupts(); // off interrupt
  5.     TRISCbits.TRISC3 = 1;   // ADC button
  6.     TRISBbits.TRISB13 = 1;   // hold

  7.     CNCONBbits.ON = 1;
  8.     CNCONCbits.ON = 1;
  9. //        CNPUCbits.CNPUC3 = 1;
  10. //        CNPDBbits.CNPDB13 = 1;
  11. ////        CNCONCbits.ON = TRUE;
  12. //    CNSTATBbits.CNSTATB13 = 0;  // up
  13. //    CNSTATCbits.CNSTATC3 = 0;//  down
  14. //    tFlag = PORTCbits.RC3;
  15. //    tFlag = PORTBbits.RB13;
  16.     PORTB = PORTB;
  17.     PORTC = PORTC;
  18.     INTSetVectorPriority ( INT_CHANGE_NOTICE_VECTOR, INT_PRIORITY_LEVEL_1 );
  19.     INTSetVectorSubPriority ( INT_CHANGE_NOTICE_VECTOR, INT_SUB_PRIORITY_LEVEL_0 );

  20.     IFS1bits.CNCIF = 0;
  21.     IFS1bits.CNBIF = 0;

  22. //        CNCONCbits.

  23. //    INTEnable ( INT_CNC, INT_ENABLED );// Enable CNCI interrupt  IEC1bits.CNCIE = 1;
  24. //    INTEnable ( INT_CNB, INT_ENABLED );
  25.     CNENBbits.CNIEB13 = 1;
  26.     CNENCbits.CNIEC3 = 1;
  27.     INTEnableInterrupts(); // on interrupt
  28. }
复制代码



下面是进入sleep的程序;
  1. VOID SYSTEM_EnableWDT (  )
  2. {
  3.    
  4.    EnterLowPowerMode();
  5.    //        // off ADC
  6.         AD1CON1bits.ADON   = FALSE; // off adc
  7.         ANSELCbits.ANSC3 = FALSE;   // set adc pin is digital
  8.    CN_config();

  9.    while(!U1STAbits.RIDLE);
  10.    U1MODEbits.WAKE = 1;   // UART sleep wake up
  11.     SYSTEM_Sleep();
  12. //    WDTCONbits.ON = 0;  // off WDT
  13.     OSCCONbits.SLPEN = 0; // wait -> idle
  14. //        // enable ADC
  15.         ANSELCbits.ANSC3 = TRUE;
  16.         AD1CON1bits.ADON   = TRUE;
  17.     ExitLowPowerMode();   
  18. }
复制代码




回复

481

帖子

1

资源

一粒金砂(中级)

可以先尝试在正常运行状态下,调试电平变化中断,看是否可以进入中断,然后在调试休眠状态中断。

回复

251

帖子

0

资源

一粒金砂(高级)

谢谢,已经解决了,将之前程序一个屏蔽的地方释放掉
    INTEnable ( INT_CNC, INT_ENABLED );// Enable CNCI interrupt  
    INTEnable ( INT_CNB, INT_ENABLED );
程序就可以唤醒了;

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

关闭
站长推荐上一条 1/6 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表