Mega2560 Проблема с Serial

ak74
Offline
Зарегистрирован: 27.03.2013

Подскажите, что делать с такой проблемой:

простейший скетч такого вида (Arduino 1.0.3)

void setup () {
    Serial.begin(9600);
}

void loop () {
    Serial.println(millis());
    delay(300);
}

с открытым монитором порта, нормально работает, но только некоторое время.. от 10 до ~60 минут..

после чего останавливается, индикатор TX загорается на постоянку и лечится только переподключением ардуины...

То же и при чтении com порта на delphi, с разными скоростями и настройками..  

Это имеет отношение к проблеме с 8U2 ?

leshak
Offline
Зарегистрирован: 29.09.2011

Добавте, кроме Serial.println еще что-то типа digitalWrite(13,!digitalRead(13));  (и в setup() его на выход настроить).

Что-бы по миганию диода было видно это "связь прерывается" или "сам контроллер повис".

Попробуйте с питанием поигратся. Если тестили при питании от USB - возмите внешний блок, если c внешним блоком - поробуйте от USB.

Если к дуине еще что-то подключено - отключите.

Попробуйте присмотретеся не совпадают ли зависы с включением/выключением какого-то пробкотрона (холодильник, микроволновка e.t.c)

Посмотрите лечится ли не "переподключением", а "нажатием Reset на дуине".

Ну и если "ничего не поможет", то в качестве "костылей" можно предложить погуглить про watchDog  (что-бы контроллер сам перегружался если завис). Хотя с ним тоже на дуине бывают нюансы (некоторые бутлоадеры содержат баги при работе с ним и после ресте собакой - уводят дуину в бесконечный ребут, поищите поиском - обсуждалось это тут).

ak74
Offline
Зарегистрирован: 27.03.2013

Reset точно не помогает...

Сама ардуина не виснет - (боевой скетч гораздо более насыщенный :) - останавливается только serial.  

Остальное буду пробовать, спасибо...

 

leshak
Offline
Зарегистрирован: 29.09.2011

Попробуйте еще с другим компьютером. Что-бы понять "со стороны дуины" или со стороны компа проблемы (может софт какой-то пакостит, особенно блютусно-телефонные таким грешат).

Можно еще попробовать проводочками соеденить Serial и Serial1 проводочками, в loop() читать Serial1 и если там что-то есть - мигать диодом.

Там мы сможем увидеть отсылает каменть что-то на 8U2 или перестал вещать в эфир.

leshak
Offline
Зарегистрирован: 29.09.2011

И самое банальное: электроника - наука о контактах. Протрите спиртом, возмите другой USB кабель и т.п.

ak74
Offline
Зарегистрирован: 27.03.2013

В смысле, TX0->RX1, RX0->TX1 ?

leshak пишет:

Можно еще попробовать проводочками соеденить Serial и Serial1 проводочками, в loop() читать Serial1 и если там что-то есть - мигать диодом.

Там мы сможем увидеть отсылает каменть что-то на 8U2 или перестал вещать в эфир.

leshak
Offline
Зарегистрирован: 29.09.2011

ak74 пишет:

В смысле, TX0->RX1, RX0->TX1 ?

 

Да. В принципе даже TX0->RX1 хватит. Вам же нужно контролировать только отсылку.

И в loop что-то типа

void loop(){
  ....

   if(Serial1.available()){

     digitalWrite(13,!digitalRead(13));
     while(Serial1.available())Serial1.read();// очищаем входной буффер
  }
}
ak74
Offline
Зарегистрирован: 27.03.2013

OK. Спасибо.

Вечером буду пробовать..

Проблема в том, что периодичность до 60 мин. не позволяет все это быстро проверить.. (

 

leshak
Offline
Зарегистрирован: 29.09.2011

ak74 пишет:

Проблема в том, что периодичность до 60 мин. не позволяет все это быстро проверить.. (

Да это понятно :)  А вообще "плавающие проблемы" - самые трудные. Гораздо легче когда "вообще не работает".

ak74
Offline
Зарегистрирован: 27.03.2013

В общем, что то не так с моим рабочим компом..

На старом ноутбуке все заработало. На рабочем, на свежеустановленной xp sp3 опять не хочет..

Буду переходить на обмен по ethernet-у.. )

 

leshak
Offline
Зарегистрирован: 29.09.2011

Можете еще попробоват через какой-нибудь USB-хаб. ВОзможно с автономным питанием. И покопайтесь в настройках питания (и в биосе и девай-менеджере). Может какая-то оптимизацая шалит и решает что usb не используется и его пора отключить (например если из него потребляется слишком мало тока или еще что-то).

ak74
Offline
Зарегистрирован: 27.03.2013

К сожалению, уже не смогу сказать, что именно повлияло, но в итоге устойчиво заработало на 1200 бод )

Для обмена вполне достаточно... Спасибо за помощь.

leshak
Offline
Зарегистрирован: 29.09.2011

ak74 пишет:

К сожалению, уже не смогу сказать, что именно повлияло, но в итоге устойчиво заработало на 1200 бод )

Для обмена вполне достаточно... Спасибо за помощь.

Ну это больше всего похоже именно на железные проблемы. Наводки (где-то USB кабель рядом с блоком питания проходит, возможно внутри корпуса). Попробуйте экранированный взять. Или все-таки контакт/питание USB шины полохой  (опять-таки, может косичка от USB плохо в материнку вставлена и т.п.)