智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 10848|回复: 37
打印 上一主题 下一主题

编码器PT7口测速

  [复制链接]

16

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
威望
685
贡献
247
兑换币
86
注册时间
2012-2-2
在线时间
140 小时
毕业学校
三江
跳转到指定楼层
1#
发表于 2012-5-13 20:15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void PLL_Init(void)   //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1
{ CLKSEL=0x00;
  PLLCTL_PLLON=1;                    //锁相环时钟=2*16*(5+1)/(1+1)=48MHz
  REFDV=1;            //总线时钟=48/2=24MHz
  SYNR=0xC5;
  POSTDIV=0x00;
  _asm NOP;
  _asm NOP;
  _asm NOP;
  while((CRGFLG&0x08)==0);
  CLKSEL_PLLSEL=1;        //选定锁相环时钟  */
}

void PIT0_Init(void)          //定时中断初始化函数 0.1MS定时中断设置
{
    PACTL=0x50;
    PITCFLMT_PITE=0;          //定时中断通道0关
    PITCE_PCE0=1;             //定时器通道0使能
    PITMTLD0=120-1;           //8位定时器初值设定。120分频,在24MHzBusClock下,为0.2MHz。即 5us.
    PITLD0=20-1;           //16位定时器初值设定。PITTIME*0.005MS=0.1ms
    PITINTE_PINTE0=1;           //定时器中断通道0中断使能
    PITCFLMT_PITE=1;            //定时器通道0使能
}


void PA_Init(void)
  {
   PACTL=0x50;//PT7 PIN,PACN32 16BIT,FALLing edge,NOT INTERRUPT
   PACNT = 0x00;    //累加器置初值
}


#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0_INTER()             //2十毫秒计数一次
{
    PIT0Count++;
    if(PIT0Count==200)
    {
       PIT0Count=0;
       //PACTL_PAEN=0;
       nowspeed=PACNT;                //编码器输出脉冲个数
       PACNT=0;
      PITTF_PTF0=1;//清中断标志位


我用的是PT7口测速的  测编码器的波形是好的 但是PACNT检测不到值 为什么总是0啊 求高手

10

主题

353

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1657
威望
1031
贡献
326
兑换币
60
注册时间
2012-2-23
在线时间
150 小时
2#
发表于 2012-5-13 23:30:57 | 只看该作者
PITTF_PTF0=1;//清中断标志位
清标志位应该放在if上面吧   哥们
回复 支持 反对

使用道具 举报

10

主题

353

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1657
威望
1031
贡献
326
兑换币
60
注册时间
2012-2-23
在线时间
150 小时
3#
发表于 2012-5-13 23:32:46 | 只看该作者
#pragma CODE_SEG NON_BANKED
void interrupt 66 PIT0(void) ///////10ms
{
PITTF_PTF0=1;
pulse_count=PACNT;
PACNT=0x0000;}


另外你定时2*200ms  用得着这么长么
回复 支持 反对

使用道具 举报

16

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
威望
685
贡献
247
兑换币
86
注册时间
2012-2-2
在线时间
140 小时
毕业学校
三江
4#
 楼主| 发表于 2012-5-14 09:06:37 | 只看该作者
zsk- 发表于 2012-5-13 23:30
PITTF_PTF0=1;//清中断标志位
清标志位应该放在if上面吧   哥们

哦 这是手误打错了 但是主要问题应该不是这个吧 我还是没有采集到值 另外PT7口需要设成输入吗
回复 支持 反对

使用道具 举报

16

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
威望
685
贡献
247
兑换币
86
注册时间
2012-2-2
在线时间
140 小时
毕业学校
三江
5#
 楼主| 发表于 2012-5-14 09:07:59 | 只看该作者
zsk- 发表于 2012-5-13 23:32
#pragma CODE_SEG NON_BANKED
void interrupt 66 PIT0(void) ///////10ms
{

这不是定时了0.1ms*200=20ms么
回复 支持 反对

使用道具 举报

10

主题

353

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1657
威望
1031
贡献
326
兑换币
60
注册时间
2012-2-23
在线时间
150 小时
6#
发表于 2012-5-14 09:13:42 | 只看该作者
zhiyang1989 发表于 2012-5-14 09:06
哦 这是手误打错了 但是主要问题应该不是这个吧 我还是没有采集到值 另外PT7口需要设成输入吗

进中断之后应该马上清标志位,最起码不应该放在if里面吧。不需要,因为这个是TIM模块复用了PT7。顺便问一下,你用的是XS128吧
回复 支持 反对

使用道具 举报

16

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
威望
685
贡献
247
兑换币
86
注册时间
2012-2-2
在线时间
140 小时
毕业学校
三江
7#
 楼主| 发表于 2012-5-14 09:25:10 | 只看该作者
zsk- 发表于 2012-5-14 09:13
进中断之后应该马上清标志位,最起码不应该放在if里面吧。不需要,因为这个是TIM模块复用了PT7。顺便问一下 ...

是的 其实我的程序是清除中断标志位是放在IF外面的 再加个大括号和上面的对应起来 只是上传到这上面的时候弄错了。 我用的是xs128 为什么不需要设PT7口啊 如果要用其他PT口做输入捕捉用的话 就要设定吗
回复 支持 反对

使用道具 举报

10

主题

353

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1657
威望
1031
贡献
326
兑换币
60
注册时间
2012-2-23
在线时间
150 小时
8#
发表于 2012-5-14 09:36:51 | 只看该作者
XS128只有一个脉冲累加器,输入口就是PT7口(sheet data说的) 。你上面初始化过累加器,那PT7就作为脉冲累加器的输入口了。你若是想用做IC或OC,那就另做初始化了,不能同时用谢谢功能的……
回复 支持 反对

使用道具 举报

16

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
威望
685
贡献
247
兑换币
86
注册时间
2012-2-2
在线时间
140 小时
毕业学校
三江
9#
 楼主| 发表于 2012-5-14 09:45:38 | 只看该作者
zsk- 发表于 2012-5-14 09:36
XS128只有一个脉冲累加器,输入口就是PT7口(sheet data说的) 。你上面初始化过累加器,那PT7就作为脉冲累加器 ...

哦 我知道了 但是最后一个问题就是我现在检测到nowspeed是0啊 这个论坛有人说过他们有的只能检测到小频率的脉冲 大的就检测不到 我不知道是不是我的程序有问题 这个我调了很久了 你是怎样设定的啊 真心求指导
回复 支持 反对

使用道具 举报

10

主题

353

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1657
威望
1031
贡献
326
兑换币
60
注册时间
2012-2-23
在线时间
150 小时
10#
发表于 2012-5-14 10:04:05 | 只看该作者
zhiyang1989 发表于 2012-5-14 09:45
哦 我知道了 但是最后一个问题就是我现在检测到nowspeed是0啊 这个论坛有人说过他们有的只能检测到小频率 ...

我一会儿可以把我的贴给你,现在用的手机没法贴
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 07:45 , Processed in 0.120501 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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