АЦП AIN18, теперь Импортозамещенный

Когда-то давно наша мегакорпорация (АО «НТЦ» РИФ») выпустила свой мегабестселлер плату АЦП AIN16/18/E подробнее о нем можно посмотреть тут.
Плата являлась и является сертифицированным и внесенным в реестр средств измерений прибором для измерения Читать далее

Похожий бред:

USART и частота

Забажил USART в режиме RS485. Непонятненько так забажил — то прерывания выдает, то не выдает, но стабильно забивает выделенный под прием буфер единичками.
Хорошо, что в буфере было сделано циклическое заполнение — до конца дошел, загоняйся с начала, а то программа падала бы без объяснения причин…

Читать далее

Похожий бред:

КБ 13 и АЦП. Про гибкость C

Многие недопрограммисты, привыкшие, что тонкие места в их программах отслеживает и запрещает компилятор, не любят С за то, что в нем есть магическая штучка — void *, с помощью которой возможны любые манипуляции с памятью. Например, он позволяет подобные фокусы:

int i=0,j=0;
signed short buff[16];
unsigned long adc_buff[16];

for(i=0,j=0;j<16;i+=2,j++){
	memcpy( (void *)adc_buff + (i + bus_p->flags.adc_read_pass)*sizeof(signed short),
			(void *)buff + j*sizeof(signed short),
			sizeof(signed short)
			);
}

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

Похожий бред:

Немножко новостей про АЦП

В последнее время у КБ 13 много дел — пришлось заниматься доработками другого проекта (пульта дистанционного управления для МОБД), продолжать температурные тесты (выявились проблемы у некоторых панелей). Писать про ацпшные дела времени почти нет.
Но процесс потихоньку идет.

  • доделан модуль общения с внешним миром (по rs-485);
  • организовано считывание АЦП, учитывая пользовательские настройки — т.е. с заданной частотой.

По пути еще обнаружилось, что в board.h забыли подправить дефайн рабочей частоты, и вся периферия, в отличие от разогнанного на 48 МГц процессора, работала на 24 МГц.

Минимальное время полного цикла (с учетом того, что нужно выделить время для «сервисных» работ) установили в 20 мкс.
За это время будет один раз оцифрованы все каналы (около 10 мкс) и в оставшееся время выполнена одна из служебных функций — скинут (или считан) буфер в sdram, обработан буфер принятой по рс информации, отправлена посылка во внешний мир.

В следующем выпуске, скорее всего, будет рассказ о принципах организации основного цикла.

Похожий бред:

КБ 13 и АЦП, день 7

Вчерашние подозрения на тему последовательного порта оказались правдой — на плате все работает, глючил терминал под вистой.
Стоило запустить все на 108 плате под qnx — обмен заработал нормально и стабильно.

Полностью дописана часть, касающая конфигурации — считывание, запись, проверка. Включая вспомогательные функции, вроде подсчета контрольной суммы и т.п.

Размышляем, как наиболее эффективно (и эффектно) организовать главный цикл.
Бродят мысли о автомате, с переключением состояний, обработчиком очереди событий и очередью высокого приоритета.

Подобная идея уже была использована в нашем КБ при разработке ПО для системы управления электропитанием АИП-30М.

Главным аргументом за является то, что, с одной стороны, не хочется организовывать работу от прерываний, с другой стороны нужно обеспечить обработку асинхронных событий (например готовность АЦП или приход команды из внешнего мира), а с третьей — нужно так же обеспечить непрерывность и максимальную скорость выполнения той же оцифровки (и заполнения буфера в 512 КБ, между прочим — т.е. всего 8 МБ данных).

Похожий бред:

Реалити-шоу «КБ13 и АЦП». День 6

Запустили rs-485. Пока правда только на передачу.
Работает — и ладно, когда дойдет дело до него разберемся. Впрочем, меня гложут подозрения что виновата не плата, а гипер-терминал на ноуте под вистой — при попытке передать десяток символов виснет до синего экрана.

Начал писать прошивку (базовая версия, без наворотов). Работу, в принципе, можно разделить на три этапа: работа с конфигурацией (записать во флэш, считать, проверить валидность и т.п.), основной модуль (ацп и память) и обмены с внешним миром.
Немножко кода…

Похожий бред:

Реалити-шоу «КБ13 и АЦП». День 5

Сегодня непроверенным остался только rs — из-за отсутствия нужных железок.

И АЦП и память заставили немного повозиться — при разогнанном проце их работа, так сказать, немного отличалась от эталонной.
Читать далее

Похожий бред:

Реалити-шоу «КБ13 и АЦП». День 4.

Решили поиграться с записью во флэш, что обеспечит плате сохранение заданной конфигурации. Надо немножко отвлечься от борьбы со временем считывания. Точнее, можно и удовлетвориться достигнутым — все-равно 10 мкс это очень быстро, у АЦП от Fastwell, например, время считывания всех каналов по паспорту 160 мкс, а на деле и того больше.
По задумке, АЦП стартует, смотрит во флэш — есть ли сохраненная ранее конфигурация, и либо начинает работать по уже имеющимся настройкам, либо ждет инициализации.
Читать далее

Похожий бред:

Реалити-шоу «КБ13 и АЦП». День 3

Сегодняшний день прошел без успехов.

Пытались еще уменьшить время чтения всех каналов, но пока не получилось.
С одной стороны, в заявленные 10 мкс мы уже уложились. Функция чтения АЦП у нас вот такая:
Читать далее

Похожий бред:

Реалити-шоу «КБ13 и АЦП». День 2.

Мы снова в эфире и снова рассказываем о процессе боевых действий КБ13 против платы АЦП.

Борьба со временем.

С утра пришлось взять в руки секундомер — время снятия замеров всех 16 каналов АЦП не соответсвовало заявленным 10 мкс, а занимало где-то 60-70 мкс, что, конечно же, многовато при наших возможностях.

Оптимизация времени считывания пошла несколькими путями:

  • разгон процессора;
  • уменьшение таймингов на сигналы чипселекта, рида и пульса;
  • увеличение частоты выдачи чипселекта и рида контроллером.

Читать далее

Похожий бред: