查看: 4344|回复: 7

[已解决] K60芯片PDB0周期性触发ADCO采样,IAR在线调试发现计数寄存器...

[复制链接]
  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
    发表于 2017-8-25 18:19:17 | 显示全部楼层 |阅读模式
    问题描述:K60芯片PDB0周期性触发ADCO采样,IAR在线调试发现计数寄存器PDBx_CNT数值根本没有变化,是不是PDB配置有问题呢还是?代码如下:
                    【目前代码想实现PDB0周期性触发ADCO单通道采样就可以】
    void  PDB0Init (void)
    {
        SIM_SCGC6 |= SIM_SCGC6_PDB_MASK ;                               /* 使能PDB时钟                  */

        PDB0_SC  = PDB_SC_PDBEN_MASK;                                   // 使能PDB               
         /*
         * PDB初始化 配置频率,使能PDB,以及选择PDB的中断触发源
         */

        PDB0_SC    = PDB_SC_CONT_MASK        //连续方式使能             /* PDB计数器溢出后连续计数      */
                   | PDB_SC_MULT(3)                                     // 倍频因子 40倍   
                   | PDB_SC_PDBEN_MASK                                  /* PDB 使能                     */
                   | PDB_SC_TRGSEL(0xf)      //配置触发中断的方式       /* 中断源选择,软件中断         */
                   | PDB_SC_PRESCALER(0x7)                              /* 配置分频:128 * 倍频因子分频 */
                 //  | PDB_SC_PDBEIE_MASK      //PDB错误中断使能
                   | PDB_SC_PDBIE_MASK       //PDB中断使能         
                   | PDB_SC_LDMOD(0);                                    /* 计数值配置后立即加载         */

        /*
         * PDB预触发初始化,设置PDB预触发ADC采样
         */

        PDB0_CH0C1 = PDB_C1_EN(0x01)        // 使能通道CH0预触发模式   对应bit位   
                  // | PDB_C1_BB(0x01)       //B2B
                   | PDB_C1_TOS(0x01);                                    /* 使能通道0预触发延迟          */


        //设置CH0预触发时间
        PDB0_CH0DLY0 = 50;                                                   /* 配置0时刻开始设置adc链接     */
        PDB0_CH0DLY1 = 100;                                                  /* 配置1时刻开启a/d转换         */

        /*
         * 设置PDB计数器溢出值   计数频率为 :48M (外设时钟)/128(分频)/40(倍频因子)= 9375Hz
         */
        PDB0_MOD  = 180;         // 计数器的周期  1S

        PDB0_IDLY = 0;         //软件中断发生时刻,其实也是读取转换值时刻

        NVICICPR2      =  (1<<8);                                           /* PDB 中断使能                  */
        NVICISER2      =  (1<<8);

        PDB0_SC  |= PDB_SC_PDBIE_MASK;                                  /* PDB 中断使能                  */

        PDB0_SC  |= PDB_SC_SWTRIG_MASK;                                 /* 软件触发PDB                   */

        PDB0_SC  |= PDB_SC_LDOK_MASK;                                   /* 立即更新各个计数器值          */   
    }

    void ADC0PDB(void)
    {
       SIM_SOPT7 &= ~SIM_SOPT7_ADC0ALTTRGEN_MASK;          //ADC0  PDB使能
       ADC0_SC2 |= ADC_SC2_ADTRG_MASK;                                 //ADTRG = 1  硬件触发ADC0

      ADC0_SC1A |= ADC_SC1_ADCH_MASK;  
       ADC0_SC1A &= ADC_SC1_ADCH(ADC0_UA);                    //ADC0_UA      AD采样通道
    }


    最佳答案

    萱蘇2015 发表于 2017-8-28 09:18 不好意思 不是K60,那会写错了。是K10:MK10FN1M0xxx12 和K60的ADC PDB一样的,给你传个文档和配套代码,你先研究研究 [attach]427884[/attach] [attach]427885[/attach] ...
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

  • TA的每日心情

    2019-9-17 13:22
  • 签到天数: 238 天

    连续签到: 1 天

    [LV.7]常住居民III

    30

    主题

    905

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    2251
    最后登录
    2024-10-8
    发表于 2017-8-28 08:38:43 | 显示全部楼层
    设置为GPIO功能触发?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25442
    最后登录
    2025-9-4
    发表于 2017-8-28 09:00:50 | 显示全部楼层
    楼主你好!
    请问你的芯片全称是什么?
    可以先找个对应的官方代码看下。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-8-28 09:18:31 | 显示全部楼层
    小恩GG 发表于 2017-8-28 09:00
    楼主你好!
    请问你的芯片全称是什么?
    可以先找个对应的官方代码看下。

    不好意思 不是K60,那会写错了。是K10:MK10FN1M0xxx12
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-8-28 09:19:14 | 显示全部楼层
    very333 发表于 2017-8-28 08:38
    设置为GPIO功能触发?

    想设置PDB触发ADC么
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25442
    最后登录
    2025-9-4
    发表于 2017-8-28 09:36:16 | 显示全部楼层
    萱蘇2015 发表于 2017-8-28 09:18
    不好意思 不是K60,那会写错了。是K10:MK10FN1M0xxx12

    和K60的ADC PDB一样的,给你传个文档和配套代码,你先研究研究
    K60_ADC1_PDB.rar (6.28 MB, 下载次数: 24)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-8-28 09:52:13 | 显示全部楼层
    小恩GG 发表于 2017-8-28 09:36
    和K60的ADC PDB一样的,给你传个文档和配套代码,你先研究研究

    好的  谢谢   我以前就是参考K60的。我再研究一下
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-8-28 11:08:00 | 显示全部楼层
    小恩GG 发表于 2017-8-28 09:36
    和K60的ADC PDB一样的,给你传个文档和配套代码,你先研究研究

    我的代码对例程进行的简化想实现:PDB0 CH0预触发A触发ADC0_A进行采样。在线调试发现PDB0 CNT寄存器没有值。

    void  PDB0Init (void)
    {
        SIM_SCGC6 |= SIM_SCGC6_PDB_MASK ;                               // 使能PDB时钟                  
        PDB0_SC    = PDB_SC_PDBEN_MASK;                                 // 使能PDB               
         /*
         * PDB初始化 配置频率,使能PDB,以及选择PDB的中断触发源
         */

        PDB0_SC   |= PDB_SC_CONT_MASK;                                   //连续方式使能              
        PDB0_SC   |= PDB_SC_MULT(3);                                     // 倍频因子 40倍   
        PDB0_SC   |= PDB_SC_PRESCALER(0x7);                              // 配置分频:128 倍频因子分频
        PDB0_SC   |= PDB_SC_TRGSEL(0xf);                                 //配置软件触发                                 
        PDB0_SC   |= PDB_SC_LDMOD(0);                                 // 计数值配置后立即加载         

        /*
         * 设置PDB计数器溢出值   计数频率为 :48M (外设时钟)/128(分频)/40(倍频因子)= 9375Hz
         */
        PDB0_MOD  = 9375;                                                // 计数器的周期  1S
          
        /*
         * PDB预触发初始化,设置PDB预触发ADC采样
         */

        PDB0_CH0C1 = PDB_C1_EN(0x01)            // 使能通道CH0预触发模式   对应bit位  
                               | PDB_C1_TOS(0x01);       //使能通道0预触发延迟         
                                                                       //计数器到达通道的延时寄存器值加一个外设时钟周期之后,预触发器会响应


        //设置CH0预触发时间
        PDB0_CH0DLY0 = 50;                                                
        PDB0_CH0DLY1 = 100;                                                


        PDB0_SC  |= PDB_SC_LDOK_MASK;                                    //立即更新各个计数器值         

    }

    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-6 03:18 , Processed in 0.104839 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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