Причина, по которой сигнал не возвращается на НИЗКИЙ уровень
Я написал простой эскиз Arduino, который будет генерировать тактовый сигнал.
Вот код:
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(8,HIGH);
delayMicroseconds(500);
digitalWrite(8,LOW);
delayMicroseconds(500);
}
А именно, контакт 8 Arduino Uno периодически устанавливается в положение HIGH и LOW.
Выходные данные, которые я получаю для трех разных частот, следующие:
Мой вопрос: почему спадающий фронт не такой острый, как нарастающий? Как можно заметить, на высоких частотах сигнал все-таки не переходит в НИЗКИЙ уровень.
@balboa, 👍0
Обсуждение1 ответ
Лучший ответ:
Вывод не настроен как ВЫХОД.
По умолчанию все контакты GPIO практически любого микроконтроллера настроены как входы после сброса. Это предотвращает «борьбу» чипа с внешним устройством, которое может управлять любым из этих контактов, прежде чем прошивка сможет правильно настроить GPIO.
В микроконтроллере, используемом в Arduino, выходная защелка управляет состоянием внутреннего подтягивающего резистора, когда контакт настроен как вход. Ваш код просто включал и отключал этот резистор. Когда вы устанавливаете на вывод низкий уровень, он размыкается, и вы видите медленное снижение напряжения на щупе осциллографа.
- NodeMCU - Vin контакт как выход 5V?
- Использовать все контакты как цифровые входы/выходы
- Что такое ICSP pin (разъём)?
- Сколько датчиков может поддерживать один модуль Arduino?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Какой тип разъема использует система GROVE?
- Неиспользуемые контакты в Arduino L293D motor shield?
- Как выбрать вывод передачи в библиотеке IRremote для Arduino Uno?
Я не знаю деталей аппаратного обеспечения Arduino, но разве вам не нужно явно настроить вывод 8 как выход в вашей функции
setup()
? Похоже, вы просто включаете/отключаете подтягивание по умолчанию., @Dave Tweed@DaveTweed Нет, похоже, проблема в том, что ОП не объявил контакт 8 как выходной., @Long Pham
@DaveTweed Действительно, объявление контакта выходным привело к появлению красивой прямоугольной волны. Не могли бы вы рассказать о причинах этого (например, что вы подразумеваете под включением/отключением подтягивания по умолчанию), и это будет ответом на этот вопрос., @balboa