gpt4 book ai didi

c - ATMega128 启动时输出闪烁

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:25 25 4
gpt4 key购买 nike

我正在使用 ATMega128 micro,并将我的所有 pin 初始化设置为输出,并在我的主要代码部分下设置为低:

PORTB=0x00;
DDRB=0xFF;

但是在启动时,与 PORTB.0 相关的输出会瞬间变高(我已经在示波器上捕捉到它)并且其他输出似乎也在做同样的事情。好像是低-高-低。我读过一些资料,这可能是由启动期间的三态输出开关引起的,所以我在引脚初始化之前将 PUD 寄存器设置为 1,然后再设置为 0,但仍然没有成功。有没有人有任何其他想法在启动期间保持输出关闭?它也不总是发生,这让我很困惑。

最佳答案

根本问题是硬件问题 - GPIO 上缺少下拉电阻,因此在重置默认高阻抗输入状态时它会 float 。

您在软件中所能做的最好的事情就是在复位后立即尽早初始化 GPIO。要在 CodeVisionAVR 中执行此操作,您需要在项目中使用自定义的 startup.asm,如 CoadeVisionAVR 编译器手册第 4.18 节所述:

enter image description here ...

我建议您按如下方式初始化 PORTB 和 DDRB:

             LDI    R16,  0x00       
OUT PORTB, R16
LDI R16, 0xFF
OUT DDRB, R16

紧接在第 2 步之前,即前四个指令。如果是机械继电器,则 GPIO 悬空的时间可能太短,继电器无法使用react。您可能仍然对固态继电器有疑问。任何脉冲的长度可能取决于电源上升时间;如果它很慢,您可能会得到更长的脉冲。

关于c - ATMega128 启动时输出闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41557868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com