智能车制作

标题: 在单片机TIM模块中在智能小车的应用中,TCO=(int)(TCNT+TIM_CHANNEL_CNTS);什么意思 [打印本页]

作者: moxiaoran    时间: 2013-11-11 12:13
标题: 在单片机TIM模块中在智能小车的应用中,TCO=(int)(TCNT+TIM_CHANNEL_CNTS);什么意思
#define  BUS_FREQ       32000000
#define  TIM_FREE_CLK    (BUS_FREQ/128)
#define  TIM_INT_PER_SEC    25  
#define  TIM_CHANNEL_CNTS    (TIM_FREE_CLK/TIM_INT_PER_SEC)
unsigned int   pulse_cnt;
void PACN_init(void)
{
      PACTL_PAEN=0;
      PACNT=0x0000;
      PACTL_PAMOD=0;
      PACTL_PEDGE=1;
      PACTL_PAEN=1;
}
void Time_init(void)
{
     TSCR1=0x90;
     TSCR2|=0x07;
     TIOS|=0x01;
     TCO=(int)(TCNT+TIM_CHANNEL_CNTS);
     TCTL1|=0x01;
}
#pragma  CODE_SEG_NEAR_SEG  NONBANKED
void inturrupt 8  TIM(void)
{
     TCO=(int)(TCNT+TIM_CHANNEL_CNTS);
     pulse_cnt=PACNT;
     PACNT=0;
}
#pragma CODE_SEG DEFAULT


作者: caixianneng    时间: 2013-11-11 12:30
敢问PID控制的话,采样周期怎么搞。  pulse_cnt=PACNT;这个值可以直接用来做PID的测量值不?

作者: moxiaoran    时间: 2013-11-11 12:34
caixianneng 发表于 2013-11-11 12:30
敢问PID控制的话,采样周期怎么搞。  pulse_cnt=PACNT;这个值可以直接用来做PID的测量值不?

sorry   貌似我也不懂

作者: 兰陵争信    时间: 2013-11-12 10:59
caixianneng 发表于 2013-11-11 12:30
敢问PID控制的话,采样周期怎么搞。  pulse_cnt=PACNT;这个值可以直接用来做PID的测量值不?

你说的速度闭环反馈的控制周期吧,这个你可以用个定时器,然后再中断里面处理,就形成了一个周期。还有pulse_cnt=PACNT;的确是检测到的脉冲数,可以用来反应速度。不过记得每次用前关闭这个计数器,用完后清零,在开启计数器
作者: caixianneng    时间: 2013-11-12 20:50
兰陵争信 发表于 2013-11-12 10:59
你说的速度闭环反馈的控制周期吧,这个你可以用个定时器,然后再中断里面处理,就形成了一个周期。还有pu ...

那这样的我懂了。那PID期望速度是不是先随便设一个占空比,然后在通过赛道测试来看PWm占空比与速度的关系,竟而来设定自己的期望速度(新手莫怪哈





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