Последовательный монитор перестает работать при использовании 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");
}

[много тестов]

Любая помощь будет оценена, Томас

, 👍1

Обсуждение

Вероятно, вы что-то закорачиваете или поджариваете. Что именно вы прикрепили к контакту 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


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