RS232 to TTL

Vadik
Offline
Зарегистрирован: 15.07.2014

Добрый вечер.

Купил конвертер RS232 to TTL. Цель покупки была использовать ком порт компютера для программирования а в дальнейшем для связи  Arduino mega2560 с программой на компютере. При подключении ардуины через конвертер и попытке залить скетч получаю следующее:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

Пробовал на конвертере замыкать RX TX и слать куски текста в serial monitor. Получаю обратно мусор. Плату в списке устройств не вижу. Плата жива, через USB порт все идет без проблем и в списке устройств находится.  

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

 

 

Vadik
Offline
Зарегистрирован: 15.07.2014

Нашел косяк...у меня чип на конвертере на 3 вольта. 

Надо быть внимательнее покупая с ebay....

 

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

Vadik пишет:

Нашел косяк...у меня чип на конвертере на 3 вольта. 

Дык это не проблема. Если чип TTL tolerance - все равно должен работать. Смотрите на даташит чипа конвертера.

Если нет - нужно значит между TX дуины и им вкорячить делитель напряжения, что-бы он ронял 5-ть вольт до 3-х.
А от конвертера к дуине - ничего не нужно.
Это если он еще не сгорел.

Горелость проверить можно замкнув RX/TX на самом конвертере и что-нибудь послать в Serial - если вернулось, значит живой.

Единственное что может стать проблемой - нужно будет искать питание +5v для меги. Ну либо питать ее отдельным блоком. Либо от COM-порта пробрасывать +12v на VIN меги (правда регулятор питания может греться...)

Вот посмотрите как делают usb-конвертер из кабеля для мобилки:

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

Он тоже - трех, вольтовый - и все работает (я проверял :)

Vadik
Offline
Зарегистрирован: 15.07.2014

Ну я купил микросхему МАХ232АСPЕ собрал сам конвертер и впринципе добился чтобы при замыкании RX и ТХ в serial monitor отсылать и получать то что отправил, но в диспечере устройств у меня на физическом порту ничего не определяется.... Если подключаю плату по усб то все идет как надо.

Может нужен какойто дополнительный драйвер для RS232 порта?

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

Vadik пишет:

 

впринципе добился чтобы при замыкании RX и ТХ в serial monitor отсылать и получать то что отправил, но в диспечере устройств у меня на физическом порту ничего не определяется.... 

Как-то взаимоисклчающе звучит. Если вы в Serial мониторе открыли порт, значит физически уже все определилось. Иначе вы бы открыть его не смогли. Что вы подразумеваете под "ничего не определяется", что вы там ожидаете?

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

Может вот это еще пригодится: Arduino - ArduinoSoftwareRS232

Vadik
Offline
Зарегистрирован: 15.07.2014

Видимо я что то не так понимаю...ну я хотел в ардуино мега2560 залить скетч не через USB виртуальный COM port а через физический COM port RS232 используя микросхему МАХ232. При попытке это сделать я получаю:

avrdude: stk500v2_ReceiveMessage(): timeout

 

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

А вы не прыгайте через голову. Раз нарушилась цепочка обеспечивающую заливку, значит нужно КАЖДЫЙ элемент цепочки проверить.

Вот замкнув RX/TX на конвертере вы проверили что "дрова и сам конвертер - рабочий" (это естественно в предположении что эту проверку вы делали именно "через физический COM port RS232 используя микросхему МАХ232").

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

Через USB же у вас вливаеются скетчи?  Ну значит заливайте туда скетч типа

... инициализацию не забудте..
loop(){
  Serial.print(millis());
  Serial.println("  Hello from Arduino");
  delay(1000);
}

Цепляете свой конвертер D0,D1 открываете его в Serial мониторе и смотрите видите ли вы хелошки раз в секунду. Если да .... значит "от ардуины" данные приходят нормально (ну, естественно USB свой при этом желательно отключить).

Vadik
Offline
Зарегистрирован: 15.07.2014

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

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

Vadik пишет:

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

Ну теперь нужно проверить что в ардуина нормально комп слышит.
Опять закорачиваем RX/TX только теперь програмно внутри ардуины:

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

Открываем монитор и должны получать назад все что послали. Физически - ничего не закорачиваем.

Vadik
Offline
Зарегистрирован: 15.07.2014

Проверил. И этот пункт работает...

Vadik
Offline
Зарегистрирован: 15.07.2014
Попробовал включить подробный отчет при загрузке кода. Заметил, что  пишет про DTR/RTS может это  влияет на загрузку?
 
 
 
Arduino: 1.5.7 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
 
Sketch uses 642 bytes (0%) of program storage space. Maximum is 258,048 bytes.
 
Global variables use 9 bytes (0%) of dynamic memory, leaving 8,183 bytes for local variables. Maximum is 8,192 bytes.
 
C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avrdude -CC:\Program Files (x86)\Arduino/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega2560 -cwiring -PCOM4 -b115200 -D -Uflash:w:C:\Users\Alberto\AppData\Local\Temp\build3685814914765723180.tmp/sketch_jul21a.cpp.hex:i 
 
 
avrdude: Version 6.0.1, compiled on Apr  3 2014 at 23:12:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch
 
         System wide configuration file is "C:\Program Files (x86)\Arduino/hardware/tools/avr/etc/avrdude.conf"
 
         Using Port                    : COM4
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
avrdude: wiring_open(): releasing DTR/RTS
avrdude: wiring_open(): asserting DTR/RTS
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [00] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [00] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: . [00] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [00] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: . [00] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: . [00] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
 
avrdude done.  Thank you.
 
leshak
Offline
Зарегистрирован: 29.09.2011

Ну, для успокоения совести, можно проверить еще влив пустой скетч:

void setup(){
}
void loop(){
}

Если "эхо" от ардуины перестало поступать, значит предыдущий "програмный закорот" у нас таки работал. И случайного физического корочения RX/TX (сопля там припоя или еще что-то) - не имеется.

Ну предположим, что и с этим все в порядке (но я бы проверил).
Теперь, что-бы нормально пошла заливка должны выполнится два условия:
1. У ардуины должно быть питание (кстати, а откуда вы его берете, когда USB отключен?)
2. Нужно как-то передать управление бутлоадеру, что-бы он начал принимать свежую прошивку....

Отсюда вопрос: а каким образом (когда) в ардуине происходит передача управление бутлоадеру? Заливка-то происходит через тот же самый Serial который вы в скетчах используете. Как ардуина узнает когда нужно выполнять бутлоадер, а когда скетч?

 

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

Vadik пишет:

Попробовал включить подробный отчет при загрузке кода. Заметил, что  пишет про DTR/RTS может это  влияет на загрузку?
 
Очень тепло.... но "пока рано" :) В принципе это половина ответа на мой вопрос из предыдущего поста :)
Кстати обратите внимание, что вы нигде выше по теме не описали что и как вы подключаете. Ни питание, ни те же DTR нигде не упомянуты. Подключение не описанно, поэтому "заметить лишние" или "заметить отсуствующие" могут только телепаты.
Но... уж пока не морочтись с этим. Без DTR (я так понял у вас его нет) - тоже можно.
Так что, есть какие-то идеи "как же нам запустить бутлоадер что-бы он прошивку свежую принял?"
 
leshak
Offline
Зарегистрирован: 29.09.2011

Кстати "программное эхо", из #9 тоже лучше проверять именно на скорости 115200, раз заливка у нас будет на 115200

Overriding Baud Rate          : 115200

А то вдруг у вас все нормально работает на 9600, а на 115200 помехи и шум ловит.

Vadik
Offline
Зарегистрирован: 15.07.2014

1)Питание беру от внешнего блок питания. С этим проблем нет.

2)Мда... у меня подключены только RX TX и GND. Судя по тому что когда я заливал скетч через ftdi в ардуино нано то еще подключал СTS и DTR то видимо с ними тут тже еще нужно разобраться?

Vadik
Offline
Зарегистрирован: 15.07.2014

Или может ресет нажимать во время загрузки.. не помагает вроде

Vadik
Offline
Зарегистрирован: 15.07.2014

Нашел наконец:

Если автоматический сброс не сработал, то ввиду описанных отличий, использовать физическую кнопку сброса для прошивки Arduino Leonardo/Micro нужно несколько по-другому. Нажмите и удерживайте нажатой кнопку сброса на плате, после этого в среде разработки Ардуино кликните по кнопке Upload. Отпускайте кнопку сброса только после того, как в строке состояния программы появится надпись "Uploading...".

Спасибо большое что помогли последовательно разобраться. В голове уже была полная каша. Даже не надеялся на такую помощь.

sav liana
Offline
Зарегистрирован: 28.11.2016

leshak пишет:
 Overriding Baud Rate          : 115200 

Вопрос: как поменять скорость Serial, которая по умолчанию (например 115200), например на 9600