Не стартует скетч, пока не запустишь Монитор Порта

Kitam1n
Offline
Зарегистрирован: 11.04.2012

Всем привет! Помогите, может кто сталкивался?

Такая проблема: Arduino как бы не стартует после включения и не начинает выполняться любой записанный скетч, пока не запустишь Монитор Порта.

Скетч может быть абсолютно любым. Включать Arduino можно как отдельным питанием, так и через USB. Притом до включения МонитораПорта 13-й светодиод как то странно мигает. После запуска Монитора Порта все работает как положено.

Вот например на видео, записан простейший скетч для мигания светодиодом на 10-м пине, подключаем USB, начинает странно мигать 13-й светодиод, как только запускаю МониторПорта сразу же Arduino как бы стартует и начинает выполнятся скетч и все как надо….

http://youtu.be/2MgUNnR9b54

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

может лучше код свой покажете? а то может у вас в кодет стоит ожидание когда сериал появится

maksim
Offline
Зарегистрирован: 12.02.2012

Тут два варианта:
1. С компа сыпится какой-то мусор в порт.
2. Глючит ATmega8U2.

Скорее всего именно второе. Либо ATmega8U2 сыпит мусор в сериал, либо ресетит МК.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

maksim пишет:

2. Глючит ATmega8U2.

Скорее всего именно второе. Либо ATmega8U2 сыпит мусор в сериал, либо ресетит МК.

а чем лечить? я как бы пока с таким не сталкивался...

Kitam1n
Offline
Зарегистрирован: 11.04.2012

Любой код не стартует пока Сириал не откроешь, даже самый простой, вот на видео этот код:

int led = 10;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

Я брал у друзей такуюже Ардуино Uno, менял чип и все становилось нормально. Что может быть с чипом? Как проверить? Может ботлоадер отличаться?

Kitam1n
Offline
Зарегистрирован: 11.04.2012

maksim пишет:

1. С компа сыпится какой-то мусор в порт.

Подключал от батарейки и от внешнего блока питания, такая же фигня.

maksim пишет:

2. Глючит ATmega8U2.

Скорее всего именно второе. Либо ATmega8U2 сыпит мусор в сериал, либо ресетит МК.

Как бы в этом удастовериться? Мусор это или ресет? И почему так странно мигает 13-светодиод, как будто специально так зашито?

maksim
Offline
Зарегистрирован: 12.02.2012

Соедините проводом ресет и +5V, но не в коем случае не нажимайте кнопку ресета пока есть это соединение. Так вы проверите ресетит ATmega8U2 МК или нет.

Kitam1n
Offline
Зарегистрирован: 11.04.2012

maksim пишет:

Соедините проводом ресет и +5V, но не в коем случае не нажимайте кнопку ресета пока есть это соединение. Так вы проверите ресетит ATmega8U2 МК или нет.

AAAAAAAAA!!! заработало, теперь Arduino начинает выполнять скетч сразу как только питание подаю.

СПАСИБО!!! А то я уж думал выбрасывать. :)

ATmega8U2 это тот маленький чип который нужен для связи с USB? Только у меня похоже стоит ATmega16U2. Почему же она ресетит только эту ATmega328PU? Другие не ресетит :(

Как быть с перемычкой? Это временное решение придется все время ее ставить, а при закачке скетча снимать? Или можно дальше как-то полечить?

maksim
Offline
Зарегистрирован: 12.02.2012

Это только времено и оставлять так нельзя. Нужно выяснять почему так происходит. Для начала можно попробовать  прошить ATmega8U2.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А если, после того как заработала плата перемычку снять!

Что происходит? Продолжает работать или........

Ресет там может проходить только через кондёр от якобы  ДТРа ATmega8U2

Варианты такие:

1. Если кондёр уже не кондёр, а резистор- почим постоянный ресет.

2. А если  якобы  ДТРа ATmega8U2 гонит импульсы- попробовать их посмотреть осциллографом.

Или любым входом той-же платы, конечно поставив перемычку на ресет - но смотреть до кондёра.

(кондёр расположен над перемычкой RESET-EN), смотреть левый вывод

Kitam1n
Offline
Зарегистрирован: 11.04.2012

trembo пишет:

А если, после того как заработала плата перемычку снять!

Что происходит? Продолжает работать или........

Продолжает работать как положено.