roboforum.ru

Технический форум по робототехнике.

программирование UART (на Си)

программирование UART (на Си)

unnAm3d » 07 янв 2010, 20:49

Доброго времени суток!
У меня в наличии плата минибот 2.0 но вроде урезанная..(в заказе указано: базовая комплектация.) может Гуль Э.В. подскажет какого типа: заказ был 09.04.2009 №69. + конечно очень бы хотелось увидеть принципиальную схему платы.. потому как выложенная на форуме - для "полной" версии..
Исходя из принципиальной схемы USB порт что на самой плате - не умеет принимать данные с ПК? если умеет - то как это организовано? Т.к. с RxD и TxD FT232RL заведено на PD0 меги32.
Подскажите пожалуйста как организовать прием команд с ПК в онлайн режиме и выполнение их.
Заранее благодарен за помощь!

Re: программирование UART (на Си)

EdGull » 07 янв 2010, 21:04

1. в базовую комплектацию опция USB не входит
2. принципиальная схема у базовой комплектации такая же только естественно без деталей дополнительных опций. Т.е. полная комплектация = базовая + все опции.
3. для общения по уарту необходимо в разъем RoboBus вставить конвертер UART-USB.

Добавлено спустя 3 минуты 27 секунд:
и насколько я понял ты не написал в ветке "Отправка-Получение" о получении заказа, а значит МиниБота у тебя нет, а значит консультировать тебя не о чем :wink:

Re: программирование UART (на Си)

unnAm3d » 07 янв 2010, 21:05

т.е miniusb разъем что на плате - только для зарядки аккумулятора? за чем же рядом красуется кристалл от FTDI? принципиальная схема - отличается. например, всего одна мега - 32.
хотя может я и путаю какой комплект у меня на руках.
Прощу еще раз: не могли бы Вы посмотреть по заказам?
Заказ №69 от 09.04.2009 на имя Кирсанова Андрея (BERKOF).

Re: программирование UART (на Си)

avr123.nm.ru » 07 янв 2010, 21:10

unnAm3d писал(а):как организовать прием команд с ПК в онлайн режиме и выполнение их.


Вы можете воспользоваться примером из задачи 5 краткого курса по программированию AVR - http://proavr.narod.ru/z5.htm - там как раз рассматривается прием данных по UART и создание буфера для поступающих данных. Все это просто сделать автоматически мастером компилятора CVAVR.
Последний раз редактировалось avr123.nm.ru 07 янв 2010, 21:12, всего редактировалось 1 раз.

Re: программирование UART (на Си)

EdGull » 07 янв 2010, 21:11

в заказе числится:
Электроника для робота МиниБот-2.0 (базовая комплектация) вариант Разъемы вверх
Опция фильтр (дроссель) от помех двигателей
Опция FT232 + шнур miniUSB-USB
Опция стабилизатор напряжения на базе LP2985 3.3В
ИК-приемник TSOP18SS3V на шлейфе с разъемом
Программатор AVR STK500 - USB порт c разъемом RoboBUS

а значит USB у тебя есть, а значит по уарту через USB твой МиниБот может общаться, что можно посмотреть в любой терминалке

Re: программирование UART (на Си)

avr123.nm.ru » 07 янв 2010, 21:17

Вот еще исходники с Smileymicros.com для общения AVR с ПК как с управляющим терминалом
Вложения
Smileymicros.com Общение по UART.rar
(29.81 КиБ) Скачиваний: 11

Re: программирование UART (на Си)

unnAm3d » 07 янв 2010, 21:19

:cry:
эххх меня не так поняли..(
а значит USB у тебя есть, а значит по уарту через USB твой МиниБот может общаться, что можно посмотреть в любой терминалке

это Вы про программатор? или про usb on-board ? я просто никак не могу разобрать из принципиальной схемы - куда все таки заведены data с usb что на плате бота. он как раз в терминал не отвечает. хотя уарт вроде проинициализировал я верно..
и насколько я понял ты не написал в ветке "Отправка-Получение" о получении заказа, а значит МиниБота у тебя нет, а значит консультировать тебя не о чем

заказ не на меня.. я же написал.. но как Вы можете утверждать, что "МиниБота у тебя нет", если он у меня на столе?)))

to avr123.nm.ru
да, верно ваше замечание))
просто программная реализация невозможна если по уарту совсем общения с ботом нет(((

Добавлено спустя 40 секунд:
Вот еще исходники с Smileymicros.com для общения AVR с ПК как с управляющим терминалом

спасибо большое!)

Re: программирование UART (на Си)

avr123.nm.ru » 07 янв 2010, 21:21

Проверка всех участков связи изложена на страничке http://proavr.narod.ru/z4.htm
Нужные замыкания лучше делать резистором 200-470 Ом.

Там же рекомендованы удобные программы для работы с COM портами.

Re: программирование UART (на Си)

EdGull » 07 янв 2010, 21:30

всё, я понял в чем на самом деле вопрос
1. тебя смутило закорачивание Rx и Tx. Не волнуйся. Это нормально. Просто отправитель будет также и принимать свой пакет.
2. На МиниБоте уарт организован в однопроводную внутренюю шину. на которой сидят FT232(ПК), Мега32, Мега88 (которой у тебя нет), RoboBUS.
3. За счет закорачивания Rx и Tx отправитель на время отправки должен выключать свой Rx
4. По Сям это тебе с нашим Сишникам, у меня Бейсиковская религия.
5. Для проверки работоспособности Уарта-USB на МиниБОте прошей заводскую прошивку, в терминалке увидишь то что шлет МиниБот.

Re: программирование UART (на Си)

unnAm3d » 07 янв 2010, 21:44

спасибо!)
буду пробовать)) как только получу результат - отпишусь)))

Re: программирование UART (на Си)

Duhas » 07 янв 2010, 22:30

EdGull писал(а):3. За счет закорачивания Rx и Tx отправитель на время отправки должен выключать свой Rx
.

ммм, а принимающий Tx? иль там диодом оно?

Re: программирование UART (на Си)

EdGull » 07 янв 2010, 22:31

не только диодом, еще и резистором

Re: программирование UART (на Си)

unnAm3d » 08 янв 2010, 22:56

Доброго времени суток!
с uart-ом вроде разобрался - шлет и принимает. Правда не понятен один нюанс:
Код: Выделить всёРазвернуть
const unsigned int USART_INPUT_MAX_BUF = 8;
mb_init();
usart_init(B9600);
char inbuf[USART_INPUT_MAX_BUF];
while(1) {
    if(fgets(inbuf, USART_INPUT_MAX_BUF, &usart_fdev)!=NULL) {
        PORTC = 0x00;
        MB_LED_CL_OUT |= (1<<MB_LED_CL_GP1);
        fputs(inbuf, &usart_fdev);
    }
    PORTC = 0x00;
    MB_LED_CL_OUT |= (1<<MB_LED_CL_RP2);
}

предположим это код в мэйне. usart_fdev - типа потоковый девайс уарта.
по идее он должен отсылать обратно в терминал все что приходит к нему. у меня виста (да..да..да..) соответственно никакого терминала. использовал COM port toolkit. Шлю на мк string "hi" в ответ приходит "68 69" (в ascii = "hi"). Шлю еще раз "hi" - в ответ - "68 69 С0 06 FF 06 9F 06 FF 06 FF 06 9F 06 9F FE". Не подскажите в чем тут проблема?

+ вопрос. все это для реализации вот этого: wiki/MiniBot-SerControl
как нужно слать команды на мк в таком случае? строкой? или все в hex? если строкой - то кодировка какая? кто-то реализовывал серверную часть это дела не на фитоне? (на Си например)) )

Спасибо!
Последний раз редактировалось unnAm3d 08 янв 2010, 23:17, всего редактировалось 1 раз.

Re: программирование UART (на Си)

avr123.nm.ru » 08 янв 2010, 23:09

В COM port toolkit вы можете слать команды из файлов и можете писать скрипты на Си - там на сайте есть примеры подрбные. Т.е. можно все автоматизировать и слать как угодно и даже парсить ответы и отвечать.

Re: программирование UART (на Си)

EdGull » 08 янв 2010, 23:32

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


Rambler\'s Top100 Mail.ru counter