使用" Mighty Mini"使用Atmega1284p处理器的板,在Raspbian上使用Arduino IDE 2:1.0.5,使用Mighty Mini" board"已安装文件。
我在输入上有一些不稳定的行为,所以我用一个'范围来检查它,似乎虽然我没有启用内部上拉,但我在输入引脚上出现+ 3.3v。我需要引脚浮动。
我进行了一项简单的测试,以确保它不是编码问题:
void setup() {
pinMode(8, INPUT);
}
void loop() {
}
根据文档,这应该将引脚置于高阻态。但即使我将1K电阻连接到地,示波器也会在引脚上显示~3.2伏。所以引脚肯定是被驱动的。
我决定尝试直接访问寄存器,例如:
void setup() {
DDRA = 0;
DDRB = 0;
DDRC = 0;
DDRD = 0;
PORTA = 0;
PORTB = 0;
PORTC = 0;
PORTD = 0;
}
void loop() {
}
这还没有工作......引脚上仍然是+ 3.3v。 我也试过不同的针脚。
我认为可能Mighty Mini的电路板定义可能会使寄存器定义错误..但它在其他任何方面都能完美运行..我的实际应用程序使用SPI,I2C,Serial,Tone ..很多硬件I / O ..除了这个问题它完美地工作..所以当其他一切似乎正确运行时,我犹豫责备库。
谢谢!
答案 0 :(得分:1)
看来你的某处有布线问题,或者你的测量结果错了。 ATmega的内部上拉电阻为10k,因此如果通过1k电阻将引脚连接到GND,则会得到一个分压器,输出电压为0.3V。
我的建议:仔细检查所有连接。使用blinky示例代码测试引脚作为输出。
答案 1 :(得分:0)
将引脚配置为输入时,可以通过向引脚写入HIGH(启用)或LOW(禁用)来启用或禁用内部上拉:
pinMode(8, INPUT);
digitalWrite(8, LOW); // disable internal pullup
Arduino文档https://www.arduino.cc/en/Reference/DigitalWrite声明:
如果引脚配置为INPUT,则digitalWrite()将启用 (HIGH)或禁用(LOW)输入引脚上的内部上拉。它是 建议将pinMode()设置为INPUT_PULLUP以启用 内部上拉电阻。有关更多信息,请参阅数字引脚教程 信息。