Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

E502 Асинхронный вывод данных на цифровые выходы.

Вы не вошли.

 Поиск | Регистрация | Вход 

28.02.2017 10:15:40
#1

Участник
Здесь с 19.01.2017
Сообщений: 82

E502 Асинхронный вывод данных на цифровые выходы.

Добрый день.
Не совсем понятен вопрос по использованию маски в

X502_AsyncOutDig(t_x502_hnd hnd, uint32_t val, uint32_t msk);

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

После коннекта к модулю сбрасываю все выходы

X502_AsyncOutDig(hnd, 0, 0хFFFF)

;
выходы уходят в 0 (контролирую светодиодами)
затем вывожу первый выход

int AsyncDigOut=1
int mask = 0xFFFF-AsyncDigOut;
X502_AsyncOutDig(hnd, AsyncDigOut, mask )

выставляется в  1
пытаюсь сбросить

int AsyncDigOut=0
int mask = 0xFFFF-AsyncDigOut;
X502_AsyncOutDig(hnd, AsyncDigOut, mask )

Остается в 1
или в маске надо на требуемый разряд 0 выставлять?

28.02.2017 10:29:44
#2

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,291

Re: E502 Асинхронный вывод данных на цифровые выходы.

Здравствуйте.

Параметр msk описан как:

Маска - указанные в маске биты не будут изменяться с предыдущего выведенного состояния

Т.е. если Вы хотите, чтобы изменялся только младший бит, то маска должна быть всегда 0xFFFE (если все биты - то 0). В последнем случае у Вас маска получается 0xFFFF, т.е. в общем ни один бит слова не влияет на вывод

28.02.2017 11:56:25
#3

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 Асинхронный вывод данных на цифровые выходы.

Алексей L Card пишет:

Здравствуйте.

Параметр msk описан как:

Маска - указанные в маске биты не будут изменяться с предыдущего выведенного состояния

Т.е. если Вы хотите, чтобы изменялся только младший бит, то маска должна быть всегда 0xFFFE (если все биты - то 0). В последнем случае у Вас маска получается 0xFFFF, т.е. в общем ни один бит слова не влияет на вывод

Ясно, спасибо, а это зачем?

....необходимо сперва сделать вывод на все линии

Выводить надо все 1 или все 0? И с маской 0x0000?

28.02.2017 12:43:30
#4

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,291

Re: E502 Асинхронный вывод данных на цифровые выходы.

stix_s пишет:

Ясно, спасибо, а это зачем?

Ну в общем-то в этом действительно большого смысла нет вызывать эту функцию с маской 0xFFFF (разве что для изменения флагов управления 3-м состоянием линий).

stix_s пишет:

Выводить надо все 1 или все 0? И с маской 0x0000?

Ну может не совсем понятно объяснено. Тут идея в том, что изначально на верхнем уровне не известно в каком состоянии выходы модуля (на них могли быть оставлены уровни с прошлого сеанса работы с модулем, если он не сбрасывался), поэтому следует установить известные начальные значения. В противном случае, если Вы сделаете вывод с ненулевой маской сразу после открытия модуля, то библиотека не знает какие значения  следует сохранить на "замаскированных" выходах. Ну а какое начальное состояние установить на выходах это уже вопрос к тому как используются выходы, если не используются, то в общем-то и начальное значение не важно какое выводить.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск