roboforum.ru

Технический форум по робототехнике.
Текущее время: 23 ноя 2024, 07:35

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 10 янв 2010, 21:26 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Похоже что скорость принимающей стороны выше. Проверь верно ли установлена скорость на устройстве.
Ну и проверь какая ошибка.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 10 янв 2010, 22:00 
Не в сети

Зарегистрирован: 05 янв 2010, 19:25
Сообщения: 27
Откуда: Фрязино
Skype: vadim17.87
прог. языки: С/С++
ФИО: Гамидов Вадим Александрович
хм... скорость uart зависит от F_CPU
в makefile у меня она определена как F_CPU = 16000000
а разве не используется внешний кварц 7,3728 ? т.е. не нужно ли изменить значение F_CPU на 7372800 ?
может конечно это бред...
а так прошивка использует 9600, и в терминале использую 9600..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 10 янв 2010, 22:08 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Конечно зависит от тактовой!
И значение регистра скорости вычисляется при компиляции.
А вот какая тактовая зависит от fuse-битов.

Добавлено спустя 55 секунд:
Т.е. верно: скорость приемника 9600, а передатчика в районе 4800.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 10 янв 2010, 22:33 
Не в сети

Зарегистрирован: 05 янв 2010, 19:25
Сообщения: 27
Откуда: Фрязино
Skype: vadim17.87
прог. языки: С/С++
ФИО: Гамидов Вадим Александрович
как я понял для выбора external crystal нужно выставить fuse SUT...CKSEL.
Не подскажете что выбрать в winavr studio (там чекбокс)
уже установлено там:
Ext. Crystal/Resonator Medium freq.; Start-up time: 16K CK + 64 ms
fuse CKOPT установлен.
на плате соответственно внешний кварц 7,3728 Mhz

Спасибо!)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 10 янв 2010, 23:26 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
не надо фьюзы шить! убьешь бота!
просто напиши вместо
Код:
F_CPU = 16000000

так
Код:
F_CPU = 7372800

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 11 янв 2010, 01:18 
Не в сети

Зарегистрирован: 05 янв 2010, 19:25
Сообщения: 27
Откуда: Фрязино
Skype: vadim17.87
прог. языки: С/С++
ФИО: Гамидов Вадим Александрович
да-да.
так и сделал. в makefile прописал
Код:
F_CPU = 7372800

теперь шлю
Код:
char tmpbuff[] = "HELLO\n";

в терминале получаю:
00 43 85
мистика...
терминал настроен на те же 9600 8N1 no-parity

Добавлено спустя 1 час 36 минут 31 секунду:
получил наконец-то в terminal HELLO от бота)))
но без отключения rx во время передачи.
если использовать предложенные vooon:
OUT_BLOCK_FORCEON()
то в терминал выводится только: 00 43 85 (передаю "HELLO\n")
если использовать:
Код:
int usart_putchar(char c, FILE *stream) {
    if ( c == '\n' )
        usart_putchar('\r', stream);
    loop_until_bit_is_set(UCSRA, UDRE);
    UART_DISABLE_RX();
    UDR = c;
    loop_until_bit_is_set(UCSRA, UDRE);
    UART_ENABLE_RX();
    return 0;
}

то в терминале: 00 E1

буду копать дальше)) но если кто поделится мыслями буду премного благодарен)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 11 янв 2010, 01:34 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Теперь лучше прикрепи проект целиком в архиве к посту.
Теперь явно наоборот скорость передатчика выше.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 11 янв 2010, 01:41 
Не в сети

Зарегистрирован: 05 янв 2010, 19:25
Сообщения: 27
Откуда: Фрязино
Skype: vadim17.87
прог. языки: С/С++
ФИО: Гамидов Вадим Александрович
ну вот сам проект...
но со скоростью все вроде ок.. отбросив мысли о полудуплексе - все передается нормально...


Вложения:
irs_mbot.rar [56.25 КиБ]
Скачиваний: 7
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 11 янв 2010, 02:06 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Тогда используй как есть.
Просто в протоколе нужно будет учесть, что мы себя слышим (игнорировать пакеты с заголовком ответа).

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 11 янв 2010, 14:12 
Не в сети

Зарегистрирован: 05 янв 2010, 19:25
Сообщения: 27
Откуда: Фрязино
Skype: vadim17.87
прог. языки: С/С++
ФИО: Гамидов Вадим Александрович
да.. сам тоже об этом подумал.
думаю использовать StxEtx.
Спасибо за помощь!)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 26 янв 2010, 12:32 
Не в сети

Зарегистрирован: 05 янв 2010, 19:25
Сообщения: 27
Откуда: Фрязино
Skype: vadim17.87
прог. языки: С/С++
ФИО: Гамидов Вадим Александрович
Всем доброго времени суток)
Покапался в проекте ORFA..
Подскажите, так навскидку, с какими ограничениями-изменениями его можно собрать под Минибота 2.0? На боте twi/i2c реализован через программатор?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 26 янв 2010, 13:04 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
А зачем twi/i2c? ORFA же первично через UART получает команды?

Добавлено спустя 27 секунд:
Вот только UART на миниботе хитровыдуманный :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программирование UART (на Си)
СообщениеДобавлено: 26 янв 2010, 16:14 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Почему это принципиально? Она может быть и I2C slave.
Но под минибота нужно переписывать драйверы, или как минимум проверить.

1. Нужно написать файл platform/MINIBOT2.mk
Код:
# -*- Makefile -*-

MCU = atmega32
F_CPU = 7372800UL
BAUD =

DRIVERS = ports adc motor


2. Ports — drivers/ports/ports_driver.h
Маски нужно изменить
Код:
#ifdef MINIBOT2
   #define GATE_NUM_PORTS 4
   #define GATE_PORT_MASK_A 0
   #define   GATE_PORT_MASK_B 0xE3
   #define   GATE_PORT_MASK_C 0x03
   #define   GATE_PORT_MASK_D 0x33
   #define GATE_PORT_SPECS GATE_PORT_SPEC(A), GATE_PORT_SPEC(B), GATE_PORT_SPEC(C), GATE_PORT_SPEC(D)
   #define GATE_PORT_UID 0x0022
#endif


3. Motor — нужно переопределить макросы портов
4. ADC — нужно проверить, думаю заработает с минимумом правок
5. В local_config.mk раскомменитировать I2C_SLAVE = 1

Добавлено спустя 2 минуты 20 секунд:
После чего прошивка будет принимать команды с I2C, но этот режим не тестирован.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO