找回密码
 立即注册
查看: 104|回复: 1

请教大家一个问题:一条乘法指令导致MCU复位的原因是什么

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2025-10-15 00:00:27
已绑定手机

8

主题

9

回帖

218

积分

中级会员

积分
218
发表于 2025-10-3 12:00:24 | 显示全部楼层 |阅读模式
      调试一个ai8051u+电流传感器_ACS712ELCTR-05B-T程序,使用P1.7脚对ACS712ELCTR-05B-T的输出电压进行AD转换后计算电流。程序采用8bit。
根据ACS712ELCTR-05B-T手册,电流在0-5A时,其输出电压:2.5V+-0.925V,输出灵敏度:185mV/A。
      程序主要检测方法是20MS的时间内连续对ACS712ELCTR-05B-T的输出电压进行20次采样,通过冒泡法查找到电压的最大值后,再换算成检测电流值。AD转换程序参考了擎天柱例程中的09.ADC采样NTC数据-软件防抖-过采样使用-串口1返回结果程序。
      在换算时,包含以下语句:
      const float K=Vref/4096/0.185/1.414;           //计算常数
      float Current_temp=0.0;

      Current_temp = (adc - 2048)*K;                  //换算出电流值,ADC为ADC采样值

     调试程序时,用电位器对5V电源分压后接入P1.7脚进行模拟。由于是模拟,当AD输入电压低于2.5V时,冒泡法查找到电压的最大值就会小于2048 ,(adc - 2048)就会变成负数,此时导致程序复位。
     请教一下大家在这条语句中,为什么(adc - 2048)变成负数后会导致MCU复位呢?
     下面是电流换算的程序:
  1. /******************** 计算电流 *********************/
  2. #define     Vref        5.0
  3. #define     Sensitvity  0.185
  4. #define     Zero_point  2.5
  5. float CalculationCurrent(u16 adc)
  6. {
  7.     //电流传感器_ACS712ELCTR-05B-T
  8.     //量程:5A
  9.     //输出灵敏度:185mV/A(对应5A电流时输出约925mV)
  10.     //精度:±1.5%
  11.     //工作电压:4.5V~5.5V
  12.     //输出电压:2.5V+-0.925
  13.        
  14.     const float K=Vref/4096/0.185/1.414;           //计算常数
  15.     float Current_temp=0.0;          //电流计算结果
  16.     Current_temp = (adc - 2048)*K; //Zero_point理论值为2048,对应采样电压2.5V
  17.     return Current_temp;
  18. }
复制代码

下面附上用到的8位擎天柱例程:09.ADC采样NTC数据-软件防抖-过采样使用-串口1返回结果
09.ADC采样NTC数据-软件防抖-过采样使用-串口1返回结果.zip (117.07 KB, 下载次数: 5)

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-10-15 08:50:20
已绑定手机

85

主题

3256

回帖

7196

积分

荣誉版主

无情的代码机器

积分
7196
发表于 2025-10-3 13:41:20 | 显示全部楼层

上传的代码里未见问题函数调用,并且复制这个函数到例程中调用未见复位异常:
09.ADC采样NTC数据-软件防抖-过采样使用-串口1返回结果-test.zip (128.22 KB, 下载次数: 4)


上传可复现问题工程看看
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-16 05:50 , Processed in 0.117665 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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