中级会员
- 积分
- 285
- 威望
- 243
- 贡献
- 30
- 兑换币
- 0
- 注册时间
- 2010-11-14
- 在线时间
- 6 小时
|
今天把编码器装上了 可是程序下载进去后传感器打到黑线上电机就不转了 全部打到白的上才转 并且不到速度返回值 但是看出来中断是合适的
我只是在之前的程序中加了一下程序 (之前的程序跑的好好的)
void initPIT(void)//定时中断初始化函数 10MS定时中断设置
{
PITCFLMT_PITE=0; //定时中断通道0关
PITCE_PCE0=1;//定时器通道0使能
PITMTLD0=160-1;//8位定时器初值设定。160分频,在16MHzBusClock下,为0.1MHz。即10us.
PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.01MS
PITINTE_PINTE0=1;//定时器中断通道0中断使能
PITCFLMT_PITE=1;//定时器通道0使能
}
void Init_Event_Count(void)
{
PACTL = (1<<6);//脉冲累加器启动,外部发生一次下降沿就计数一次。外部编码器连接到IOC7.
//在中断里读取PACNT的值就是脉冲个数。读取后清零PACNT。
}
void interrupt 66 timer0(void) //1ms执行函数程序
{
PITTF_PTF0 = 1; //PIT中断标志位清零
count++;
if(count>9) //10MS一次中断,用来读取编码器脉冲值
{
count=0;
pulse=PACNT; //读取脉冲值
// Moto_PID();
//进行电机的PID控制
PACNT=0; //脉冲累加器计数器清零
}
}
#define PITTIME 1000 //定时100ms(除以 100为ms 定时时间)
哪位大虾能帮我分析这是什么原因 Q:89012072 |
|