![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
GreatShogun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 12.8.2012 Репутация: нет Всего: нет |
Решил написать програмку, в которой COM port будем общаться с контроллером шаговых двигателей) ну собсно спецификация у контроллера такова что есть 9-й бит который сообщает о том адрес в 8 битах перед ним или нет! вопрос в том как это реализовать! пробывал использовать паритет, но ничего путного пока не вышло!
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
если доступно кодить на обеих сторонах,
чем не устраивает 8-битный трансфер на обеих сторонах: контроллер набирает 8 бит, шлет их в UART, 1 бит оставляет в буфере, следующие 7 бит склеивает с оставшимся, посылает их и оставляет в буфере 2 бита и т.д., пока в очередь с буфером, в сумме не придет 16 бит, после чего буфер опустошается и все начинается по новой на приемной стороне точно так же Добавлено через 1 минуту и 34 секунды нужно только предусмотреть команду flush, которая очищает текущий буфер, дополняя его биты нулями и посылая в UART -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
GreatShogun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 12.8.2012 Репутация: нет Всего: нет |
В том то и дело что перепрограмировать контроллер нет никакой возможности) надо реализовать именно 9-ти битную)
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
есть реализации UART, которые понимают 9 бит, и если контроллер, использует именно такой UART, то на приемной стороне надо выставить в DCB::ByteSize значение 9, если же контроллер ничего не знает об UART и шлет импульсы в "провод" по своему усмотрению, то по моему без дополнительного преобразователя не обойтись
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
GreatShogun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 12.8.2012 Репутация: нет Всего: нет |
дополнительный преобразователь?
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
еще один контроллер, который понимает эти 9 бит и ретранслирует их в обычные 8 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
bass |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
Ребят сума сошли что за грабли когда есть возможность на компе организовать UART 8 и 9.... Мы будем посылать 8 и преборазовывать в 9.... Настрой ки ком порта , приношу извинения за то что это на борланде и нет описаний чек боксов и т.д
И смотрите напрямую микроконтроллер нельзя соединить с ком портом компьютера..... Насколько помню надо max232 ставить. |
||||
|
|||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
успокойся, bass, преобразователь нужен только если это не UART, как я уже сказал
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
bass |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
Преобразователь сигналов с компа по документации +-12в точно не помню а микроконтроллер воспринимает +- 5в...... И потом соглосовать на какой скорости работает микроконтроллер и все его настройки..... Если схема не твоя то слоноватенько будет.... а вот сопряжение микроконтроллера. http://my-avr.at.ua/publ/1-1-0-12 Прочитал повнимательнее ТС. У него контроллер уже со спецификацией, пусть в студию даст ее и посмотрим нужно ли согласование, и какие настроички выставить.... dcb.ByteSize= 9; Это сообщение отредактировал(а) bass - 13.8.2012, 11:59 |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
с этого и надо было начинать читать умеем - уже хорошо, осталось - перестать флудить ![]() -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
GreatShogun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 12.8.2012 Репутация: нет Всего: нет |
bass, то есть достаточно просто задать размер байта для компорта равным 9? и совать туда вместо char, 9-битную переменную?
|
|||
|
||||
bass |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
Для восми битного так.
Должно вот так заработать, только может придеться поставить в проге однобайтовое выравнивание надо пробовать. Асцилограф есть под рукой??? Могу ради интереса попробывать только вечерком часиков в 11. А вот и ответ http://www.gotdotnet.ru/forums/2/83741/675592/ Это сообщение отредактировал(а) bass - 13.8.2012, 12:38 |
||||
|
|||||
GreatShogun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 12.8.2012 Репутация: нет Всего: нет |
Ну я с паритетом пробывал) ща еще покавыряю) если к 11 часам сделаю напишу тут!) а если нет то помощь мне не повредит!))
Добавлено через 3 минуты и 26 секунд А может у меня в коде где то косяк!
|
|||
|
||||
bass |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
Сейчас не могу посмотреть все....
но в глаза килаеться... SerialPort::WriteToCOM(BYTE mess) Зачем стринг?????? Если 8 бит передача то BYTE.....
|
|||
|
||||
GreatShogun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 12.8.2012 Репутация: нет Всего: нет |
лучше по одному байту слать? string для более удобного взаимодействия с интерфейсом.
Добавлено через 5 минут и 45 секунд так то 9-бит просто я паритет пытался тут использовать) то есть девятый бит - бит четности |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |