Выбрать главу

Посмотрим теперь на числа. Технические характеристики МП 68008, которые представляют собой том объемом 100 страниц, включают таблицы времен выполнения команд (в числе тактов). С помощью этих таблиц мы рассчитали длительности выполнения программных блоков, упоминавшиеся в тексте. Ниже приведены расчетные данные (с учетом операций векторизации и возврата) для обработчика прерываний;

Входная точка · Время выполнения (мкс)

idle              37

det__data     46,3 (внутри канала)

                    61 (конец канала)

                    92 (конец развертки, ручной СТОП)

                    105 (конец развертки, программный останов)

                    113 (конец развертки, ожидание внешнего запуска)

                    114 (конец развертки, автозапуск)

sweep__start 61

wait__trig     46 (нет запуска)

                    69 (запуск)

Большая часть приведенных длительностей не превышает «длительности пульса» усреднителя сигналов (100 мкс), что, конечно, очень хорошо. В трех случаях, однако, время обработки прерывания оказывается больше 100 мкс. Первая ситуация (конец развертки, программный останов) не страшна, поскольку затрата нескольких липших микросекунд после того, как все данные собраны, не имеет значения. Точно так же вряд ли вас обеспокоит вторая критическая ситуация (ожидание внешнего запуска), так как между сигналом внешнего запуска и началом очередной развертки всегда можно допустить некоторое время ожидания. Однако от последней ситуации (конец развертки, автозапуск) можно ожидать неприятностей, так как в режиме автозапуска мы ожидаем значение полного периода, точно равное 256 х ширина канала. В действительности, однако, здесь все в порядке по следующей причине. При использовании усреднителя сигналов в режиме автозапуска внешнее оборудование всегда запускается от усреднителя (для чего и предусмотрен выходной сигнал РАЗВЕРТКА), и если период будет отличаться на долю процента от ожидаемого, никакой беды не будет. Если, однако, вам необходимо завершать обработку за время, меньшее 100 мкс, используйте МП 68008 с тактовой частотой 10 МГц, отчего все длительности окажутся меньше на 20 %; это даст для наихудшего случая значение, меньшее 100 мкс (фактически 91 мкс). Однако при использовании более быстрого процессора не забудьте подправить программу обработчика, чтобы предоставить АЦП достаточное время для преобразования.

В целом, наше предположение, что МП 68008 позволит осуществлять выборку с частотой 10 кГц, оправдалось. Авторам это особенно приятно, так как мы написали все до последнего параграфа, и лишь тогда сами узнали, что были правы. Очевидно также, что безнадежно добиться от нашего прибора частоты 20 кГц без перехода на аппаратную обработку данных.

11.09. Некоторые дополнительные соображения

В процессе разработки прибора мы, сталкиваясь с различными возможными вариантами элементов аппаратного или программного обеспечения, должны были принять какое-то решение. Во многих случаях выбор варианта не был однозначным. Чаще всего, правда, «наилучшее решение» представлялось очевидным, но иногда альтернативный вариант был ничем не хуже; в таких случаях, как правило, мы старались выбрать решение, отличающееся максимальной простотой или иллюстрирующее наиболее употребительную методику (избегая хитроумных приемов, основанных на тонких особенностях аппаратуры), а также приводящее к упрощению программы. В реальной жизни (в противоположность книгам) вполне естественно использовать особенности аппаратуры; естественно также писать сложные программы. Рассмотрим некоторые элементы нашего проекта, допускающие альтернативные решения.

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