Самое странное происходит с автономной платой Arduino, которую я спроектировал и изготовил. Плата (схемы которой приведены ниже) имеет следующие особенности:
- Он оснащен ATmega328P с регулятором напряжения 5 В и обычной схемой, когда он настроен как автономный контроллер.
- Он управляет табло с несколькими цифрами на 7 дисплеях, соединенными через разъемы справа (от JP1 до JP12).
- Он имеет кнопки курсора, декодированные с использованием лестницы напряжения через ANALOG_0 (A0).
- У этого есть Часы Реального времени, чтобы держать время, когда это выключено.
- Имеет модуль радиоприемника.
- Он имеет заголовок UART (JP17), поэтому я могу программировать плату, используя последовательный порт.
- Динамик подключен к цифровому контакту 3 (D3).
Я загружаю наброски на него, используя адаптер RS232-TTL, который я также построил (схемы также ниже) и кабель Serial-to-USB. При программировании плата ведет себя как плата Северино .
Странно то, что, когда я загружаю скетч, процесс приостанавливается в середине, а затем динамик начинает непрерывно издавать звуковые сигналы. Пауза со следующими сообщениями avrdude:
avrdude: версия 5.11, составлена 2 сентября 2011 года в 19:38:36. Copyright (c) 2000-2005 Брайан Дин, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM1
Using Programmer : arduino
Overriding Baud Rate : 115200
Когда я нажимаю кнопку сброса на плате, avrdude продолжает выводить свои сообщения (например, ниже), звуковой сигнал прекращается, загрузка продолжается, и эскиз успешно загружается на доску.
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
... messages and upload continue and completes successfully.
У меня здесь нет других сообщений, но я надеюсь, что вы поняли идею.
Итак, мои вопросы:
- Что делает процесс загрузки паузой?
- Почему зуммер подает звуковой сигнал, когда процесс приостанавливается?
Ответы:
Ну, учитывая все комментарии, сделанные по вашему вопросу, это определенно сложно. Возможно, вы захотите попробовать добавить разделительный конденсатор, как предложено @jfpoilpret, хотя ваши схемы выглядят хорошо для меня… (возможно, попросите пересмотреть его на EE SE ).
Я бы также посоветовал вам скопировать
avrdude
команду из вывода Arduino IDE (вы найдете ее вверху) и запустить ее в командной оболочке с более низким битрейтом:Чем выше
-B
значение, тем ниже ваш битрейт. и-b
к правильной скорости передачи данных для вашего загрузчика (вы уверены, что это 115200? чаще встречается 57600).Вы также правильно установили предохранители? Вы также можете проверить значения предохранителей, чтобы увидеть, правильно ли настроены часы:
который выведет значения предохранителей. Затем, чтобы сделать значения читабельными, поместите значения в нижней части формы на сайте калькулятора предохранителей , выбрав
Atmega328P
MCU из выпадающего списка.Дважды проверьте, что:
Это происходит потому, что когда процессор не имеет настроенного выхода, значения в регистрах находятся в неопределенном и непредсказуемом состоянии. Это означает, что обычно он сохраняет последнее значение, которое он имел перед сбросом, или изменил состояние из-за некоторой электростатической странности, или дает какой-то странный выход ШИМ из-за влияния тактовых импульсов поблизости.
В общем, когда вы загружаете свой код, происходит что-то не так, и это неправильно влияет на звук. Я не стал бы сильно беспокоиться об этом, но больше о причине приостановки.
К сожалению, у меня нет прямого ответа для вас, но в лучшем случае вы должны исследовать несколько путей. НТН
источник
Я наконец нашел причину проблемы: сигнал сброса с контакта 4 (DTR - Data Terminal Ready) на разъеме DB9-Female подскочил до 10 В, а затем перешел на 0 В и запускал программирование высокого напряжения на ATmega. Ниже приведен прицел, показывающий ситуацию:
Желтая кривая - это
DTR
сигнал, а зеленая - этоRESET
сигнал на ATmega.В соответствии с примечанием к приложению Atmel AVR042: Замечания по проектированию аппаратного обеспечения AVR следует добавить диод ESD между ATmega
RESET
иVcc
не дать сигналу сброса вызвать режим программирования высокого напряжения, например:После добавления такого маленького сигнального диода (1N4148), как рекомендовано в приложении, я решил проблему. См. Ниже снимок, сделанный после добавления диода.
Теперь пик 10В исчез.
Это было сложно !! Но я никогда не мог найти то, что было неправильно без исследований и правильных инструментов. Деньги на сферу - это хорошо потраченные деньги!
источник
Я не уверен, но проблема также может быть связана с функцией автоматического сброса платы преобразователя.
Я скопировал дизайн платы преобразователя из Arduino Severino, и в соответствии с его руководством для работы функции автосброса должна быть установлена скорость последовательной связи 19 200 бит / с.
Ну, я использую 115 200, так что это должно быть проблемой.
источник