智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2087|回复: 5
打印 上一主题 下一主题

望高手指导脉冲周期测量程序

[复制链接]

3

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
386
威望
330
贡献
46
兑换币
0
注册时间
2010-12-18
在线时间
5 小时
跳转到指定楼层
1#
发表于 2011-3-27 10:11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用霍尔元件测速,分辨率比较低使用脉冲累加的方法测速精度会比较差,想用脉冲周期测量的方法测量

datasheet看了好久TIM模块周期测量的介绍没有  希望大侠给我点指导

7

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
400
威望
283
贡献
107
兑换币
0
注册时间
2011-2-14
在线时间
5 小时
2#
发表于 2011-3-28 09:51:37 | 只看该作者
这个貌似不用程序吧,用一个数字示波器就可以测出来波形的也可以看得出来周期,电压电流也都能看出来!
回复 支持 反对

使用道具 举报

7

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
400
威望
283
贡献
107
兑换币
0
注册时间
2011-2-14
在线时间
5 小时
3#
发表于 2011-3-28 09:52:14 | 只看该作者
timmer模块是用来定时用的
回复 支持 反对

使用道具 举报

7

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
400
威望
283
贡献
107
兑换币
0
注册时间
2011-2-14
在线时间
5 小时
4#
发表于 2011-3-28 09:59:53 | 只看该作者
#include<hidef.h>
                   #include<mc9s12xs128.h>
                   #pragma LINK_INFO DERIVATIV"mc9s12xs128b"
                   #define PITTIME 200000//设定为1000毫秒定时
                    uchar count=0,t=0;
                    void setbusclock(void)//32MHZ外部时钟为16MHZ
                   {
                    CLKSEL=0X00;//
                    PLLCTL_PLLON=1;//打开时钟
                    SYNR=0X40|0X03;
                    REFDV=0X80|0X01;
                              //SYNR=1;//PLLCLK=2*FOSC*(SYNR+1)/(REFDV+1)
                              //REFDV=1;
                    POSTDIV=0X00;//4:0,FPLL=FVCO/(2XPOSTDIV)
                    _asm(nop);//BUS CLOCK=16M
                    _asm(nop);
                    while(!(CRGFLG_LOCK));//WHEN PLL IS STEADY ,THEN USE IT
                    CLKSEL_PLLSEL=1;//engage PLL system;
                               }  
                    void PWM_Init(void)
                   {
                    PWMPOL=0X20;
                    PWMCAE=0X00;
                    PWMCTL=0X00;
                    PWMPRCLK=0X20;
                    PWMSCLA=0X05;
                    PWMPER5=0X08;
                         }
      void PIT_Init(void)//定时中断初始化函数1000MS定时中断设置
              {
                 PITCFLMT_PITE=1;
                 PITFLT=1;
                 PITCE=1;
                 PITINTE=1;
                 PITMTLD0=160-1;
                 PITLD0=PITTIME-1;
                          }
                  //脉冲累加器初始化,实现脉冲测速。
                  //PIT7口

               void initPACA(void)
           {
                PACTL=0X50;//PT7上升沿脉冲计数
                PACNT=0X00;//累加器初始值
                      }
               void main(void)
               {
                 EnableInterrupts;
                 setbusclock();
                 PIT_Init();
                 PWM_Init();
                 initPACA();
                 for(;;)
                {
                     }
                           }
                #pragma CODE_SEG __NEAR_SEG NON_BANKED
                void interrupt 66 PIT7Interrupt(void)
           {   PORTB^=0xff;
                  PITTF_PTF0=1;
               count++;
             t=PACNT;

                             }
回复 支持 反对

使用道具 举报

3

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
威望
389
贡献
563
兑换币
0
注册时间
2010-11-11
在线时间
87 小时
5#
发表于 2011-4-24 11:13:16 | 只看该作者
顶一个!
回复 支持 反对

使用道具 举报

14

主题

141

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2809
威望
1451
贡献
826
兑换币
314
注册时间
2011-3-18
在线时间
266 小时
6#
发表于 2011-8-1 14:21:06 | 只看该作者
PIT 算法,想探讨下,如何做10us中断;感觉2的24次,来做中断比较麻烦?
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-23 02:22 , Processed in 0.069309 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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