OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4196|回复: 2

关于AVR单片机的问题3

[复制链接]

34

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2014-5-27
在线时间
7 小时
发表于 2014-9-16 10:27:55 | 显示全部楼层 |阅读模式
5金钱

各位高手,小弟正在基于AVR单片机开发一款智能小车,正在开发超声波测距兼避障功能,测试发现测距的数据超出有效范围。调试发现如果屏蔽掉避障操作,只是保留超声波测距功能,则距离数据可以正确显示。同时,调试发现:计算距离是通过外部中断2实现的,用定时器计数,数值过大。请教其中的原因。主函数部分代码如下:

void main(void)
{

MCUCSR |= BIT(7);
        MCUCSR |= BIT(7); 
 
        init_devices();   
 
        while(1)
        {
            LCD_write_string(0,0,"CCFROBOT");
            LCD_write_string(12,0,"CSB");
            LCD_write_string(0,1,"SPACE:");
            CSB_data=CSB_data*1.72*8/100; 

            if (CSB_data>400)
            {
               LCD_write_string(7,1,"Err!");
            }
            else
            {
                change(CSB_data,Data);  
                LCD_write_string(7,1,Data);
                LCD_write_string(12,1,"CM");
            }

            start_SB();     
  
            if ((L_BZ!=0)&&(CSB_data>=20)&&(R_BZ!=0))
           {
               pwm(250,250);
               forward;
           }
           else if ((L_BZ!=0)&&(CSB_data<=20)&&(R_BZ!=0))
           {
               pwm(220,250);
               back;
               delay_nms(5);
           }
           else if((L_BZ==0)&&(CSB_data<=20)&&(R_BZ==0))
           {
               pwm(220,250);
               back;
               delay_nms(5);
           }
           else if((L_BZ==0)&&(CSB_data<=20)&&(R_BZ!=0))
           {
               pwm(250,250);
               right;
               delay_nms(5);
           }
           else if((L_BZ==0)&&(CSB_data>=20)&&(R_BZ!=0))
           {
               pwm(250,250);
               right;
               delay_nms(5);
           }
           else if((L_BZ==0)&&(CSB_data<=20)&&(R_BZ!=0))
           {
               pwm(250,250);
               right;
               delay_nms(5);
           }
           else if((L_BZ!=0)&&(CSB_data>=20)&&(R_BZ==0))
           {
               pwm(250,250);
               left;
               delay_nms(5);
           }
           else if((L_BZ!=0)&&(CSB_data<=20)&&(R_BZ==0))
           {
               pwm(250,250);
               left;
               delay_nms(5);
           }

       delay_nms(150);
       }

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-16 12:13:51 | 显示全部楼层
是不是有多个中断?互相影响 了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

34

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2014-5-27
在线时间
7 小时
 楼主| 发表于 2014-11-2 09:48:20 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 16:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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