Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> протокол MAX 1243 
:(
    Опции темы
Serg1234
Дата 22.5.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 18.6.2006

Репутация: нет
Всего: нет



Привет всем.
Помогите разобраться с протоколом обмена.
Есть программа на Паскале
Код

b := $3F8;n := 10;
port[b+4] := 1;
delay(100);
port [b+3] := 64;
delay(500);

 port[b+4] := 0;
 d := 0;for f :=0 to n-1 do
 begin
  port[b+4] := 2;
  e := port[b+6] and 16;
  port[b+4] := 0;
  if e=16 then d := d + exp((n-1-f)*ln(2));
 end;


как это реализовать на Delphi
PM MAIL   Вверх
xvr
Дата 24.5.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Протокол обмена (кстати, обычный SPI) лучше искать в первоисточнике - http://datasheets.maxim-ic.com/en/ds/MAX1242-MAX1243.pdf , а не в неизвестно каком исходнике неизвестно для чего написанном

PM MAIL   Вверх
Serg1234
Дата 24.5.2010, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 18.6.2006

Репутация: нет
Всего: нет



спасибо xvr
эти схемы мне знакомы, но мне тяжело из них алгоритм обмена получить.
Код который я приводил - он работает, но написан на Паскале для DOS, а надо на Delphi. 
Если есть инфа - буду очень признателен.
PM MAIL   Вверх
xvr
Дата 24.5.2010, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Serg1234 @  24.5.2010,  18:10 Найти цитируемый пост)
эти схемы мне знакомы, но мне тяжело из них алгоритм обмена получить.
Странно, на странице 9 этот обмен расписан во всех подробностях

Цитата

Код который я приводил - он работает, но написан на Паскале для DOS, а надо на Delphi. 
Из кода непонятно как подключен сам АЦП. Догадываюсь, что через принтерный порт. Под Windows работать не будет (без специального драйвера), т.к. система к портам не пускает. 
С драйвером будет, с тем же самым кодом. Однако за такую строку
Код

if e=16 then d := d + exp((n-1-f)*ln(2));
надо расстреливать из рогатки  smile 
PM MAIL   Вверх
Serg1234
Дата 26.5.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 18.6.2006

Репутация: нет
Всего: нет



Цитата

надо расстреливать из рогатки  

Я бы тоже расстрелял тех, кто такой протокол обмена придумал.
АЦП подключен к COM порту.
Мне приходилось работать с эл.весами, сканером - там все просто и понятно, отправил строку в порт, получил обратно значение.
На странице  9 приведены схемы импульсов, на как их преобразовать в код?
xvr Если это просто и понятно для тебя - напиши пожалуйста пример. Что необходимо отправить в COM порт, чтобы потом считать из этого порта значения.
PM MAIL   Вверх
xvr
Дата 26.5.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Serg1234 @  26.5.2010,  14:19 Найти цитируемый пост)
АЦП подключен к COM порту.
К каким конкретно ногам порта какие ноги АЦП подключены?

Цитата

Если это просто и понятно для тебя - напиши пожалуйста пример.
Могу на С++ написать (для Builder'а подойдет)
Цитата

Что необходимо отправить в COM порт, чтобы потом считать из этого порта значения. 
Мне кажется, что 'отправить в COM порт' будет недостаточно, там похоже используется махание ногами под прямым управлением программы.

PM MAIL   Вверх
Serg1234
Дата 27.5.2010, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 18.6.2006

Репутация: нет
Всего: нет



TLC 1549
clock - 7
cs - 4
data - 8
на рисунке приведена схема.
схема
Цитата

Могу на С++ написать (для Builder'а подойдет)

Попробую разобраться. Главное понять принцип работы с портом.


PM MAIL   Вверх
xvr
Дата 27.5.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Не могу посмотреть схему - ipicture лежит. 
Прога будет примерно такая
Код

HANDLE com_port;

void set_ncs(bool is_on) {EscapeCommFunction(com_port,is_on?SETDTR:CLRDTR);}
void set_clk(bool is_on) {EscapeCommFunction(com_port,is_on?SETRTS:CLRRTS);}
bool get_data() {DWORD s; GetCommModemStatus(com_port,&s); return (s&MS_CTS_ON)!=0;}


void open_dac()
{
 com_port=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
 set_ncs(true);
 set_clk(false);
}

void close_dac()
{
 CloseHandle(com_port);
}

int read_dac()
{
 set_ncs(false);
 int acc=0;
 for(int i=0;i<10;++i)
  {
   if (get_data()) acc|=1<<(9-i);
   set_clk(true);
   set_clk(false);
  }
 set_ncs(true);
 return acc;
}

В зависимости от схемы в функциях set_* и get_data может потребоваться проинвертировать параметр и/или возвращаемое значение


Это сообщение отредактировал(а) xvr - 27.5.2010, 20:27
PM MAIL   Вверх
Serg1234
Дата 29.5.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 18.6.2006

Репутация: нет
Всего: нет



спасибо xvr, буду пробовать.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.