C++ 在AVR ATmega1280端口F和端口K上启用数字输入缓冲区
我试图使用ATmega1280的C++ 在AVR ATmega1280端口F和端口K上启用数字输入缓冲区,c++,c,avr,atmega,avr-gcc,C++,C,Avr,Atmega,Avr Gcc,我试图使用ATmega1280的PORTF和PORTK(两个连接到ADC)作为数字输入,但是PINK和PINF始终包含0x00。这似乎是仅将这些端口配置为模拟输入并禁用数字输入缓冲区时的预期行为,但实际上我做的是相反的,将两个ADCSRx寄存器设置为0x00,ACSR设置为0x80(模拟比较器禁用,即使我认为这不会影响数字输入)和每个DIDRx到0x00 通过PORTx启用内部上拉不会影响PINx寄存器 我还缺少什么东西来启用它们吗?我在数据表中搜索了很多,但找不到任何其他有帮助的东西 这是当前
PORTF
和PORTK
(两个连接到ADC)作为数字输入,但是PINK
和PINF
始终包含0x00
。这似乎是仅将这些端口配置为模拟输入并禁用数字输入缓冲区时的预期行为,但实际上我做的是相反的,将两个ADCSRx
寄存器设置为0x00
,ACSR
设置为0x80
(模拟比较器禁用,即使我认为这不会影响数字输入)和每个DIDRx
到0x00
通过PORTx
启用内部上拉不会影响PINx
寄存器
我还缺少什么东西来启用它们吗?我在数据表中搜索了很多,但找不到任何其他有帮助的东西
这是当前寄存器配置的一个片段,之后我不断读取PINx
寄存器并将它们打印到串行。这是当前在MCU上运行的唯一东西(FreeRTOS调度程序除外)
ADCSRA=0x00;
ADCSRB=0x00;
ACSR=0b10000000;
DIDR0=0x00;
DIDR1=0x00;
DIDR2=0x00;
DDRK=0x00;
DDRF=0x00;
读取PINF
和PINK
不需要任何特殊功能。如果输入保持浮动(未连接),通常只需启用上拉功能(DDRF=0;DDRK=0;PORTF=0xFF;PORTK=0xFF;
)就足够了。能否提供完整代码(如何读取寄存器并输出其值)还有连接示意图?这正是我所期望的,如果我在没有FreeRTOS的程序中读取这些寄存器,那么我正在使用的端口中一定有某种东西(feilipu/avrfreertos)这导致了这种行为,我将检查它的来源或在它的gh中打开一个问题。这些端口通过一个上拉电阻器连接到光隔离器。这是我的测试代码btw