Mega2560 Проблема с Serial
- Войдите на сайт для отправки комментариев
Ср, 27/03/2013 - 11:44
Подскажите, что делать с такой проблемой:
простейший скетч такого вида (Arduino 1.0.3)
void setup () { Serial.begin(9600); } void loop () { Serial.println(millis()); delay(300); }
с открытым монитором порта, нормально работает, но только некоторое время.. от 10 до ~60 минут..
после чего останавливается, индикатор TX загорается на постоянку и лечится только переподключением ардуины...
То же и при чтении com порта на delphi, с разными скоростями и настройками..
Это имеет отношение к проблеме с 8U2 ?
Добавте, кроме Serial.println еще что-то типа digitalWrite(13,!digitalRead(13)); (и в setup() его на выход настроить).
Что-бы по миганию диода было видно это "связь прерывается" или "сам контроллер повис".
Попробуйте с питанием поигратся. Если тестили при питании от USB - возмите внешний блок, если c внешним блоком - поробуйте от USB.
Если к дуине еще что-то подключено - отключите.
Попробуйте присмотретеся не совпадают ли зависы с включением/выключением какого-то пробкотрона (холодильник, микроволновка e.t.c)
Посмотрите лечится ли не "переподключением", а "нажатием Reset на дуине".
Ну и если "ничего не поможет", то в качестве "костылей" можно предложить погуглить про watchDog (что-бы контроллер сам перегружался если завис). Хотя с ним тоже на дуине бывают нюансы (некоторые бутлоадеры содержат баги при работе с ним и после ресте собакой - уводят дуину в бесконечный ребут, поищите поиском - обсуждалось это тут).
Reset точно не помогает...
Сама ардуина не виснет - (боевой скетч гораздо более насыщенный :) - останавливается только serial.
Остальное буду пробовать, спасибо...
Попробуйте еще с другим компьютером. Что-бы понять "со стороны дуины" или со стороны компа проблемы (может софт какой-то пакостит, особенно блютусно-телефонные таким грешат).
Можно еще попробовать проводочками соеденить Serial и Serial1 проводочками, в loop() читать Serial1 и если там что-то есть - мигать диодом.
Там мы сможем увидеть отсылает каменть что-то на 8U2 или перестал вещать в эфир.
И самое банальное: электроника - наука о контактах. Протрите спиртом, возмите другой USB кабель и т.п.
В смысле, TX0->RX1, RX0->TX1 ?
Можно еще попробовать проводочками соеденить Serial и Serial1 проводочками, в loop() читать Serial1 и если там что-то есть - мигать диодом.
Там мы сможем увидеть отсылает каменть что-то на 8U2 или перестал вещать в эфир.
В смысле, TX0->RX1, RX0->TX1 ?
Да. В принципе даже TX0->RX1 хватит. Вам же нужно контролировать только отсылку.
И в loop что-то типа
OK. Спасибо.
Вечером буду пробовать..
Проблема в том, что периодичность до 60 мин. не позволяет все это быстро проверить.. (
Проблема в том, что периодичность до 60 мин. не позволяет все это быстро проверить.. (
Да это понятно :) А вообще "плавающие проблемы" - самые трудные. Гораздо легче когда "вообще не работает".
В общем, что то не так с моим рабочим компом..
На старом ноутбуке все заработало. На рабочем, на свежеустановленной xp sp3 опять не хочет..
Буду переходить на обмен по ethernet-у.. )
Можете еще попробоват через какой-нибудь USB-хаб. ВОзможно с автономным питанием. И покопайтесь в настройках питания (и в биосе и девай-менеджере). Может какая-то оптимизацая шалит и решает что usb не используется и его пора отключить (например если из него потребляется слишком мало тока или еще что-то).
К сожалению, уже не смогу сказать, что именно повлияло, но в итоге устойчиво заработало на 1200 бод )
Для обмена вполне достаточно... Спасибо за помощь.
К сожалению, уже не смогу сказать, что именно повлияло, но в итоге устойчиво заработало на 1200 бод )
Для обмена вполне достаточно... Спасибо за помощь.
Ну это больше всего похоже именно на железные проблемы. Наводки (где-то USB кабель рядом с блоком питания проходит, возможно внутри корпуса). Попробуйте экранированный взять. Или все-таки контакт/питание USB шины полохой (опять-таки, может косичка от USB плохо в материнку вставлена и т.п.)