注册 登录
查看: 390|回复: 20

[K60] 山外哥帮看看这个程序吧;超声波能驱起来就是定时定不上

[复制链接]
发表于 2014-5-30 17:11:46 | 显示全部楼层 |阅读模式
本帖最后由 魂CC 于 2014-5-31 14:55 编辑



超声波都驱了好久了,就是定时的时间采不回来,大神们帮帮忙,小弟感激不尽!

回复

使用道具 举报

 楼主| 发表于 2014-5-30 17:13:47 | 显示全部楼层
那位大神帮帮忙,指点小弟一下吧[抓狂]!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-30 17:21:36 | 显示全部楼层
额  论坛怎么这么冷清啊! 都没个人 回复  额
回复 支持 反对

使用道具 举报

发表于 2014-5-30 17:23:31 | 显示全部楼层
你的程序不断地在初始化pit,计时时间肯定不准
  1.     while(1)
  2.      {   

  3.        start_moudle();
  4.        pit_time_start(PIT0);//开始定时
  5.       port_init(PTA12, ALT1 | IRQ_FALLING | PULLUP);
  6.       set_vector_handler(PORTA_VECTORn ,PORTA1_IRQHandler);   
  7.       enable_irq (PORTA_IRQn);
  8.       //systick_delay_ms(100);
  9.       //printf("\n测距时间为:%d",distance[0]);

  10.      }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-30 17:27:27 | 显示全部楼层
额 那怎么改动啊  能指点一下吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-30 17:31:22 | 显示全部楼层
屏了 这句pit_time_start(PIT0);//开始定时  还是那样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-30 17:32:44 | 显示全部楼层
山外哥,能帮吗弄个例程吗?  有很多人会感谢你的
回复 支持 反对

使用道具 举报

发表于 2014-5-30 17:56:21 | 显示全部楼层
魂CC 发表于 2014-5-30 17:32
山外哥,能帮吗弄个例程吗?  有很多人会感谢你的

PIT计时的超声波例程 - 智能车资料区 - 山外-vcan123论坛 http://www.vcan123.com/forum.php ... tid=4692&extra=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-30 18:56:13 | 显示全部楼层
额  山外哥,你刚给的程序我试了一下不好使啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-30 18:56:31 | 显示全部楼层
#include "common.h"
#include "include.h"

#define TRIG    PTD2
#define ECHG    PTD1

#define FLAGWAIT    0xFFFFF
/*!
*  @brief      main函数
*  @since      v5.0
*  @note       山外 PIT 计时实验
*/
void main()
{
    uint32 timevar;
    uint32 flag;
    gpio_init(TRIG,GPO,0);
    gpio_init(ECHG,GPI,0);
   
    while(1)
    {
        flag = 0;
        gpio_set(TRIG,1);               //产生触发脉冲
        pit_delay_us(PIT1,15);
        gpio_set(TRIG,0);
        
        while(gpio_get(ECHG) == 0);             //等待电平变高,低电平一直等待
        pit_time_start  (PIT0);                 //开始计时
        while(gpio_get(ECHG) == 1)              //等待电平变低,高电平一直等待
        {
            flag++;
            if(flag >FLAGWAIT)
            {
                break;
            }
        };            
        
        timevar = pit_time_get_us    (PIT0);    //停止计时,获取计时时间
        if(flag <FLAGWAIT )
        {
            timevar = timevar * 340 /2/1000;
               
            if(timevar > 5)
            {
                printf("\n\n距离为:%dmm",timevar); //打印延时时间
            }
        }
        
        DELAY_MS(1000);
    }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-30 19:50:15 | 显示全部楼层
山外哥帮下忙吧,停在这里好久了;我们实验用的全是山外哥的东西
while(gpio_get(ECHG) == 0);             //等待电平变高,低电平一直等待
        pit_time_start  (PIT0);                 //开始计时

加上这句之后 超声波就不好使了
回复 支持 反对

使用道具 举报

发表于 2014-5-30 21:00:50 | 显示全部楼层
魂CC 发表于 2014-5-30 18:56
额  山外哥,你刚给的程序我试了一下不好使啊

程序是可用的,之前我测试过的。
回复 支持 反对

使用道具 举报

发表于 2014-5-30 21:02:53 | 显示全部楼层
魂CC 发表于 2014-5-30 19:50
山外哥帮下忙吧,停在这里好久了;我们实验用的全是山外哥的东西
while(gpio_get(ECHG) == 0);             // ...

这个是等待超声波应答啊,卡住了吗?
回复 支持 反对

使用道具 举报

发表于 2014-5-30 21:03:29 | 显示全部楼层
魂CC 发表于 2014-5-30 19:50
山外哥帮下忙吧,停在这里好久了;我们实验用的全是山外哥的东西
while(gpio_get(ECHG) == 0);             // ...

要不接线有误,要不你的超声波模块与我之前测试的超声波模块不一样
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-31 10:08:36 | 显示全部楼层
山外哥,你家也有超声波吗?  我用的是普通的四根线的  接线没有问题
回复 支持 反对

使用道具 举报

发表于 2014-5-31 10:17:46 | 显示全部楼层
魂CC 发表于 2014-5-31 10:08
山外哥,你家也有超声波吗?  我用的是普通的四根线的  接线没有问题

没有,这模块精度太低,所以没卖。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-31 10:22:23 | 显示全部楼层
换成 IF 超声波好使   但是打印不出值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-31 10:22:45 | 显示全部楼层
把  while  换成 if
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-31 10:23:56 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-31 10:17
没有,这模块精度太低,所以没卖。

打印 出来的值始终为0
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-31 10:25:18 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-31 10:17
没有,这模块精度太低,所以没卖。

山外哥 给点意见 那电磁组应该用什么壁障啊
回复 支持 反对

使用道具 举报

发表于 2014-5-31 11:11:09 | 显示全部楼层
魂CC 发表于 2014-5-31 10:22
换成 IF 超声波好使   但是打印不出值

肯定的啊,因为要等待那个脉冲的下降沿到来,而你不等待,那么时间肯定是0.

你自己分析一下时序嘛,用示波器看看波形
回复 支持 反对

使用道具 举报

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

本版积分规则

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