Я использую ATtiny85 в качестве микроконтроллера. Я пытаюсь читать два входа со скоростью около 3 В каждый и выводить 5 В для каждого входа «on» (более 1 В). Я использую PINB0 & PINB1 для ввода и PINB3 & PINB4 для вывода. Проблема в том, что оба PINB0 & PINB1 включены, я получаю два выхода 5 В, но когда только один из них включен, я получаю только 2 В, я пытаюсь исправить это, поэтому я получаю 5 В выход.ATTiny85 цифровой выход «on» не может доставить 5 V
Вот мой код:
#inlude <avr/io.h>
#include <stdint.h>
int main(void)
{
// set pin 0 to input (pi signal 0)
DDRB &= ~(1 << PINB0);
PORTB &= 0 << PINB0;
// set pin 1 to input (pi signal 1)
DDRB &= ~(1 << PINB1);
PORTB &= 0 << PINB1;
//set pin 3 to output of 0
DDRB |= 1 << PINB3;
PORTB &= 0 << PINB3;
//set pin 4 to output of 1
DDRB |= 1 << PINB4;
PORTB &= 0 << PINB4;
while (1)
{
if (bit_is_clear(PINB, 0) && bit_is_clear(PINB, 1))
{
PORTB &= 0 << PINB3; //output zero volts
PORTB &= 0 << PINB4; //output zero volts
}
else if (bit_is_clear(PINB, 0) && !(bit_is_clear(PINB, 1)))
{
PORTB &= 0 << PINB3; //output zero volts
PORTB |= 1 << PINB4; //output 5 volts
}
else if (!(bit_is_clear(PINB, 0)) && bit_is_clear(PINB, 1))
{
PORTB |= 1 << PINB3; //output 5 volts
PORTB &= 0 << PINB4; //output zero volts
}
else
{
PORTB |= 1 << PINB3; //output 5 volts
PORTB |= 1 << PINB4; //output 5 volts
}
}
}
Где вы измеряете это напряжение? Во всяком случае, то, что вы делаете, вероятно, не имеет смысла. Вы не можете последовательно выводить выходы, и если вы поместите их параллельно, вы можете просто сделать необходимую логику в программном обеспечении и упростить до одного выхода. –
Это не проблема с программным обеспечением - вы не можете контролировать вывод уровня на выводе GPIO, он определяется (и более или менее равным) напряжением питания чипа. Поэтому это не является подходящим вопросом для SO. Вероятность заключается в том, что к какой-либо схеме эти выходы подключены, перетаскивая эти сигналы вниз (например, представляя слишком низкий и импеданс, и слишком много тока); что вы пытаетесь водить? – Clifford
@Clifford может показаться, что выход 2v, если код (непреднамеренно) делает PWM с соотношением 2: 3. –