мусор на пинах с прерыванием
- Войдите на сайт для отправки комментариев
Вс, 02/12/2018 - 10:39
добрый день.
первый раз на форуме, потому на всякий случай пишу сюда.
Плата - ардуино уно.
Пытался загрузить скетч, в котором используются прерывания. Он не заработал. Расставил ловушки по тексту и после разбирательств понял, что на пинах 2 и 3 я вижу постоянную пульсацию.
Написал простой тестовый скетч, который просто читает состояние пинов вы выводит на экран. Тут видно, что именно два пина, которые поддерживают прерывания - шумят.
Вопрос в том, это брак или я чего-то не понимаю? Может их как-то притягивать нужно к земле?
Если нужно, то подскажите, как правильно.
void setup() { pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); Serial.begin(115200); } void loop() { if (digitalRead(2) == HIGH) Serial.print(1); else Serial.print(0); Serial.print(" "); if (digitalRead(3) == HIGH) Serial.print(1); else Serial.print(0); Serial.print(" "); if (digitalRead(4) == HIGH) Serial.print(1); else Serial.print(0); Serial.print(" "); if (digitalRead(5) == HIGH) Serial.print(1); else Serial.print(0); Serial.print(" "); if (digitalRead(6) == HIGH) Serial.print(1); else Serial.print(0); Serial.print(" "); if (digitalRead(7) == HIGH) Serial.print(1); else Serial.print(0); Serial.print(" "); if (digitalRead(8) == HIGH) Serial.print(1); else Serial.print(0); Serial.println(" "); }
0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1000 - 10000 пик на вход повесьте....
Нужно притягивать. Через использование INPUT_PULLUP вместо INPUT, например.
Так и должно быть.
Выходы микроконтроллера могут иметь одно из трех состояний:
- соединенные с землей,
- соединенные с питанием,
- ни с чем не соединенные.
В последнем случае, очевидно, напряжение на них неопределено и может быть каким угодно, но входные цепи "округляют" его до логического нуля или единицы.
Нужно притягивать к земле или не нужно - зависит от цели использования. Но внутренним резистором (в микроконтроллерах AVR) можно подтянуть только к питанию. К земле - только внешним.