金牌会员
- 积分
- 1032
- 威望
- 569
- 贡献
- 259
- 兑换币
- 346
- 注册时间
- 2013-1-25
- 在线时间
- 102 小时
|
一开始在野火50帧稳定版里面写的代码 改的火哥的程序 程序里面只有摄像头采集 编码器测速的程序 配置了FTM1 CH0 通道 PTB0引脚 然后把PTB0接到PTC5 上 做了10ms的定时 全速运行以后 点暂停 计算应该得到的脉冲数和实际采集到的是一致的 这时候在上位机看摄像头也正常采集 没什么问题 调式好之后 添加到我们的程序里面 编码器和PTC5相连 这时候再全速运行之后 点暂停 测得到脉冲数为1 然后重新把PTB0和PTC5 连接后 配置PTB0产生PWM方波 测得脉冲数是正常的 编码器的输出单独用示波器看也是正常的 添加进去之后 就是测不到脉冲数 这个过程中 出现电机突然疯转 舵机打死的情况
这是程序代码
while(1)
{
ov7725_get_img();
//DisableInterrupts;
lptmr_counter_init(LPT0_ALT2,100,0,LPT_Rising);
pit_init_ms(PIT0,10);
//EnableInterrupts;
img_extract((u8 *)img_buff,(u8 *)img_bin_buff,2400);
.......
}
LPT中断函数
volatile u32 LPT_INT_count=0;
volatile u8 pit_flag=0;
void LPT_Handler(void)
{
LPTMR0_CSR|=LPTMR_CSR_TCF_MASK;
LPT_INT_count++;
}
PIT中断函数
extern int cesu;extern u16 count;
void PIT0_IRQHandler(void)
{
PIT_Flag_Clear(PIT0);
count=LPTMR0_CNR;
lptmr_counter_clean();
LPTMR_CSR_REG(LPTMR0_BASE_PTR)&=~(LPTMR_CSR_TEN_MASK | LPTMR_CSR_TIE_MASK);
disable_irq(85u);
PIT_TCTRL(PIT0) &= ~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK); //使能 PITn定时器
//开PITn中断
disable_irq(PIT0 + 68);
cesu=LPT_INT_count*100+count;
//uart_putchar(UART1,cesu);
LPT_INT_count=0;
}
求教 问题出在哪里了
|
|