设了电流测不到输出?状态机IDLE态在偷偷清零 一句话: 发光序列状态机在IDLE态每100ms把所有DAC清零安全设计。手动设的电流100ms内就被抹掉——串口回显设置成功不代表硬件真有输出。加个手动模式标记就解决。适合谁读遇到设置了没效果回显成功但输出端测不到的嵌入式工程师。现象100mA有输出40/80mA没有上位机设电流回显成功CRC校验通过一切正常。但拿万用表测输出端设 100mA →有输出设 40mA →没有设 80mA →没有同样的命令、同样的换算、同样的写码逻辑为什么 100mA 能测到排查先排除换算和写码40mA 对应 DAC 码 54680mA 对应 1092100mA 对应 1365——换算没问题。写码逻辑三条路径完全相同也排除了。问题不在命令本身在命令之后发生了什么。真相IDLE态每100ms清一次DAC设备有个发光序列状态机空闲 → 预热 → 运行 → 待机……设计上空闲态必须把所有 DAC 清零安全要求不点亮的时候输出必须为零防止漏电烧器件。代码长这样else { /* IDLE: 全关 */ ... Dac_Write_Code(ch, 0x0000); // 每100ms清一次! }时序是这样的t0ms 上位机设 40mADAC 输出 40mA ✓ t100ms 序列 IDLE 定时任务跑一次全部清零 ✗ t200ms 再清一次……你设完电流100ms 内就被序列的 IDLE 任务抹掉。万用表当然测不到。那为什么 100mA 能测到因为测试时发光序列恰好处于别的状态那个状态会设激光电流不清零100mA 是它设的不是你设的。40/80mA 测试时序列早已超时回到空闲态一直清零。设计冲突安全逻辑 vs 手动测试回头看这是个真实的设计矛盾IDLE 全关是必须的——防漏电、防误点亮这是安全底线不能删手动设电流是调试刚需——但它的语义被 IDLE 覆盖了设了等于没设安全逻辑本身没错错的是没有区分业务输出和手动测试输出。修复加一个手动模式标记合理的做法是让状态机知道谁在控制输出if (manual_mode) { /* 手动模式保留上位机设的值IDLE 不清零 */ } else { /* 序列模式按状态机输出 */ }上位机手动设电流 → 置手动模式标记IDLE 跳过清零退出手动模式比如启动序列→ 清除标记恢复安全逻辑这样安全底线还在调试也不再被静默覆盖。经验串口回显设置成功 ≠ 硬件实际输出——协议层和硬件之间隔着一层业务逻辑回显只证明命令收到了周期任务会静默覆盖手动操作——状态机、轮询这类后台逻辑调试时先搞清楚现在它在干什么安全逻辑是调试时的隐形敌人——禁用时全关这类兜底设计最容易让人误判设备坏了排查这类问题最快的办法禁用后台任务测一次。禁掉序列再设电流如果立刻有输出——问题就实锤了。实测对比直接设电流100ms内被IDLE清掉测不到输出 | 加手动模式标记设值保留调试一次过有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。下一篇脚本明明写对了为什么就是匹配不到\r\n 和 \n 的坑——跨平台脚本的行尾陷阱

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/30 19:41:56
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/1 19:32:23
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻