Как подключить переходник USB-RS232 (см. фото) к ATmega8?
- Войдите на сайт для отправки комментариев
Пт, 25/01/2013 - 23:19
Микросхема ATmega8, к которой я собираюсь подключить этот преобразователь уже прошита Arduino бутлоадером. Через USBasp я загружал в неё скетчи и они работали! Хочу попробовать загружать их через такую вот штуковину под названием "USB To RS232 TTL PL2303HX Auto Converter Module Converter Adapter 5V 3.3V Output"
RXD - это наверное приём данных, TXD- передача.
На Atmega8 есть такие же выводы (RXD и TXD). Как их подключать? Соединять TXD преобразователя с RXD ATmega8, а её TXD с RXD преобразователя?
И зачем здесь ещё два вывода "3.3V" и "5V". Это просто выводы питания, от которых можно запитать микросхему? Или они нужны для чего-то другого?
Заранее спасибо за ответы!
RX модуля на TX atmeg-ги, и наоборот - TX модуля на RX меги.
Есть небольшоая вероятность что на модуле подписали не "что это за пины", а "куда подключать нужно" (тогда RX к RX, TX к TX), но это маловероятно. К тому же если "так не заработало, попробуем наоборот". Не знаю насколько безопастно, но я с десяток раз путал и ничего страшного не происходило. Не заработало так, будем по другому :)
Ну и земли желательно соеденить. GND модуля, к GND чипа.
Кроме того вам потребуется еще драйвера поставить под этот Profilic (если сами не поставятся. на одной машине меня винда сама их опознала и поставила, на другой - пришлось гуглить/скачивать руками). Это можно сделать/проверить до подключения к дуине. Втыкаем, ждем пока появится новый COm-порт в системе (ставим дрова руками если не опознала винда). Замыкаем RXD-TXD между собой. Открвыем Serial монитора и посылаем в него "Bla-bla-bla", если в ответ пришло "Bla-bla-bla" - значит с преобразователем и драйверами - все в порядке. Можно подключать к ардуине.
Еще нюанс: эти профилинки частенько 3.3v-вольтовые на своих RX,TX. Так что, теоретически, нужно еще согласовывать уровни с 5-ти вольтовой дуиной. А практически - не нужно. Последние ревизии чипов ("толерантны к 5-ти вольтам"). Сам я раньше "согласовывал", а потом плюнул и напрямую соеденил - и все равно все работает хорошо. Вообщем "я просто предупредил на всяк случай" (но сам бы не заморачивался об этом).
>И зачем здесь ещё два вывода "3.3V" и "5V". Это просто выводы питания, от которых можно запитать микросхему?
Да.
Могут быть нюансы если брать оттуда токи больше 150-200mA, но если "просто запитать микруху и диод" - то можно смело с этих пинов.
(а вообще, неплохо бы почитать даташит или описание этого модуля. где-то же вы его брали. половина "нюансов/догадок" отпадет сама собой).
Для заливки эти 3.3V и 5V - не обязательны. Но если вы питаете микруху не от них, а "от чего-то внешнего", то желательно вначале подать питание на микруху, а потом уже подсоединять модуль (или втыкать его в USB). Ситуации "модуль подключен к микрухе и включен в USB", при этом сама atmega-8 не имеет питания - желательно избегать.
Ну и еще, что-бы заливать через него, Вам потребуется к Atmega8 присобачить кнопку Reset и насобачится нажимать ее в правильный момент (это не сложно, за минуту приспособитесь :)
Большое спасибо за детальное объяснение!
На счет кнопки Reset я как-то не подумал! Наверное меня сбило с толку то, что в ардуино-совместимой плате на том же чипе-конверторе (профилинк) для загрузки скетчей Reset нажимать не нужно!
И я всё ещё думаю, почему?
Получается, Reset как-то в определенный момент нажимает компьютер?
Получается, Reset как-то в определенный момент нажимает компьютер?
Бинго!!! :) Скорее всего на "аналоге" выведена еще и линия DTR или RST и идет она именно к RESET. Поэтому происходит "авторесет" в момент открытия COM-порта.
Скорее всего на "аналоге" выведена еще и линия DTR или RTS и идет она именно к RESET. Поэтому происходит "авторесет" в момент открытия COM-порта.
На "шестиногой" плате есть линия RST.
Еще нюанс: эти профилинки частенько 3.3v-вольтовые на своих RX,TX. Так что, теоретически, нужно еще согласовывать уровни с 5-ти вольтовой дуиной
То есть теоретически понадобиться "сооружать" делитель напряжения и брать сигнал с него?
Точно так же, как подключается к плате SD карта?
Или достаточно просто соединить выводы RX и TX через резистор?
Ну "методов согласования" - море. Делитель - вообщем-то тут покатит. TX(модуля)->RX(дуины) - согласовывать вообщем-то не нужно. "теоретически" это может потребоватся на TX(дуины)->RX(модуль). Но "теоретически".
Во первых у вас же не голый чип, возможно все это "уже имеется" на модуле. Во вторых уже довольно давно профилинки выпускают чипы толерантные к 5v. То есть сами они выдают логическую единицу на 3.3 (для дуины этого достаточно что-бы понять), но не умирают если им на RX вход дать не 3.3, а 5v. Типа "переживем и если будете в ухо кричать". Точнее - смотреть в даташит чипа. Вообщем если хочется "дуть на воду" - можно согласовывать. Или нагуглить даташит и узнать точно, можно напрямую или нельзя. Или плюнуть и рискнуть (IMHO, конечно, но риск - ниже плинтуса).
Вот можете глянуть стайтеку, где из кабеля для мобилки (который есть суть тот же конвертер, на подобном же чипе) делают
http://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/
Там вот вариант "с делитем на RX (модуля)" и защитным по току на TX (на всяк случай).
Если трассировка платы хорошо прослеживается, то можно на вывод "3,3v" завести сигнал DTR для RESET. Естественно предварительно перерезав дорожку к выводу "3,3v". Тогда не нужно будет "присобачить кнопку Reset и насобачится нажимать ее в правильный момент (это не сложно, за минуту приспособитесь :)"
... нажимать ее в правильный момент (это не сложно, за минуту приспособитесь :)
Подскажите пожалуйста, в какой именно момент? Я пробовал нажимать когда надпись в Arduino IDE менялась с "Компилирование..." на "Загружаем...", ведь именно тогда по идее должна происходить загрузка кода в икросхему.
Но почему-то микросхема никак не прошивается! Адаптер-конвертор 100% рабочий - я проверил его как Вы и советовали: соединял RX и TX выводы и пробовал передавать символы - они возвращаются (смотрел через монитор порта)
Думаю ещё в чём может быть причина? Может Atmega8 бракованная? Хотя через USBasp программы в неё "заливаются" без проблем (в том числе и скетчи с Arduino IDE). В разделе "Сервис" --> "Плата" я выбрал "Arduino NG or older /w Atmega8".
Fuse биты выставлены так:
low fuse: DF
high fuse: CA
В файле "boards.txt" нашел такие строки:
А что значит unlock_bits и lock_bits? И на что влияют эти значения? Может ли из-за них микросхема не программироваться через UART? А можно ли как-то узнать, не выключен ли UART.
Его ведь можно включать/отключать в AVR контроллерах программно ? или я ошибаюсь?
Не трогайте фьюзы и биты. Оно, по идее, играет рояль только в момент прошивки бутлоадера, а вот "наворотить" и залочить кристал - ими запросто (тогда понадобится програматор высоковольтный).
Можете пойти в File/Preferences и поставить галгу "Show verbose output during .... upload".
Тогда в нижнем окне будет виден момент когда стартует avrdude (заливальная програ)- легче момент поймать. Плюс, возможно там увидите "что ему не сдрасте".
Далее - надеюсь вы просто "заливаете", а не "через програматор?". Порт правильно выбрали, туда куда конвертер втыкнут?
Далле.. вернее "назад". Прежде чем "вливать", убедитесь еще раз что у вас бутлоадер прошился нормально.
Привесте светодиод, через резитор, на D13 (19-тоя нога камня). Если с бутлоадером "все норм", то по идее он должен "быстро несколько раз мигнуть" диодом когда нажимаете Reset (типа "бутлоадер стартовал"). Если мигает - значит бутлоадер тут, а вот "если не мигает"... то ни о чем не говорит. Они разные бывают, счас уже не упмоню кто из них ОБАЗЯН мигать.
Далее, прежде чем через конвертер лить, убедититесь что у вас вообще камень нормально запускается (надеюсь с кварцем же схему собирали?). Влейте в него стандартный Blink не через адаптер, а через свой программатор (File/Upload Using Prorgrammer"). Если диод замигал - значит камень жив.
Тогда проверяем работу сериал. Опять-таки, через програматор вливает какой-нибудь Serial.println("Hello from ATEMEGA8"). Подсоединяем адаптер, открывает ком-порт и смотрим что мы видим пришедшее из него "Hello....". Если видим, то вилваем что-то типа
Пишем что-нибудь в компорт - должно вернутся оно же (вообще это тот же тест с замыканием RX,TX - только програмный). Убедится что "связь с камнем есть и туда и обратно".
Прежде чем "вливать", убедитесь еще раз что у вас бутлоадер прошился нормально.
Да Вы оказались правы! Причина была в "криво" прошитом бутлоадере! Он почему-то записался не в конец флеш-памяти, а в начало!
Я только сейчас это понял, когда вручную "залил" указанный в файле "boards.txt" HEX файл с бутлоадером совершенно другой программой (не Arduino IDE)
Без Вашей помощи я вряд ли бы разобрался. Спасибо!
P.S.: А правда ли, что в ARM контроллерах загрузчик по UART аппаратный, то есть "снести" его невозможно? Получается, что "прошивку" в любом случае можно восставновить через такой крошечный USB переходник.
Arduino загрузить sketch В ATmega. USB To RS232 TTLPL2303HX Converter Adapter
1. скачиваем устанавливаем драйвера
2. кликаем на кнопку загрузить sketch.
как только загорается синий светодиод, сразу жмём на кнопку и отпускаем
once the blue LED shines, just press the button and release
http://www.youtube.com/watch?v=W4LPlKKb__8
Большое спасибо за Ваш ответ! Но я уже нашел вариант, в котором дополнительная кнопка не нужна. Кому интересно, можете посмотреть здесь: Поключение USB переходника-конвертера к Arduino Pro Mini