Pro Mini не работает UART
- Войдите на сайт для отправки комментариев
Доброго времени суток!
Приобрел клон Arduino Pro Mini 8МГц 3.3В (http://www.ebay.com/itm/200914924969?ssPageName=STRK:MEWNX:IT&_trksid=p3...). При попытке прошить скетч на этапе загрузки hex avrdude выдает ошибку (avrdude: stk500_recv(): programmer is not responding). При этом пробовал разные USB to UART на разных чипах (как с линией сброса DTR, так и без нее - вручную жал reset).
Далее попробовал прошить через ISP с помощью другой ардуины. Все прошло отлично - скетч залился и выполняется. Но вот, если подключиться к UART, то там тишина - никаких отладочных сообщений нет.
Замена bootloadera (пробовал optiboot) также ни к чему не привела - шьется только через ISP, UART молчит.
Прошу помощи. Что можно предпринять?
Сначала хорошо бы разобраться с переходником, с помощью которого Вы подключаете ProMini к USB. Тут такие темы есть.
Переходники вот такие - Foca V2.2 FT232RL (http://devicter.ru/goods/Foca-v2-1-FT232RL?mod_id=5749023) и PL2303HX (http://www.ebay.com/itm/PL2303HX-USB-To-RS232-TTL-Auto-Converter-Adapter...)
Оба рабочие. Проверено на других ардуинах - прошиваются и пишут/читают в порт без проблем.
>Arduino Pro Mini 8МГц 3.3В
А плату правильно выбрали при заливке, именно 8Мгц вариант указали? Именно Pro Mini?
>Далее попробовал прошить через ISP с помощью другой ардуины. Все прошло отлично
Тогда можно еще попробовать бутлоадер перепрошить. Через ISP. Но это "пробовать после всего стального".
>Arduino Pro Mini 8МГц 3.3В
А плату правильно выбрали при заливке, именно 8Мгц вариант указали? Именно Pro Mini?
>Далее попробовал прошить через ISP с помощью другой ардуины. Все прошло отлично
Тогда можно еще попробовать бутлоадер перепрошить. Через ISP. Но это "пробовать после всего стального".
Да, плату выбирал соответствующую. Пробовал и другие типы выбирать (pro mini 16MHz 5v), но ошибка та же avrdude: stk500_recv(): programmer is not responding. При начале загрузки скетча светодиод TX на переходнике мигает, как положено, а вот RX "молчит", т.е. нет ответа от ардуины.
А какие варианты подразумеваются под "пробовать после всего стального"?
Насчет бутлоадера. Я уже пробовал прошить бутлоадер от optiboot (optiboot-v5.0a, optiboot_atmega328_pro_8MHz.hex). Загрузчик записывается без проблем. Но при попытке загрузить скетч (плата при этом выбирается соответствующая [Optiboot] Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328) получаем тот же самый результат - programmer is not responding.
А камушек у вас 328 или 168?
>А какие варианты подразумеваются под "пробовать после всего стального"?
Ну, "все остальное что прийдет в голову". Я бы, например, пытался выяснить проблема, все-таки в "связи" или бутлоадере.
Скажем, раз через ISP скетчи заливаются.
Если влить
То
1. Диод мигает?
2. "Hello from.." видно?
3. При открытии Serial монитора перезагрузка происходит?
А камушек у вас 328 или 168?
ATmega328. Это четко видно на корпусе микросхемы.
Возможно, продавец перепутал и выслал вариант 5В, а не 3.3В. Но как это подтвердить, я не знаю. На кварце что-либо различить нереально - очень мелкий.
Я бы порробовал проверить не перепутаны ли RX и TX ( если эхо в терминале приходит)
А чтобы найти где кто слегка поправил leshak , пусть непрерывно шлёт в порт.
>А какие варианты подразумеваются под "пробовать после всего стального"?
Ну, "все остальное что прийдет в голову". Я бы, например, пытался выяснить проблема, все-таки в "связи" или бутлоадере.
Скажем, раз через ISP скетчи заливаются.
Если влить
То
1. Диод мигает?
2. "Hello from.." видно?
3. При открытии Serial монитора перезагрузка происходит?
Похожий скетч пробовал.
1. Диод мигает, как положено (менял значение delay, диод реагировал адекватно).
2. Ничего не видно. Ни того, что в setup указано, ни в loop (туда тоже вставлял serial.print для проверки).
3. Вот на этот момент не обратил внимания. Единственное могу сказать, что при reset платы (кнопкой) LED13 перемигивает (это, вроде бы, так и должно быть при старте бутлоадера).
Для проверки работоспособности камушка также заливал скетч тестирования серво-приводов. Сервы крутятся как надо. В serial по-прежнему тишина.
Я бы порробовал проверить не перепутаны ли RX и TX ( если эхо в терминале приходит)
А чтобы найти где кто слегка поправил leshak , пусть непрерывно шлёт в порт.
Менять местами RX и TX я пробовал. Несмотря на то, что подключены они были строго согласно обозначениям на плате (подумал, может китайцы напутали с разводкой). Результат все тот же - нулевой. :(
2. Ничего не видно. Ни того, что в setup указано, ни в loop (туда тоже вставлял serial.print для проверки).
Скорость порта правильную выставляли? Если да, то это может быть признаком. что "влит не тот бутлоадер, или фьюзы не те".
Отсюда происходит "разнобой" по скорости Serial. Ну и естественно "ардуина не слышит комп" (и наоборот).
Попробуйте влить мой скетч. А потом по часам посмотреть, какая получается скорость мигания диодом? Должен "пол секунды горит, пол не горит". Сверх-точность не нужна. Если "что-то не так", то моргание будет отличатся по скорости в разы. Или гореть будет по целой секунде. Или наоборот, мигать в два раза чаще.
Менять местами RX и TX я пробовал. Несмотря на то, что подключены они были строго согласно обозначениям на плате (подумал, может китайцы напутали с разводкой). Результат все тот же - нулевой. :(
А вот тут, к сожалению никогда нельзя сказать "как же правильно". Не угадаешь в каком смысле китайцы подписали плату. Иногда RX у них означает "нужно подключать к RX-су ардуины". А иногда это имеет смысл "это RX переходника". Тогда, естественно его нужно подключать к TX-су дуины.
2. Ничего не видно. Ни того, что в setup указано, ни в loop (туда тоже вставлял serial.print для проверки).
Скорость порта правильную выставляли? Если да, то это может быть признаком. что "влит не тот бутлоадер, или фьюзы не те".
Отсюда происходит "разнобой" по скорости Serial. Ну и естественно "ардуина не слышит комп" (и наоборот).
Попробуйте влить мой скетч. А потом по часам посмотреть, какая получается скорость мигания диодом? Должен "пол секунды горит, пол не горит". Сверх-точность не нужна. Если "что-то не так", то моргание будет отличатся по скорости в разы. Или гореть будет по целой секунде. Или наоборот, мигать в два раза чаще.
Скорость в мониторе порта ставил в строгом соответствии с вызовом Serial.begin(9600) в setup ().
Скетч обязательно попробую сегодня вечером. Посмотрю, что с периодом мигания светодиода.
Параллельно ищу решение по этой проблеме на англоязычном форуме. Наткнулся на вариант - выставить в мониторе половинную скорость от указанной. Тоже, пожалуй, проверю.
Параллельно ищу решение по этой проблеме на англоязычном форуме. Наткнулся на вариант - выставить в мониторе половинную скорость от указанной. Тоже, пожалуй, проверю.
Можно попробовать. Это то что я бы вам сказал, если бы вы сообщили что "диод мигает в два раза медленее чем положено" :)
Это два симпотома одной и той же причины.
Но "половинная скорость" - это только "что-бы проверить подозрение". Но никак не "решение проблемы".
Параллельно ищу решение по этой проблеме на англоязычном форуме. Наткнулся на вариант - выставить в мониторе половинную скорость от указанной. Тоже, пожалуй, проверю.
Можно попробовать. Это то что я бы вам сказал, если бы вы сообщили что "диод мигает в два раза медленее чем положено" :)
Это два симпотома одной и той же причины.
Но "половинная скорость" - это только "что-бы проверить подозрение". Но никак не "решение проблемы".
Проверил Ваш скетч. Только изменил периоды (ставил 1, 2 и 5 сек), т.к. полсекунды не смог объективно оценить. :) Ардуина мигает в точности, как ей указано в скетче, т.е. секунду (и соответсвенно 2 или 5 сек) горит LED13, секунду не горит. Монитор порта при этом пустой - и на этапе setup, и в loop. При открытии serial монитора перезагрузка ардуины не происходит. На индикаторах TX и RX адаптера также никакой активности.
Смена скорости обмена в serial мониторе (ставил и в 2 раза меньше, и в 2 раза больше) также ни к чему не привела - тишина.
Так. А если мы на ардуине(!) замыкаем между собой D0 и D1, у нас возвращается обратно "эхом" все что мы послали в Serial Port?
>На индикаторах TX и RX адаптера также никакой активности.
А если. В loop(), добавить что-то типа "Serial.println("BLINK");", то же на индикаторах никакой активности?
Так. А если мы на ардуине(!) замыкаем между собой D0 и D1, у нас возвращается обратно "эхом" все что мы послали в Serial Port?
>На индикаторах TX и RX адаптера также никакой активности.
А если. В loop(), добавить что-то типа "Serial.println("BLINK");", то же на индикаторах никакой активности?
На данный момент залит следующий скетч.
При таком раскладе имеем полную тишину в serial мониторе и на индикаторах адаптера.
Если в serial мониторе (при незамкнутых на ардуине D0 и D1) отправить что-либо, то на адаптере моргает только TX, и в ответ ничего не приходит. Если замкнуть D0 и D1, то "эхом" возвращается все, что отправляем, при этом горят оба индикатора на адаптере.
А если "выкинуть все Serial". И "помигать" не D13, а D1. Будет на адаптере мигать RX?
(в мониторе мы точно ничего не увидим, но так хотя-бы узнаем доходит ли до адаптера, хотя-бы что-нибудь).
О... или лучше вот так попробуйте.
Убераете перемычку между D0/D1
и заливаете вот такой скетч
Возвращается "эхо"?
Эта таже самая "перемычка", только "програмная".
Вообщем, после предложения поморгать светодиодом на D1 ситуация стала немного проясняться. В скетче заменил пин 13 на 1, залил, результата ноль. Решил подцепить светодиод напрямую к пину камушка. И вот тут-то он замигал!
Аналогичную проверку сделал и для D0. В итоге на выводе платы ничего, а на пине камушка есть сигнал. Видимо, попалась бракованная печатная плата.
Ну уж совсем "на всякий случай".
Опишите, по этой картинке, на какие пины вы цеплялись
В виде "верхний ряд, такой-то по счета справа...".
Еще можете попробовать на каки-нибудь других пинах, с помощью SoftwareSerial послать "hello from arduino".
И еще... надеюсь землю переходника и дуины соеденить не забыли?
У меня плата не совсем такая, но не суть. Цеплял верхний ряд первый справа для D0 и верхний ряд второй справа для D1. Тоже самое проделывал, подключая адаптер к пинам второй и третий снизу на правой части платы. Общую землю, конечно, организовал. Чтоб уж наверняка, пробовал подключать к этим пинам не линии RX/TX адаптера, а просто светодиоды на макетке. Результат везде одинаковый - на пинах платы ничего, а на пинах камушка мигает.
SoftwareSerial опробовал на пинах 9 и 8. На отправку работает, на прием не проверял.
reset переходника подключен к GRN, а вывод BLK - свободен?
Да, именно так и подключал. По крайней мере аналогично, т.к. обозначения на плате другие.
У меня плата от Deek-Robot. Вот такая.
У нее не GRN, а DTR. Но сути это не меняет.
Проблема с UARTом была именно в качестве выполнения самой платы. Выяснил, что коряво сделана метализация в отверстиях RX и TX. Т.е. на одной стороне платы есть контакт с пинами камушка, а на другой уже нет. Перепаял 6-типиновый разъем для адаптера на другую сторону, и все завелось!
Следующая задача - это найти для pro mini 8MHz 3.3V бутлоадер, грамотно работающий со сторожевым таймером, и не уходящий в жестокий bootloop (состояние «crazy led»). Пока безуспешно. Буду благодарен, если кто поможет.
Следующая задача - это найти для pro mini 8MHz 3.3V бутлоадер, грамотно работающий со сторожевым таймером, и не уходящий в жестокий bootloop (состояние «crazy led»). Пока безуспешно. Буду благодарен, если кто поможет.
Теоретически, должен подходить optiboot от Uno. На Хабре была статья.
Добрый вечер,
столкнулся сегодня с похожей проблемой: Arduino pro mini ATmega 168, 8 MHz, 3.3V через USB-UART PL2303HX. Связка прекрасно работала в течение нескольких дней с момента покупки и до сегодня (на ардуину успешно прошивались скетчи, устройство работало согласно программе). Вчера, начитавшись даташитов написал простенький скетч (хотел проверить изменится ли напряжение на пинах):
Скетч успешно загрузился в МК, напряжение на пинах А5, А4, А3, А2, А1, А0 стало равно нулю. Светодиод на 13 мигал как надо. Но чуть позже обнаружилось, что залить новый скетч я не могу: происходит ошибка
Пробовал по всякому нажимать ресет при отправки скетча - не помогает (т.е. раньше скетчи с нажатием на ресет успешно принимались, а сейчас - нет).
Теперь вопрсы: мог ли я скетчем сделать такое, и что именно в коде вызвало такую ситуацию? Если что-то случилось с переходником - как это диагностировать в отсутсвие других плат? Если что-то случилось с платой МК, как это диагностировать?Заранее спасибо за помощь.
Апдейт: по не ясным для меня причинам скетчи начали загружаться. Единственное что делал (помимо обмеров всех ног) - разобрал-осмотрел-собрал корпус USB-UART переходника. От греха заказал переходник на другом чипе и второй pro mini.