Как подключить переходник USB-RS232 (см. фото) к ATmega8?

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Микросхема  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". Это просто выводы питания, от которых можно запитать микросхему? Или они нужны для чего-то другого?

Заранее спасибо за ответы!

 

 

 

 

 

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

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 и насобачится нажимать ее в правильный момент (это  не сложно, за минуту приспособитесь :)

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Большое спасибо за детальное объяснение!

На счет кнопки Reset я как-то не подумал! Наверное меня сбило с толку то, что в ардуино-совместимой плате на том же чипе-конверторе (профилинк) для загрузки скетчей Reset нажимать не нужно!

И я всё ещё думаю, почему?

Получается, Reset  как-то в определенный момент нажимает компьютер?

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

prosto_andriy пишет:

Получается, Reset  как-то в определенный момент нажимает компьютер?

Бинго!!! :)  Скорее всего на "аналоге" выведена еще и линия DTR или RST и идет она именно к RESET. Поэтому происходит "авторесет" в момент открытия COM-порта.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

leshak пишет:

Скорее всего на "аналоге" выведена еще и линия DTR или RTS и идет она именно к RESET. Поэтому происходит "авторесет" в момент открытия COM-порта.

На "шестиногой" плате есть линия RST.

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

leshak пишет:

Еще нюанс: эти профилинки частенько 3.3v-вольтовые на своих RX,TX. Так что, теоретически, нужно еще согласовывать уровни с 5-ти вольтовой дуиной

То есть теоретически понадобиться "сооружать" делитель напряжения и брать сигнал с него?

Точно так же, как подключается к плате SD карта?

Или достаточно просто соединить выводы RX и TX через резистор?

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

Ну "методов согласования" - море. Делитель - вообщем-то тут покатит.  TX(модуля)->RX(дуины) - согласовывать вообщем-то не нужно.  "теоретически" это может потребоватся на TX(дуины)->RX(модуль). Но "теоретически".

Во первых у вас же не голый чип, возможно все это "уже имеется" на модуле. Во вторых уже довольно давно профилинки выпускают чипы толерантные к 5v. То есть сами они выдают логическую единицу на 3.3 (для дуины этого достаточно что-бы понять), но не умирают если им на RX вход дать не 3.3, а 5v. Типа "переживем и если будете в ухо кричать". Точнее - смотреть в даташит чипа. Вообщем если хочется "дуть на воду" - можно согласовывать. Или нагуглить даташит и узнать точно, можно напрямую или нельзя. Или плюнуть и рискнуть (IMHO, конечно, но риск - ниже плинтуса).

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

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

http://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/

Там вот вариант "с делитем на RX (модуля)" и защитным по току на TX (на всяк случай).

gena
Offline
Зарегистрирован: 04.11.2012

Если трассировка платы хорошо прослеживается, то можно на вывод "3,3v" завести сигнал DTR для RESET. Естественно предварительно перерезав дорожку к выводу "3,3v". Тогда не нужно будет "присобачить кнопку Reset и насобачится нажимать ее в правильный момент (это не сложно, за минуту приспособитесь :)"

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

leshak пишет:

... нажимать ее в правильный момент (это  не сложно, за минуту приспособитесь :)

Подскажите пожалуйста, в какой именно момент? Я пробовал нажимать когда надпись в Arduino IDE менялась с "Компилирование..." на "Загружаем...", ведь именно тогда по идее должна происходить загрузка кода в икросхему.

Но почему-то микросхема никак не прошивается! Адаптер-конвертор 100% рабочий - я проверил его как Вы и советовали: соединял RX и TX выводы и пробовал передавать символы - они возвращаются (смотрел через монитор порта)

Думаю ещё в чём может быть причина? Может Atmega8 бракованная? Хотя через USBasp программы в неё "заливаются" без проблем (в том числе и скетчи с Arduino IDE). В разделе "Сервис" --> "Плата" я выбрал "Arduino NG or older /w Atmega8".

Fuse биты выставлены так:

low fuse: DF

high fuse: CA

В файле "boards.txt" нашел такие строки:

atmega8.name=Arduino NG or older w/ ATmega8

atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
atmega8.upload.speed=19200

atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca
atmega8.bootloader.path=atmega8
atmega8.bootloader.file=ATmegaBOOT.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F

atmega8.build.mcu=atmega8
atmega8.build.f_cpu=16000000L
atmega8.build.core=arduino
atmega8.build.variant=standard

А  что значит unlock_bits и lock_bits? И на что влияют эти значения? Может ли из-за них микросхема не программироваться через UART? А можно ли как-то узнать, не выключен ли UART.

Его ведь можно включать/отключать в AVR контроллерах программно ? или я ошибаюсь?

 

 

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

Не трогайте фьюзы и биты. Оно, по идее, играет рояль только в момент прошивки бутлоадера, а вот "наворотить" и залочить кристал - ими запросто (тогда понадобится програматор высоковольтный).

Можете пойти в File/Preferences и поставить галгу "Show verbose output during .... upload".

Тогда в нижнем окне будет виден момент когда стартует avrdude (заливальная програ)- легче момент поймать. Плюс, возможно там увидите "что ему не сдрасте".

Далее - надеюсь вы просто "заливаете", а не "через програматор?". Порт правильно выбрали, туда куда конвертер втыкнут?

Далле.. вернее "назад". Прежде чем "вливать", убедитесь еще раз что у вас бутлоадер прошился нормально.

Привесте светодиод, через резитор,  на D13 (19-тоя нога камня). Если с бутлоадером "все норм", то по идее он должен "быстро несколько раз мигнуть" диодом когда нажимаете Reset (типа "бутлоадер стартовал"). Если мигает - значит бутлоадер тут, а вот "если не мигает"... то ни о чем не говорит. Они разные бывают, счас уже не упмоню кто из них ОБАЗЯН мигать.

Далее, прежде чем через конвертер лить, убедититесь что у вас вообще камень нормально запускается (надеюсь с кварцем же схему собирали?). Влейте в него стандартный Blink не через адаптер, а через свой программатор (File/Upload Using Prorgrammer"). Если диод замигал - значит камень жив.

Тогда проверяем работу сериал. Опять-таки, через програматор вливает какой-нибудь Serial.println("Hello from ATEMEGA8"). Подсоединяем адаптер, открывает ком-порт и смотрим что мы видим пришедшее из него "Hello....". Если видим, то вилваем что-то типа

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

void loop(){
  if(Serial.available())Serial.write(Serial.read());
}

Пишем что-нибудь в компорт - должно вернутся оно же (вообще это тот же тест с замыканием RX,TX - только програмный). Убедится что "связь с камнем есть и туда и обратно".

 

 

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

leshak пишет:

Прежде чем "вливать", убедитесь еще раз что у вас бутлоадер прошился нормально.

Да Вы оказались правы! Причина была в "криво" прошитом бутлоадере! Он почему-то записался не в конец флеш-памяти, а в начало!

Я только сейчас это понял, когда вручную "залил" указанный в файле "boards.txt" HEX файл с бутлоадером  совершенно другой программой (не Arduino IDE)

Без Вашей помощи я вряд ли бы разобрался. Спасибо!

P.S.: А правда ли, что в ARM контроллерах загрузчик по UART аппаратный, то есть "снести" его невозможно? Получается, что  "прошивку" в любом случае можно восставновить через такой крошечный USB переходник.

 

dimka
dimka аватар
Offline
Зарегистрирован: 21.09.2012

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

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Большое спасибо за Ваш ответ! Но я уже нашел вариант, в котором дополнительная кнопка не нужна. Кому интересно, можете посмотреть здесь: Поключение USB переходника-конвертера к Arduino Pro Mini