查看: 2504|回复: 8

[已解决] MK60DN512VLQ10进入VLLS3模式后的唤醒问题(已解决)

[复制链接]

该用户从未签到

20

主题

108

帖子

0

中级会员

Rank: 3Rank: 3

积分
242
最后登录
2021-12-10
发表于 2014-2-11 16:43:34 | 显示全部楼层 |阅读模式
 我使用的是 KINETIS512_V2_SC 中IAR下的 pmc_demo 工程测试,主函数中把 LLWU_Init();给屏蔽了,为了使用自己板子上的PTE4/LLWU_P2唤醒,我启用了  LLWU_Init();,并修改其中的 llwu_configure()函数为 llwu_configure (0x0004/*PTE4*/, LLWU_PIN_FALLING, 0x0);结果进入VLLS3后,使用PTE4的下降沿不能够唤醒,请教其中可能的原因。
后来把PORTE的时钟打开了,也无济于事。请斑竹帮忙看看,谢谢!
 
续: 实现PTE4唤醒后,我又想试验一下CMP1唤醒,方法是,将KINETIS512_V2_SC 中IAR下、cmp_demo工程中的函数移植到pmc_demo 工程中,llwu_configure()函数修改为llwu_configure (0x0004/*PTE4*/, LLWU_PIN_FALLING, 0x04);  结果一进入VLLS3就被CMP1唤醒,而且系统没有重启,而是继续循环while(1){}中的几句printf语句就停止了,经测试是停止在了in_char();中了,通过串口发指令‘3’都没反应。求解,再次感谢!
我知道答案 目前已有7人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-12 11:00:25 | 显示全部楼层

    回复:MK60DN512VLQ10进入VLLS3模式后的唤醒问题

    楼主你好,请问你的PTE4在配置成下降沿触发前,是否处于高电平。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-12 11:18:21 | 显示全部楼层

    回复:MK60DN512VLQ10进入VLLS3模式后的唤醒问题

    我在原有程序上添加了IO口初始化,将这些引脚配置成输入口且内部上拉后。
    就能从VLLS3模式通过下降沿唤醒了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    108

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    242
    最后登录
    2021-12-10
     楼主| 发表于 2014-2-12 12:01:43 | 显示全部楼层

    回复:MK60DN512VLQ10进入VLLS3模式后的唤醒问题

    回复第 3 楼 于2014-02-12 11:18:21发表:
    我在原有程序上添加了IO口初始化,将这些引脚配置成输入口且内部上拉后。
    就能从VLLS3模式通过下降沿唤醒了。
     
    外接有上拉电阻,按您说的可以了,谢谢
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-12 12:38:54 | 显示全部楼层

    回复:MK60DN512VLQ10进入VLLS3模式后的唤醒问题

    回复第 4 楼 于2014-02-12 12:01:43发表:
    回复第 3 楼 于2014-02-12 11:18:21发表:
    我在原有程序上添加了IO口初始化,将这些引脚配置成输入口且内部上拉后。
    就能从VLLS3模式通过下降沿唤醒了。
     
    外接有上拉电阻,按您说的可以了,谢谢
     

     

    不用客气,问题解决了就好。
    PS:如果问题解决了,请在求助帖标题末添加“(已解决)”字样。
    感谢你对飞思卡尔产品的关注!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    108

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    242
    最后登录
    2021-12-10
     楼主| 发表于 2014-2-13 14:13:34 | 显示全部楼层

    回复:MK60DN512VLQ10进入VLLS3模式后的唤醒问题(续)

    回复第 5 楼 于2014-02-12 12:38:54发表:
    又遇到一个问题,见1楼 “续:”
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    108

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    242
    最后登录
    2021-12-10
     楼主| 发表于 2014-2-17 11:37:36 | 显示全部楼层

    RE:MK60DN512VLQ10进入VLLS3模式后的唤醒问题(续)

    主函数中,CMP初始化函数 hscmp_init()添加位置如下:
    main()
    {
    ......
    LLWU_Init();//
    /*Configure Tower hardware for the application*/
    SW_LED_Init();
    //gpio_init();
    hscmp_init();//
    /*Start test
    LowPowerModes_test();
    }
    从VLLS3唤醒后执行了如下语句,并停止,串口发送‘3’也不往下运行。
    printf("\nSelect the mode to enter \n");
    printf("1 to enter VLLS1\n");
    printf("2 to enter VLLS2\n");
    printf("3 to enter VLLS3\n");
    printf("4 to enter LLS\n");
    printf("5 to enter VLPS\n");
    printf("6 to enter VLPR\n");
    printf("7 exit VLPR\n");
    printf("8 to enter VLPW\n");
    printf("9 to enter WAIT\n");
    printf("A to enter STOP\n");
    test_val = in_char();
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-17 14:26:48 | 显示全部楼层

    回复:MK60DN512VLQ10进入VLLS3模式后的唤醒问题(续)

    回复第 7 楼 于2014-02-17 11:37:36发表:
    主函数中,CMP初始化函数 hscmp_init()添加位置如下:
    main()
    {
    ......
    LLWU_Init();//
    /*Configure Tower hardware for the application*/
    SW_LED_Init();
    //gpio_init();
    hscmp_init();//
    /*Start test
    LowPowerModes_test();
    }
    从VLLS3唤醒后执行了如下语句,并停止,串口发送‘3’也不往下运行。
    printf("\nSelect the mode to enter \n");
    printf("1 to enter VLLS1\n");
    printf("2 to enter VLLS2\n");
    printf("3 to enter VLLS3\n");
    printf("4 to enter LLS\n");
    printf("5 to enter VLPS\n");
    printf("6 to enter VLPR\n");
    printf("7 exit VLPR\n");
    printf("8 to enter VLPW\n");
    printf("9 to enter WAIT\n");
    printf("A to enter STOP\n");
    test_val = in_char();
     

    请问楼主的hscmp_init();程序怎么写的?
    比较中断函数及其向量表都有改写吗?
     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    108

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    242
    最后登录
    2021-12-10
     楼主| 发表于 2014-2-17 15:49:27 | 显示全部楼层

    回复:MK60DN512VLQ10进入VLLS3模式后的唤醒问题(续)

    回复第 8 楼 于2014-02-17 14:26:48发表:
     
    请问楼主的hscmp_init();程序怎么写的?
    比较中断函数及其向量表都有改写吗?
     比较中断函数和向量表都改了,我测过了比较功能正常,能按输入信号变化进入中断,就是进入VLLS3后不行,CMP1_IN3输入一直是1.5V左右,没有变化,一进VLLS3就醒了,而且不是复位,是继续执行while(1)里面的。hscmp_init();如下,是由CMP0的例程改的,注释没改。谢谢!
    static void hscmp_init(void)
    {
        
      //Enable HSCMP module clock
        SIM_SCGC4 |= (SIM_SCGC4_CMP_MASK );
     
        //Set up HSCMP0 in NVIC. ISR put into vector table in isr.h file
        enable_irq(INT_CMP1-16);   //CMP0 Vector is 75. IRQ# is 75-16=59
     
        // Configure CMP.
        CMP_CR0_REG(CMP1_BASE_PTR)   = 0x00;  // Filter and digital hysteresis disabled
        CMP_CR1_REG(CMP1_BASE_PTR)   = 0x15;  // Continuous mode, high-speed compare, unfiltered output, output pin                                                                                                            disabled
        CMP_FPR_REG(CMP1_BASE_PTR)   = 0x00;  // Filter disabled
        CMP_SCR_REG(CMP1_BASE_PTR)   = 0x3E;  // Enable rising and falling edge interrupts, clear flags
        CMP_DACCR_REG(CMP1_BASE_PTR) = 0xF0;  // 6-bit reference DAC enabled, output set to vdd/64*(48+1)= 2.53v, (Vin                                                                                                           selected is vin2=Vdd)
        CMP_MUXCR_REG(CMP1_BASE_PTR) = 0x1F;  // P-input as external channel 1. M-input as 6b DAC = 2.53v, it is adjustable                                                                                                   with CMP_DACCR_REG
        CMP_CR1_REG(CMP1_BASE_PTR)  |= CMP_CR1_OPE_MASK; // Enable output pin for HSCMP0.
    }

     
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-18 21:35 , Processed in 0.102391 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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