智能车制作

标题: 望高手指导脉冲周期测量程序 [打印本页]

作者: caoning10    时间: 2011-3-27 10:11
标题: 望高手指导脉冲周期测量程序
我使用霍尔元件测速,分辨率比较低使用脉冲累加的方法测速精度会比较差,想用脉冲周期测量的方法测量

datasheet看了好久TIM模块周期测量的介绍没有  希望大侠给我点指导
作者: ghae    时间: 2011-3-28 09:51
这个貌似不用程序吧,用一个数字示波器就可以测出来波形的也可以看得出来周期,电压电流也都能看出来!
作者: ghae    时间: 2011-3-28 09:52
timmer模块是用来定时用的
作者: ghae    时间: 2011-3-28 09:59
#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;

                             }
作者: linyujin    时间: 2011-4-24 11:13
顶一个!
作者: 天涯小极莫    时间: 2011-8-1 14:21
PIT 算法,想探讨下,如何做10us中断;感觉2的24次,来做中断比较麻烦?




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2