ATMEGA16L 上拉未激活

Posted

技术标签:

【中文标题】ATMEGA16L 上拉未激活【英文标题】:ATMEGA16L Pull-up isn't active 【发布时间】:2020-03-17 16:03:35 【问题描述】:

我不想通过按钮获得 Atmega16L 的输入。理想情况下,我可以使用内部引体向上,所以我不必将它们连接到外部。

我已经把代码精简到最少:

void main(void) 

// SFIOR &= ~(1<<PUD);  // Turn off Pull-up disable
DDRD = 0xFF;    // Output PORT D
DDRA = 0x00;    // Input PORT A
PORTA = 0xFF;   // Pull-up on PORT A
_delay_ms(100); 
while (1) 

    if (PINA & (1<<PA1))    // Check if PA0 is High
        PORTD |= (1<<PD5);  // Set PD5 to High
    else
        PORTD &= ~(1<<PD5); // Set PD5 to Low


return;

我想,引脚 PD5 应该是高电平,因为 PA1 被内部上拉电阻拉高,设置在第 6 行。 但是不,当我运行代码时,引脚 PD5 为低电平,我必须将引脚 PA1 连接到 5V,以便在 PD5 上获得高信号。

简短的东西,看起来引体向上没有激活......

据我所知,如果尝试使用 SFIOR,但默认情况下禁用 PUD。

亲切的问候, 费利克斯

编辑:请求的图像:

【问题讨论】:

评论不用于扩展讨论;这个对话是moved to chat。 确保项目的配置和编译包含与所选 CPU 相关的所有定义。您还可以提供已编译二进制文件的反汇编吗? (通常在.lss 文件中) 【参考方案1】:

在照片上,您没有连接 AVCC 电源(引脚 30,与板上的 11 号相对)。 AVCC 为 ADC 和端口 A 供电。它应始终直接或通过噪声滤波器连接到 VCC,但绝不能悬空。

VCC 和 AVCC 之间的差异不得超过 0.3 V

请阅读datasheet第5页的pin描述

【讨论】:

以上是关于ATMEGA16L 上拉未激活的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 将 PCM S16 LE (s16l) 转换为 GSM610

新的 ATMEGA1281 和 avrdude

atmega328p 单片机里面有自带蜂鸣器吗

ATmega128:加减 16 位数字(汇编)

Arduino生成ATmega8的运行程序并下载

ATMEGA32 UART 通信