智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3161|回复: 6
打印 上一主题 下一主题

求救 关于测速的

[复制链接]

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
威望
183
贡献
20
兑换币
0
注册时间
2009-3-15
在线时间
28 小时
跳转到指定楼层
1#
发表于 2009-6-9 20:17:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

unsigned int Get_pulse;
   int k;
void SetBusCLK_32M(void)
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR=3;         
    REFDV=1;          //pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz;
    _asm(nop);          //BUS CLOCK=32M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}

void PACBInit()
{ //TIOS=0xfe;
  TCTL4 = 0X02;       //下降沿捕捉脉冲
  PACTL = 0x40;
  TSCR1 =0x80;
  TSCR2= 0x83;   
  TIE=0x00;
  //TIOS_IOS2=0;
  
}

void init_PWM(void){
  PWME=0;
  /*舵机使用PWM45级联*/
  PWMCTL_CON45=1;   //级联PWM45
  PWMCLK_PCLK5=1;   //PWM5选择SA为时钟源
  PWMPRCLK_PCKA=0;  //A时钟预分频0;分频4
  PWMSCLA=4;        //即1/3us
  PWMPOL_PPOL5=1;   //PWM5输出先高后低
  PWMPER45=30000;  //100Hz
  PWMDTY45=20000;  //6000舵机中心位置1.5ms高电平
  PWME_PWME5=1;     //启动PWM5
  
  
  /*驱动电机使用PWM2和PWM3,目前仅使用PWM3*/
  PWMCLK_PCLK2=1;   //PWM2使用SB时钟
  PWMCLK_PCLK3=1;   //PWM3使用SB时钟
  PWMPRCLK_PCKB=0;  //B=Bus
  PWMSCLB=128;       //SB=B/64=384K 即4us
  PWMPOL_PPOL2=1;   //P2先低后低
  PWMPOL_PPOL3=1;   //P3先高后低
  PWMPER2=0xff;
  PWMPER3=0xff;
  PWMDTY2=0x60;
  PWMDTY3=0x00;
  PWME+=0x0c;       //同时使能PWM23
}
void main(void)
{
    EnableInterrupts;
  SetBusCLK_32M();
  PACBInit();   
   init_PWM();
  
  for(;;)
   {
   }
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 16 MCNT_IS(void)
{ DisableInterrupts;        
      
   TSCR1=0x00;
     PACTL_PAEN =0;
   TFLG2_TOF=1;
         
   
Get_pulse =PACNT;
   
   PACNT=0;    //注意这行        
PACTL_PAEN=1;
TSCR1=0X80;
EnableInterrupts;
  


在中断里加上pacnt=0;运行后getpiuse 始终是0;

如果去掉这句话 可以测得脉冲 但是无法对pacnt 清零啊
为什么会产生加上pacnt=0 后  getpluse始终是0的现象啊

0

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
威望
202
贡献
22
兑换币
0
注册时间
2009-4-14
在线时间
7 小时
2#
发表于 2009-6-9 22:02:12 | 只看该作者
我刚刚试了一下,可以读出来的。也不知道你到底是什么原因。不过你可以PACNT=0x0000;这样就可以。
回复 支持 反对

使用道具 举报

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
3#
发表于 2009-6-11 12:46:21 | 只看该作者
可能是你的单片机不稳定,程序没问题。
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
284
QQ
威望
224
贡献
48
兑换币
26
注册时间
2009-4-6
在线时间
6 小时
4#
发表于 2009-6-23 20:14:47 | 只看该作者
程序没问题,我试过了,可能是外部中断触发不对,要运行一遍,外部信号触发一下,在运行一遍,才能看出现象
回复 支持 反对

使用道具 举报

15

主题

226

帖子

0

精华

常驻嘉宾

高材生

Rank: 8Rank: 8

积分
4345

论坛元老奖章

威望
3548
贡献
647
兑换币
8
注册时间
2010-1-13
在线时间
75 小时
5#
发表于 2010-5-3 14:48:57 | 只看该作者
输入脉冲是PT7口吗??
回复 支持 反对

使用道具 举报

2

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
威望
263
贡献
21
兑换币
0
注册时间
2010-3-10
在线时间
4 小时
6#
发表于 2010-5-6 16:54:59 | 只看该作者
同意4#
回复 支持 反对

使用道具 举报

14

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
QQ
威望
360
贡献
96
兑换币
2
注册时间
2010-5-4
在线时间
20 小时
7#
发表于 2010-5-6 20:58:43 | 只看该作者
hao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 06:27 , Processed in 0.058631 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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