社区导航

 
查看: 517|回复: 2

[求助] PIC32MX250 休眠后电平中断唤醒不成功

[复制链接]

37

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-2-21 12:40:04 | 显示全部楼层 |阅读模式
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. }
复制代码



此帖出自PIC单片机论坛

回复

使用道具 举报

316

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-21 22:28:36 | 显示全部楼层
可以先尝试在正常运行状态下,调试电平变化中断,看是否可以进入中断,然后在调试休眠状态中断。

回复 支持 反对

使用道具 举报

37

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-22 10:11:51 | 显示全部楼层
谢谢,已经解决了,将之前程序一个屏蔽的地方释放掉
    INTEnable ( INT_CNC, INT_ENABLED );// Enable CNCI interrupt  
    INTEnable ( INT_CNB, INT_ENABLED );
程序就可以唤醒了;

回复 支持 反对

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-8-18 13:09 , Processed in 0.255856 second(s), 14 queries , Redis On.

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