智能车制作

标题: 发到示波器的数值如何能达到4095?我只能到255.... [打印本页]

作者: zty562694497    时间: 2015-3-11 21:57
标题: 发到示波器的数值如何能达到4095?我只能到255....
采集陀螺仪AD显示至虚拟示波器,只有到200+的值而已。我觉得是我对各种数据类型和串口发送的函数还不够了解。我用的是野火的旧库,示波器用的是山外的多功能调试助手,希望大家能指点指点。void main()
{
...........省略之前琐碎
   while(1)
   {
      var=0;    //将采集的加速度值清零重新采集
      gyro=0;   //将采集的陀螺仪值清零重新采集
      for(i=0;i<20;i++)
      {
        var=var+ad_once (ADC1,SE7a,ADC_8bit); //在ADC1_SE6a上采样二十次8位精度加速度计
        gyro=gyro+ad_once (ADC1,SE6a,ADC_8bit); //在ADC1_SE7a上采样二十次8位精度陀螺仪
      }
      var=var/20;                           //AD值取20次取平均值
      gyro=gyro/20;
      vcan_sendware((uint8_t *)&var,(uint8_t *)&gyro,sizeof(var));

   }
}

void vcan_sendware(uint8 *addr1,uint8 *addr2 , uint32 waresize)    //发送一次数据(双通道)
{
#define CMD_WARE   3
  uint8 cmdf[2] = {CMD_WARE, ~CMD_WARE};    //串口调试 使用的前命令
  uint8 cmdr[2] = {~CMD_WARE, CMD_WARE};    //串口调试 使用的后命令

  uart_sendN(UART1,cmdf,sizeof(cmdf));      //先发送前命令
  uart_sendN(UART1,addr1,8);           //发送数据1
  time_delay_ms(10);
  uart_sendN(UART1,addr2,8);           //发送数据2
  uart_sendN(UART1,cmdr,sizeof(cmdr));      //发送后命令
}



作者: zhou1994    时间: 2015-3-11 22:04
:L8位数据怎么来的好几千
作者: zty562694497    时间: 2015-3-11 22:08
zhou1994 发表于 2015-3-11 22:04
8位数据怎么来的好几千

说的是啊。。。可是换16位之后。。连显示都不显示了

作者: zty562694497    时间: 2015-3-11 22:10
zhou1994 发表于 2015-3-11 22:04
8位数据怎么来的好几千

呃。。补充一下。。。发送串口的函数。。只支持发送8位呃。。。有什么办法能让它发送16位的数据吗

作者: zhou1994    时间: 2015-3-11 22:20
zty562694497 发表于 2015-3-11 22:10
呃。。补充一下。。。发送串口的函数。。只支持发送8位呃。。。有什么办法能让它发送16位的数据吗

拆成两个8位然后再组成一个16位撒。不过你需要自己写上位机了估计

作者: zty562694497    时间: 2015-3-12 10:38
zhou1994 发表于 2015-3-11 22:20
拆成两个8位然后再组成一个16位撒。不过你需要自己写上位机了估计

QAQ

作者: 泰庆电子    时间: 2015-3-12 11:57
估计是上位机代码的限制。




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