roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 139 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9, 10  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2006, 23:28 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
дак в вашем МК есть "железный" TWI ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2006, 23:35 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
avr123.nm.ru писал(а):
дак в вашем МК есть "железный" TWI ?

Есть, есть, я же говорю - i2c.c это не обязательно софт-версия I2C, а вы не верили :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2006, 23:44 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
конечно, ведь автор может как угодно назвать файлы.

Приципите пожалуйста ваши i2c.c   и   i2c.h


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2006, 23:56 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Минимум функций - программируемые TTL выходы/выходы получилось сделать.

Полными функциям будут считаться АЦП входы на соотв. порту и Серво-ШИМ выходы.


Последний раз редактировалось =DeaD= 29 сен 2006, 23:58, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2006, 23:56 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
avr123.nm.ru писал(а):
конечно, ведь автор может как угодно назвать файлы.
Приципите пожалуйста ваши i2c.c   и   i2c.h


таки не верите :)


Вложения:
i2c.h [7.17 КиБ]
Скачиваний: 317
i2c.c [18.46 КиБ]
Скачиваний: 316
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 00:12 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
ну как я и говорил - это библиоьеки twi  - они не могут сделать интерфейс i2c на ножках  IO  кроме тех что закремплены за аппаратным TWI.

поэтому логично их назвать twi.

а библиотеки для i2с на МК без аппаратного TWI могут создавать интерфейс практически на любый ножках IO.

==========

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 00:14 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
avr123.nm.ru писал(а):
ну как я и говорил - это библиоьеки twi  - они не могут сделать интерфейс i2c на ножках  IO  кроме тех что закремплены за аппаратным TWI.

поэтому логично их назвать twi.

а библиотеки для i2с на МК без аппаратного TWI могут создавать интерфейс практически на любый ножках IO.


В курсе я, что вы считаете логичным называть twi, а что i2c, и знаю, что некоторые тоже так считают, но думается это отнюдь не "единственно правильное мнение", а всего лишь одно из :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 00:25 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
я не про название а про точ что библиотека дает программе !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 13:50 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Принял еще одно важное, как я считаю, для успеха проекта решение - нужно выкинуть из проекта всю софтовую часть на ПК, иначе буду вынужден влезать во все подряд среды разработки и делать там библиотеки. А это пока "некогда" - иначе сдохнуть можно :)

Ограничусь поиском и выкладыванием ссылок на примеры как во разных средах разработки достучаться к COM-порту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 15:57 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
=DeaD= писал(а):
Принял еще одно важное, как я считаю, для успеха проекта решение - нужно выкинуть из проекта всю софтовую часть на ПК, иначе буду вынужден влезать во все подряд среды разработки и делать там библиотеки. А это пока "некогда" - иначе сдохнуть можно :)

Ограничусь поиском и выкладыванием ссылок на примеры как во разных средах разработки достучаться к COM-порту.


Я конечно не знаю, но мне кажется, что для проекта необходимы будут 2 вещи:
1. Четкое, ясное представление о протоколах взаимодействия, их спецификации.
2. Программная документация описывающая интерфейсы модулей и логику их работы.
3. Пример реализации под какой-либо средой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 16:05 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
Я конечно не знаю, но мне кажется, что для проекта необходимы будут 2 вещи:
1. Четкое, ясное представление о протоколах взаимодействия, их спецификации.
2. Программная документация описывающая интерфейсы модулей и логику их работы.
3. Пример реализации под какой-либо средой.


Так 2 или 3? :)
1. Есть, уже всё работает. Спецификация выше.
2. Это по каждому модулю. По первому в ограниченном виде сегодня будет.
3. В процессе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 16:22 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Программная документация на модуль описывающая логику его работы и внешние интерфейсы в корне отличается от примера реализации.
Первое может не содержать в себе ни строки кода...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 сен 2006, 16:39 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
Программная документация на модуль описывающая логику его работы и внешние интерфейсы в корне отличается от примера реализации.
Первое может не содержать в себе ни строки кода...


Это конечно понятно, но согласитесь, если программная документация и внешние интерфейсы ни разу на практике не использовались, - это очень сомнительного сорта интерфейсы и документация? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2006, 13:35 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
2. Программная документация описывающая интерфейсы модулей и логику их работы.

Вот:

Протокол работы с нулевой версией первого модуля:

Каждый порт может быть включен в один из режимов работы:
0. Цифровой вход (в этом режиме запись в порт означает включение/выключение встроенного подтягивающего резистора, а чтение - получение значения на входе порта);
1. Цифровой выход (в этом режиме запись в порт означает выставление выхода в соответствующее TTL-значение, а чтение - извлечение этого значения);

В примерах модуль имеет адрес FF, "Tx: " - передаваемые в RS-232 команды, адресованные модулю, "Rx: " - получаемые из RS-232 в ответ сообщения.

===============================================

Команда 1. Установить режим работы порта - отправить 2 байта и получить 0 байт:
- первый байт 0x20..0x38 для портов 0x00..0x18 соответственно;
- второй байт 0x00 или 0x01 - режим работы;

Пример (сделать порт 0х08 цифровым выходом):
Tx: QFF002801
Rx: R


===============================================

Команда 2. Записать значение в порт - отправить 2 байта и получить 0 байт:
- первый байт 0x00..0x18 для портов 0x00..0x18 соответственно;
- второй байт 0x00 / 0x01 - значение;

Пример (выставить порт 0х08 в единичку):
Tx: QFF000801
Rx: R


===============================================

Команда 3. Прочитать режим работы порта порта - отправить 1 байт и получить 1 байт:
- первый байт 0xA0..0xB8 для портов 0x00..0x18 соответственно;
- прочтенный байт - 0x00 / 0x01 - текущий режим работы порта;

Пример (прочитать режим работы порта 0х08 ):
Tx: QFF01A8
Rx: R01


===============================================

Команда 4. Прочитать значение порта - отправить 1 байт и получить 1 байт:
- первый байт 0x80..0x98 для портов 0x00..0x18 соответственно;
- прочтенный байт - 0x00 / 0x01 - значение порта;

Пример (прочитать состояние порта 0х0C - цифрового входа):
Tx: QFF018C
Rx: R00


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2006, 13:48 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
3. Пример реализации под какой-либо средой.


Вот:

Пример использования модуля под C++ Builder 6.0 с компонентой SlyComm:

Здесь можно взять компоненту SlyComm: http://slydiman.narod.ru/eng/comm/comm.htm

Параметры COM-порта: 9600, 8/N/1, Control:Hard. Однако это для данной версии модуля-шлюза, для следующих скорость скорее всего будет меняться.

Компонента SlyComm имеет тип TCommPort, под которым и используется ниже в коде:

Процедура выполнения команды и получения ответа (поддерживает TimeOut, правда пока он предопределен в процедуре, но думаю не составит труда вынести :)):
Код:
AnsiString doRequest(AnsiString request, TCommPort* com){
 AnsiString r=request+"\n";
 char *cmd=r.c_str();
 com->PutString(cmd);
 char c;
 AnsiString res="";
 long int countdown=200000000;
 int finish=0;
 while(finish<2){
   while(--countdown && (com->InBuffUsed==0));
   if(countdown==0){
     return "XFFTimeout!";
   };
   c=com->GetChar();
   if(c=='R' || c=='X'){
     finish=1;
   };
   if(finish==1 && c>=' '){ res=res+c; };
   if(c=='\n' && finish==1){
     finish=2;
   };
 };
 return res;
};


Пример выставления портов 0x08..0x0B (на плате это B0..B3) в значение 0 и в режим цифрового выхода без обработки возможных ошибок:
Код:
   doRequest("QFF000801",CommPort1);
   doRequest("QFF002801",CommPort1);
   doRequest("QFF000900",CommPort1);
   doRequest("QFF002901",CommPort1);
   doRequest("QFF000A00",CommPort1);
   doRequest("QFF002A01",CommPort1);
   doRequest("QFF000B00",CommPort1);
   doRequest("QFF002B01",CommPort1);


Пример отправки в порт 0x08 значения, зависящего от CheckBox1->Checked, без обработки ошибок:
Код:
if(CheckBox2->Checked){
   doRequest("QFF000801",CommPort1);
 }else{
   doRequest("QFF000800",CommPort1);
 };


Пример запроса из порта 0x0C значения и в зависимости от него выставление CheckBox6->Checked, без обработки ошибок:
Код:
 AnsiString r=doRequest("QFF018C",CommPort1);
 if(r=="R01"){
   CheckBox6->Checked=TRUE;
 }else{
   CheckBox6->Checked=FALSE;
 };


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 139 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9, 10  След.

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


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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 35


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

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