Скачать 0.51 Mb.
|
47Модели памятиВсе функции библиотеки предполагают использование дальних указателей типа FAR, как для вызова процедур, так и для передачи адресов данных, поэтому компиляцию программы в языке Си желательно проводить в модели памяти LARGE, в которой по умолчанию используются дальние вызовы процедур и дальние указатели на данные. В директории \EXAMPLE.C\ находится драйвер, адаптированный под язык Си. В директории \EXAMPLE.PAS\ находится драйвер, адаптированный под язык Паскаль. 48Техническое сопровождениеЛюбые вопросы и замечания по библиотеке функций для платы АЦП Вы можете задать с 10.00 до 18.00 по будним дням по телефону: (095) 257-17-10, e-mail: [email protected] или на нашем сайте: WWW.LCARD.RU. ЗАО “Л-КАРД” гарантирует консультации по всем возникшим у Вас вопросам. 49Описание библиотеки функций50Функции конфигурации51НазначениеФункции общего назначения предназначены для уведомления драйвера (в дальнейшем под драйвером подразумевается библиотека функций для платы АЦП L-154) об установленной конфигурации платы с помощью перемычек. При помощи перемычек Вы можете изменить базовый адрес платы в пространстве ввода-вывода компьютера для работы с более, чем одной платой, и изменить номер линии прерывания, которое может генерироваться платой. По умолчанию драйвер настроен на базовый адрес 0x300 и на линию прерывания IRQ 3, при изменении этих параметров Вам следует сообщить о них драйверу, вызвав описываемые ниже функции с соответствующими параметрами. Функции общего назначения позволяют также проводить тест наличия платы в компьютере. 52Установка базового адреса (SETBASEADDRESS())Формат вызова void SETBASEADDRESS(int address); Назначение Устанавливает новый базовый адрес в пространстве PC для функций драйвера, переменная address должна быть равна одному из значений 0x300, 0x310, 0x330, 0x340 в соответствии с установленными перемычками на плате Параметры address -> значение базового адреса платы в компьютере 53Установка номера прерывания (INTR_SETUP())Формат вызова void INTR_SETUP(int irq_number); Назначение Сообщает драйверу о выбранном номере прерывания (IRQ3 - IRQ6) на плате. По умолчанию на плате установлен номер прерывания IRQ3 и драйвер изначально предполагает, что номер прерывания равен IRQ3. Параметры irq_number
54Проверка наличия платы в компьютере (PLATA_TEST())Формат вызова int PLATA_TEST(); Назначение Проводит диагностику наличия платы АЦП в компьютере. Возвращает нулевое значение в случае успешного тестирования присутствия платы и ненулевое значение в противном случае. Ненулевое значение означает, что либо плата отсутствует в компьютере, либо значение базового адреса платы не соответствует установленному через функцию SETBASEADDRESS(). Параметры отсутствуют Возвращаемое значение
55Работа с аналоговыми каналами56НазначениеФункции данного раздела служат для обеспечения ввода аналоговых сигналов в компьютер в различных программных режимах: в асинхронном режиме и в режиме синхронизации от установленного на плате таймера . 57Установка номера канала АЦП (SETCHANNEL())Формат вызова void SETCHANNEL(int Channel); Назначение Устанавливает канал АЦП Channel для последующего ввода функцией однократного асинхронного ввода SAMPLE(). Параметры Channel -> номер канала АЦП (см, формат номера канала) Пример main() { int i; SETCHANNEL(0xC0); // установим первый канал i=SAMPLE(); // введем значение с канала cprintf("Код АЦП = %d", i); // выведем его на экран } 58Однократный асинхронный ввод с АЦП (SAMPLE())Назначение Осуществляет аналого-цифровое преобразование с канала АЦП, предварительно установленного при помощи функции SETCHANNEL(). Данной функцией удобно пользоваться для асинхронного одноканального ввода, когда не требуется переустанавливать номер канала. Параметры отсутствуют. Пример main() { int i; SETCHANNEL(0xC0); // установим первый канал i=SAMPLE(); // введем значение с канала cprintf("Код АЦП = %d", i); // выведем его на экран } 59Однократный ввод с переустановкой канала АЦП (ADCHAN())Формат int ADCHAN(int Channel); Назначение Устанавливает заданный канал АЦП и осуществляет аналого-цифровое преобразование. Данная функция удобна для осуществления асинхронного ввода с разных каналов АЦП. Возвращает результат преобразования по каналу 'Channel'. Параметры номер канала АЦП Пример main() { // введем значение с первого канала и выведем преобразованное // значение кода в вольты cprintf("\n\r Напряжение на канале %d = %f", 1, ADCHAN(0xC0)*5.12/2048); } 60Однократный ввод последовательности каналов АЦП (KADR())Формат void KADR (int *Data, int *Channels, int Nch); Назначение Вводит Nch отсчетов с каналов АЦП, указанных в массиве Channels в массив Data. Т. е. если Вам, например, требуется ввести по одному значению с трех каналов АЦП, то Вы можете сформировать целочисленный массив Channels из 3 элементов, при этом первый будет равен коду для первого канала, второй для следующего и т. д. Параметры
Пример main() { int i, Nch=3, Channels[16]={0xC0, 0xC1, 0xC2}, Data[16]; // введем первые три канала KADR(Data, Channels, Nch); // нарисуем на экране их значения в кодах АЦП (-2048 .. 2047) for(i=0; i < 3; i++) cprintf("\n\r Канал N%d = %d", i+1, Data[i]); } 61Одноканальный ввод с синхронизацией от таймера (STREAM())Формат вызова void STREAM (int *Data, int Npoint, int Channel, int Rate); Назначение Данная функция осуществляет считывание последовательности отсчетов с заданного канала АЦП с интервалом Rate между отсчетами. Параметры
Пример main() { int i, Data[100], Npoint=100, Channel=0xC0, Rate=20; // введем 100 значений по первому каналу АЦП с интервалом ввода 20 мкс STREAM(Data, Npoint, Channel, Rate); // выведем на экран первые 10 введенных значений for(i=0; i < 10; i++) cprintf("\n\rValue[%2d]=%5d", i+1, Data[i]); } 62Многоканальный ввод с синхронизацией от таймера (SOFT())Формат вызова void SOFT(int *Data, int NPoint, int *Channels, int Nch, int Rate); Назначение Функция SOFT() осуществляет ввод NPoint кадров с Nch аналоговых каналов, номера которых передаются в целочисленном массиве Channels с интервалом Rate мкс между кадрами. Под кадром подразумевается ряд отсчетов, состоящий из результатов последовательного опроса первых Nch каналов, указанных в массиве 'Channels'. Параметры
Пример main() { int i, j, Data[100], Npoint=20, Channels[16]={0xC0,0xC1,0xC2,0xC3}; int Nch=4, Rate=100; // ввод 20 кадров (20*4=80 отсчетов) по первым четырем // каналам c интервалом 100 мкс между кадрами SOFT(Data, Npoint, Channels, Nch, Rate); // выведем первые два кадра for(i=0; i < 2; i++) for(j=0, cprintf("\n\rКадр=%2d", i+1); j < Nch; j++) cprintf("Канал #%2d=%5d, ", j+1, Data[i*Nch+j]); } 63Цифро-аналоговые каналы64НазначениеНа плате АЦП установлен один Цифро - Аналоговый Преобразователь (в дальнейшем ЦАП), при помощи которого можно управлять внешними устройствами, генерировать сигналы произвольной формы и т. п. 65Асинхронный вывод на ЦАП (OUTDA())Формат вызова void OUTDA(int Code); Назначение Устанавливает выходное напряжение на ЦАПе в соответствии с кодом Code. Параметры Code - выводимый код на ЦАП (см. описание форматов данных). Пример main() { // выведем на ЦАП минимальное напряжение OUTDA (0); // выведем на ЦАП максимальное напряжение OUTDA(4095); } 66Синхронный одноканальный вывод на ЦАП (OUTDAARRAY())Формат вызова void OUTDAARRAY(int *Data, int Rate, int NPoint); Назначение Выводит NPoint отсчетов из массива Data на ЦАП с интервалом Rate Параметры
Пример #include main() { int i, Data[1000], Rate=20, NPoint=1000; // сгенерируем синус for(i=0; i < NPoint; i++) Data[i]=2000.*sin(i*M_PI/80.)+2048; // выведем его на ЦАП DASTREAM(Data, Rate, NPoint); } 67Цифровые ТТЛ линии68Чтение восьми цифровых линий (INPBYTE())Формат вызова int INPBYTE(); Назначение Возвращает состояние 8-ми внешних цифровых ТТЛ линий. При считывании ТТЛ линий автоматически генерируется цифровой строб на линии "Строб чтения цифрового порта" на внешнем разъёме. Параметры Отсутствуют Пример main() { int i; // введем восемь ТТЛ линий i=INPBYTE(); cprintf("\n\r Первая линия = %d", i & 1); cprintf("\n\r Вторая линия = %d", (i >> 1) & 1); cprintf("\n\r Третья линия = %d", (i >> 2) & 1); cprintf("\n\r Четвёртая линия = %d", (i >> 3) & 1); cprintf("\n\r Пятая линия = %d", (i >> 4) & 1); cprintf("\n\r Шестая линия = %d", (i >> 5) & 1); cprintf("\n\r Седьмая линия = %d", (i >> 6) & 1); cprintf("\n\r Восьмая линия = %d", (i >> 7) & 1); } 69Вывод на восемь цифровых линий (OUTBYTE())Формат вызова void OUTBYTE(int Code); Назначение Функция установки 8-ми цифровых ТТЛ линий в соответствии с битами младшего байта параметра 'Code'. Параметры Code - устанавливаемый код Пример main() { // выведем все нули OUTBYTE(0); // выведем все единицы OUTBYTE(0xff); } 70Работа с прерываниями71НазначениеВвод по прерываниям используется, как правило, при анализе процессов на медленных частотах ввода (до 10 кГц). Общая идеология ввода обычно сводится к следующему: плата генерирует прерывание в компьютер, в котором предварительно должен быть загружен драйвер-обработчик используемого платой прерывания, который после каждого вызова выполняет какую либо функцию (вводит с АЦП, выводит на ЦАП и т. п.). 72Генерирование прерываний (INITINTR())Формат вызова void INITINTR(int Rate1, int Rate2, interrupt *Vector); Назначение Программирует контроллер прерываний и плату для работы в режиме генерации установленного прерывания. После вызова процедуры INITINTR() плата генерирует прерывания с интервалом, равным произведению: Rate1*Rate2 мкс. которое обрабатывается драйвером-обработчиком, адрес которого передается в параметре Vector. Драйвер - обработчик должен позаботится о сбросе как контроллера прерываний компьютера, так и контроллера прерываний платы АЦП (см. Пример) Параметры
Пример Драйвер - обработчик прерывания IRQ от платы АЦП при каждом вызове вводит отсчет с первого канала АЦП и выводит его на экран. // обработчик прерывания void interrupt E_Interrupt(PARM) { int i; // введем отсчет с АЦП i=ADCHAN(0xC0); // отобразим его на экране cprintf("\n\rКод с АЦП = %5d", i); // сбросим флаг прерывания на плате АЦП и в компьютере RESET_IRQ(); } // основная функция main() { int Channel=0xC0; // установим интервал между прерываниями 10000 мкс и // адрес обработчика E_Interrupt INITINTR (1000, 10, E_Interrupt); // ждем пока не нажата клавиша while(!kbhit()); // запретим прерывания от платы и восстановим // контроллер прерываний STOP_INTR(); } 73Сброс флага прерываний (RESET_IRQ)Формат вызова void RESET_IRQ(void); Назначение Драйвер-обработчик прерывания IRQ должен перед выходом из обработки прерывания сбросить регистр прерывания на плате и в компьютере. Для этого достаточно вызвать функцию RESET_IRQ(). Параметры Отсутствуют. Пример См. Пример к SOFT_INTR. 74Выключение прерываний (STOP_INTR())Формат вызова void STOP_INTR(void); Назначение Выключает режим генерации прерываний на плате и восстанавливает контроллер прерываний PC. Данную функцию необходимо вызывать после завершения использования платы в режиме генерирования прерываний. Параметры Отсутствуют. Пример См. Пример к SOFT_INTR. 75Функции работы с таймерамиНа плате установлен трёх - канальный таймер, который может использоваться для генерирования прерываний и для синхронизации процессов ввода и вывода. 76Программирование таймера (TIMER())Формат вызова void TIMER(int Timer, int Mode, int Rate); Назначение Устанавливает один из трёх каналов таймера в режим Mode и записывает в счётчик данного канала таймера интервал Rate. Параметры
77Ожидание перехода на таймере (WAIT_TIMER())Формат вызова void WAIT_TIMER(int Timer); Назначение В том случае, если канал Timer запрограммирован в режим генерации меандра, то при помощи функции WAIT_TIMER() можно синхронизировать процессы ввода/вывода по таймеру. Параметры Timer номер канала таймера (от 0 до 2). Пример main() { int Channel=0xC0, Rate=200, i, Data[25]; // установим режим генерирования прерываний на первом канале таймера TIMER(0, 3, Rate); // установим номер канала АЦП SETCHANNEL(Channel); // введем 25 отсчётов с интервалом 200 мкс for(i=0; i < 25; i++) { // ждём перехода на первом канале таймера WAIT_TIMER(0); // введём канал АЦП Data[i]=SAMPLE(); } // отобразим введённые значения for(i=0; i < 25; i++) cprintf(“\n\rОтсчёт %2d = %6d”, i+1, Data[i]); } 78Чтение регистра состояния таймера (GET_TIMER())Формат вызова int GET_TIMER(void); Назначение Данная функция возвращает регистр таймера, в котором содержатся биты состояния всех трёх каналов таймера. При этом младший бит содержит состояние линии первого канала таймера, второй бит соответственно второго канала и третий третьего канала таймера. Параметры Отсутствуют. Пример main() { int Channel=0xC0, Rate=200, i, Data[25]; // установим режим генерирования прерываний на первом канале таймера TIMER(0, 3, Rate); // установим номер канал АЦП SETCHANNEL(Channel); // введем 25 отсчётов с интервалом 200 мкс for(i=0; i < 25; i++) { // ждём перехода на первом канале таймера while (GET_TIMER() & 1); while(!(GET_TIMER() & 1)); // введём канал АЦП Data[i]=SAMPLE(); } // отобразим введённые значения for(i=0; i < 25; i++) cprintf(“\n\rОтсчёт %2d = %6d”, i+1, Data[i]); } |
![]() |
Техническое описание и инстpукция по эксплуатации Техническое описание и инструкция по эксплуатации содержит технические данные, описание принципа действия и устройства, а также сведения,... |
![]() |
Техническое описание и инструкция по эксплуатации введение Техническое описание и инструкция по эксплуатации на «Элементы нагревательные гибкие ленточные энгл-1» предназначены для ознакомления... |
![]() |
Досмотровый комплекс “циклон-м2Ч” техническое описание и инструкция... Фирма-изготовитель гарантирует соответствие комплекса требованиям, указанным в разделе 4, в течение 24 месяцев со дня отгрузки |
![]() |
Техническое описание и инструкция по эксплуатации для используемой прошивки V 2 Настоящее техническое описание и инструкция по эксплуатации (в дальнейшем то) предназначены для изучения и правильной эксплуатации... |
![]() |
Техническое описание, инструкция по эксплуатации Настоящее техническое описание и инструкция по эксплуатации являются руководством по эксплуатации, транспортированию и хранению подстанции... |
![]() |
Техническое описание и инструкция по эксплуатации. Введение Техническое описание и инструкция по эксплуатации (ТО) предназначено для изучения и правильной эксплуатации стендов для испытания... |
![]() |
Руководство по эксплуатации мгфк 412124. 003 Рэ согласован раздел «Методика поверки» Настоящее руководство по эксплуатации содержит описание радиометра радона рра-01М-03 мгфк 412124. 003, принципа действия, а также... |
![]() |
I. техническое описание Настоящее техническое описание и инструкция по эксплуатации содержит технические данные, описание принципа действия и конструктивного... |
![]() |
Техническое описание и инструкция по эксплуатации п. Гигант 2006г Перед эксплуатацией изделия изучите техническое описание и инструкции по эксплуатации машин, входящих в состав агрегата |
![]() |
Техническое описание, инструкция по эксплуатации, каталог основных сборочных единиц. Внимание Перед тем как начать работу на пресс-подборщике, изучите техническое описание и инструкцию по эксплуатации |
![]() |
Техническое описание, инструкция по эксплуатации, каталог основных сборочных единиц. Внимание Перед тем как начать работу на пресс-подборщике, изучите техническое описание и инструкцию по эксплуатации |
![]() |
Инструкция по эксплуатации Комбинированный испытательный стенд kps 003 Инструкция по эксплуатации предназначена для пользователей и обслуживающего персонала комбинированного испытательного стенда kps... |
![]() |
Техническое описание и инструкция по эксплуатации 2С9 то москв а Настоящие Техническое описание и Инструкция по эксплуатации являются руководством для изучения и эксплуатации 120-мм самоходного... |
![]() |
Техническое описание и инструкция по эксплуатации ннпм. 468264. 002ТО Настоящее техническое описание предназначено для изучения комплекта оборудования автоматизации сутс и является обязательным руководством... |
![]() |
Портативный контролирующий прибор, который предназначен для проведения... Техническое описание и инструкция по эксплуатации распространяется на тестер акустический та-4 «Искатель-4» изготовляемый в соответствии... |
![]() |
Техническое описание и инстукция по эксплуатации 2005 содержание введение 3 Настоящее техническое описание и инструкция по эксплуатации распространяется на выпрямитель серии тпе-400/400-460- 1 мощностью 185... |
Поиск |