Последовательный монитор перестает работать при использовании pinMode
У меня много проблем с моим недавним скетчем Arduino. Мне нужно сбросить IC, установив сначала высокий, а затем низкий контакт. Я также использую последовательный монитор для некоторого тестирования, но как только я пытаюсь сделать Serial.print, ничего не появляется. Мой Arduino также находится на пользовательской печатной плате, где D7 подключен к штифту сброса IC (MAX3421), а также к штифту сброса Arduino. Чтобы попытаться прояснить мою проблему, я опубликую некоторый код и вывод последовательного монитора ниже:
void setup()
{
Serial.begin(9600);
pinMode(7, OUTPUT);
}
void loop()
{
Serial.println("TEST");
}
[ничего в последовательном мониторе]
void setup()
{
Serial.begin(9600);
//pinMode(7, OUTPUT);
}
void loop()
{
Serial.println("TEST");
}
[много тестов]
Любая помощь будет оценена, Томас
@Vosem Media, 👍1
Обсуждение1 ответ
Лучший ответ:
Моя проблема заключалась в том, что вывод 7 был подключен к выводу сброса на Arduino, а это означало, что каждый раз, когда он был установлен на выход, Arduino сбрасывался. Вы можете увидеть это здесь:
void setup()
{
Serial.begin(9600);
Serial.println("a");
delay(100);
pinMode(7, OUTPUT);
}
void loop()
{
Serial.println("test");
}
который выводит поток a, разделенный 100 мс (плюс бит).
Я добавил больше информации к вопросу, и не сомневаюсь, что у других была такая же проблема, поэтому я сохраню вопрос/решение., @Vosem Media
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
- Arduino как USB HID
- Serial1' was not declared in this scope
- Очень простая операция Arduino Uno Serial.readString()
- AT-команда не отвечает на последовательный монитор
Вероятно, вы что-то закорачиваете или поджариваете. Что именно вы прикрепили к контакту 7?, @timemage
Я использую одну из своих пользовательских печатных плат с Arduino и MAX3421 для взаимодействия с периферийными устройствами USB. Вывод 7 подключен к выводу сброса MAX3421, который теперь я смотрю, также подключен к выводу сброса Arduino. Я помню, как делал это, потому что перед запуском нужно было сбросить МАКСИМУМ. Делает ли это короткое замыкание сброса MAXs с помощью сброса Arduino?, @Vosem Media
поместите еще один serial.print() в setup() ... таким образом, вы можете определить, сбрасывается ли arduino, @jsotola
Я поставил `Serial.println("x"); "перед " pinMode", и он не напечатал ничего, что вызывает недоумение, @Vosem Media
- Это происходит при коротком замыкании сброса MAXs с помощью сброса Arduino? Одним словом, да., @timemage
@VosemMedia Вам также нужно будет вставить короткую задержку после печати. Данные отправляются через прерывания после вызова печати. Таким образом, вы сбрасываете Arduino до того, как интерфейс UART успевает отправить данные, @chrisl
Ах да, я добавил короткую задержку, и теперь только x печатается снова и снова. Теперь мне интересно, почему мой код не работает, так как shorting MAX Reset и Arduino Reset должны работать, хотя я все еще получаю то же самое " OSC не запустился.` ошибка., @Vosem Media
Ладно, это очень странно, по какой-то причине он только начал работать, потом я все отключил и снова включил, и он больше не работает., @Vosem Media
Это может показаться немного тупым, но понимаете ли вы, что делает вывод СБРОСА на UNO?, @timemage
Насколько я понимаю, он повторно выполняет текущую программу, хотя это может быть неверно, просто по моему опыту это то, что он делает, @Vosem Media
Кроме того, я исправил свою главную проблему, которая заключалась в том, что МАКС не получал достаточно энергии от USB-заголовка, поэтому я представил батарею 9 В, которая все это отсортировала. Я хотел бы больше понять контакт сброса, но если вы не думаете, что это входит в рамки этого вопроса, не волнуйтесь :), @Vosem Media
Обычно это не предназначено для обсуждения, так что это будет одноразовый комментарий к этому вопросу: когда сброс активен (низкий), 328P электрически отключается от цепи и выполнение останавливается. Когда он выходит из СБРОСА, он по существу перезагружается, как компьютер. Из-за того, что делает сам чип и что делает стартовый код, вы функционально (упрощая) потеряли все предыдущее состояние. Если вы действительно хотите знать об этом, вы хотите прочитать в [ATmega328P](https://www.microchip.com/wwwproducts/en/ATMEGA328P) техническое описание., @timemage
Я ценю это объяснение, спасибо, @Vosem Media