Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在AVR ATmega1280端口F和端口K上启用数字输入缓冲区_C++_C_Avr_Atmega_Avr Gcc - Fatal编程技术网

C++ 在AVR ATmega1280端口F和端口K上启用数字输入缓冲区

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寄存器 我还缺少什么东西来启用它们吗?我在数据表中搜索了很多,但找不到任何其他有帮助的东西 这是当前

我试图使用ATmega1280的
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