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


Пользовательская прошивка E14-140M+соединение с ПК

Вы не вошли.

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

02.12.2009 16:21:49
#51

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

Re: Пользовательская прошивка E14-140M+соединение с ПК

Да, на плате может быть установлен 2-х канальный ЦАП. На Ваш вопрос 1) ответит завтра Александр Е. (его сегодня нет).

03.12.2009 11:35:06
#52

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Пользовательская прошивка E14-140M+соединение с ПК

Олег, исходники, как и все остальное, в Библиотеке файлов.
Выбираете в фильтре E14-140-M, firmware и BIOS.

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

Вам пригодится также низкоуровневое описание (e14-140_low_level.pdf) и datasheet на процессор AT91SAM7S256.

Начсчет количества каналов ЦАП (если двух мало) - шутки ради можно попробовать использовать цифровые выходы для коммутации внешнего демультиплексора.

Олег
03.12.2009 12:14:56
#53

Гость

Re: Пользовательская прошивка E14-140M+соединение с ПК

К сожелению представление о програмировании на низком уровне только теоритически общие.
Идеальным решением для меня былобы схема модификации типа: плата получила даные по канал сбора -> отработала фунуция преобразования или расчета по полученым даным -> расчитаные даные подавались на выход цапа или дискретов .
Но получить такую схему я думаю наврятли получится.
  Чтож тогда еще вопрос подобная система на Ltr намноголи сложнее реализовывается я так понимаю придется работать с 8ми месным крейтои и 3мя модулями для сбора и  аналоговых и цифровых выходов.
140 плата получается дешевле в аппаратных затратах но не сможет покрыть все задачи а только их часть по управлению.
PS также где можно взять структуру firmware и BIOS чтобы разобрать какой исходник за что отвечает (сбор,отправка по юсб,и тд)

03.12.2009 15:44:33
#54

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Пользовательская прошивка E14-140M+соединение с ПК

Полему же, получится. Смотря какая задержка нужна.
В штатной программе сбор и вывод данных реализованы через небольшие буферы (см. файлы hardware/adc.c и hardware/dac.c), из которых (в которые) данные передаются (принимаются) по шине USB. Пуск и останов осуществляются командами по управляющему каналу тоже с USB (usb/usbcmd.c).

Вы можете сделать программу, которая вместо USB (или параллельно) будет перебрасывать данные из буфера АЦП через функцию преобразования в буфер ЦАП. И команды управления подавать сама. Задержка в 128 или 256 отсчетов, думаю, вполне реальна, а может, и 64.

LTR, как я понял, Вам посоветовали на предмет количества каналов ЦАП и аппаратных возможностей. Что касается автономной работы (вход-обсчет-выход), то тут у LTR все примерно так же, даже может быть потяжелее (там промежуточное звено со своей буферизацией - программа ltrserver - и TCP сокеты). В штатном исполнении это все периферийные устройства для компьютера. У новых крейтов LTR-EU есть возможность модификации прошивки процессора Blackfin под собственные нужды, но это опять же embedded-программирование на C, только программа и архитектура существенно сложнее.

В принципе, насколько я понимаю, может идти речь о разработке модификации на заказ под задачу, но это уже совсем другая история.

Структура firmware и BIOS E14-140-M в виде отдельной схемы не рисовалась, но объем исходных текстов небольшой, функции основных модулей понятны из комментариев в шапке файлов (а иногда и их имен). В каталоге usb/ находится реализация протокола USB, это наиболее муторная часть кода, но она Вам для понимания логики наименее нужна. Начните с чтения hardware/*.c и соответствующих им include/*.h, не стесняйтесь задавать вопросы.

03.12.2009 15:55:34
#55

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Пользовательская прошивка E14-140M+соединение с ПК

А если Вам ближе электроника, чем программирование, можно подойти с противоположного конца: прочитать руководство пользователя, затем e14-140_low_level.pdf, затем hardware/cpld.c (интерфейс между процессором и управляющей ПЛИС), далее hardware/adc.c и hardware/dac.c в части обмена данными по DMA.

Олег
07.12.2009 12:21:33
#56

Гость

Re: Пользовательская прошивка E14-140M+соединение с ПК

Александр Е ближе скорее програмирование.
Есть несколько вопросов,
1) static volatile short int f_Buffer[ADC_NBLOCKS][ADC_BLK_NSAMPLES]; сюда попадают отсчеты после сбора даных??
int DAC_SingleSample(unsigned int DAC_Val)
2)если я вызову даную функкцию в своей между

main
{
        USBBG_Worker();
        ADC_Worker();
моя функция
        DAC_Worker();
....
}
как это отразится на работе в целом?

3)пока есть задумка использовать табличное преобразование где и как можно сохранить таблици
значение порядка ххххх.хх примерно 10-15 значений в 4х таблицах

4)в какой среде собирается проэкт (просматриваю в вижул 2005)

07.12.2009 14:13:06
#57

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Пользовательская прошивка E14-140M+соединение с ПК

1) Как написано в adc.h:
/* Буфер ввода используется двумя способами:
* 1) В потоковом режиме - как кольцевой буфер на ADC_NBLOCKS блоков по ADC_BLK_NSAMPLES отсчетов.
* 2) В покадровом режиме - как простой буфер на ADC_MAX_CH отсчетов.
*/
Кольцевой буфер обслуживается также переменными f_ReadIdx, f_WriteIdx и массивом флагов f_BufState[].
Алгоритм работы кольцевого буфера довольно хитрый из-за того, что контроллер DMA использует сразу два блока (2 пары регистров адрес/длина) - "текущий" и "следующий", см. datasheet на микроконтроллер. Плюс еще обработка ситуации переполнения кольцевого буфера. Это расписано в комментарии к SSC_Interrupt_Handler().
При желании что-то можно упростить под задачу.

Чтобы просто понять, как вынимать данные из буфера, читайте ADC_Worker() case ADC_ST_RUNNING.

2) Произойдет асинхронный вывод на ЦАП, такое использование вполне допустимо. Только надо понимать, что это асинхронный вывод, т.е. временной интервал между двумя последовательными проходами цикла никак не стабилизируется.
Для МЕДЛЕННО меняющегося сигнала можно, например, отсчитывать по таймеру, когда `пора обновлять ЦАП`. Из-под прерывания вызывать DAC_SingleSample() и все остальные функции, работающие с ПЛИС, нельзя (без специальной переделки).

3) Таблицы можно сохранить в массиве, конечно. Если это константы, то компилятор положит их во flash, если переменные - может понадобиться уменьшить буферы USB или АЦП или ЦАП.
Что такое `значение порядка xxxxx.xx` ?
Плавающей точки в микроконтроллере нет! Эмуляция - это экстремально медленно, поэтому слова float и double лучше забыть. Рекомендую fixed point.

4) IAR 5.11, но в принципе можно портировать под любой кросс-компилятор, поддерживающий архитектуру ARM7TDMI. Например, winarm или yagarto.
(Кросс-компилятор - это компилятор, который делает двоичный код для архитектуры, отличной от той, на которой сам запущен. Visual C годится для чтения, но, конечно, не сможет скомпилировать программу для микроконтроллера.)

Олег
07.12.2009 15:44:13
#58

Гость

Re: Пользовательская прошивка E14-140M+соединение с ПК

правильно ли  я понимаю что в буферах находятся отсчеты в диапазоне -8000 до 8000? или какойто свой формат?

"временной интервал между двумя последовательными проходами цикла никак не стабилизируется"
как это понять?? в main есть цикл и вызов получения  данных если после него самому выводить на цап как я указал разве интервал не будет равен времени выполнения всего цикла?

Что такое `значение порядка xxxxx.xx` ? это вид числа (пример 50122.05) преобразовать в целочилленую форму несоставит труда.

08.12.2009 11:46:21
#59

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Пользовательская прошивка E14-140M+соединение с ПК

Отсчеты: в том виде, в котором они отсылаются в USB, от -8192 до 8191 (8000 соответствует некалиброванному номинальному диапазону). Калибровочные коэффициенты в модуле не применяются, они просто хранятся для чтения компьютером.

Временной интервал: будет равен времени выполнения цикла, конечно. Время выполнения цикла, в свою очередь, есть случайная величина smile

Целочисленная арифметика - без проблем. Процессор 32-разрядный с приличным умножением и развитым механизмом сдвигов (но без деления!), так что фиксированная точка (с домножением в уме на степень 2) пойдет хорошо.