Читаем Искусство схемотехники. Том 3 полностью

На рис. 11.18 изображена общая структура, сильно упрощенная.




Рис. 11.18.Программирование: общая структура.


В ОЗУ мы организовали три массива: массив DATA из 256 32-разрядных («длинных») целых чисел для хранения текущих данных для каждого канала; массив NORM из 256 16-разрядных («слова») целых чисел для хранения количества полных разверток для каждого канала, что нужно для нормализации данных в режиме автомасштабирования; и, наконец, массив DISPLAY из 256 байт для хранения данных, непрерывно поступающих на дисплей. Основные функции программы заключаются в следующем: добавление в массив DATA новых данных из АЦП при одновременной модификации массива NORM; масштабирование этих длинных чисел с преобразованием их в байты массива (в режиме автомасштабирования — с использованием массива NORM, а при ручном задании масштаба - путем сдвига); непрерывный вывод этих байтов на экран.

Общая последовательность работы программы выглядит следующим образом. При включении питания ЦП активизирует процедуру начальной загрузки и начинает выполнять программу, записанную в ПЗУ (причем временный образ ПЗУ в самом начале адресного пространства содержит вектор перехода на истинное расположение ПЗУ, как это было объяснено в разд. 11.05). Инициализируются, при необходимости, периферийные микросхемы (посылкой соответствующих байтов в их управляющие регистры); кроме того, программа должна инициализировать массивы, указатели, начальные значения переменных и проч. Приборы вроде нашего характеризуются несколькими возможными состояниями (ожидания сигнала ПУСК, накопления данных и т. д.); мы начинаем с состояния ожидания нажатия кем-нибудь кнопки ПУСК. Однако прибор и в этом состоянии живет, выводя на экран данные, которые мы инициализировали нулями.

При нажатии кнопки ПУСК программа начинает с того, что считывает состояние органов управления на управляющей панели, чтобы получить параметры для своей работы. Затем программа переходит в режим приема данных (в соответствии с параметрами, введенными с управляющей панели), выдавая одновременно на экран текущие значения усредненного сигнала. После завершения заданного числа разверток или обнаружив нажатие кнопки СТОП, программа опять входит в режим ожидания.

Синхронизация; программное управление и управление от прерываний.

Наиболее важная задача — обеспечить выполнение АЦП преобразований каждые 100 мкс и накопление получаемых данных в массиве DATA. Следующая по важности задача - регенерация дисплея с частотой по меньшей мере 40 Гц, чтобы избежать мерцания. Менее важной является задача обновления по мере изменения содержимого массива DATA также и массива DISPLAY.

Вы можете подумать, что наиболее важная задача должна решаться средствами основной (зацикленной) программы, задачи же менее важные могут время от времени отнимать время процессора с помощью прерываний. Однако это не так. Прерывания имеют приоритет по отношению к текущей программе, поэтому срочные задачи должны выполняться обработчиками прерываний, задачи же менее важные — наоборот, «главной» программой, которая получит лишь то время ЦП, которое останется от обработки прерываний. (При этом, конечно, предполагается, что процессор обрабатывает прерывания достаточно быстро. Как мы увидим, большое число регистров МП 68008 позволяет ему исключительно быстро обрабатывать прерывания; МП 68008 прямо создан для этой задачи.)

Как было показано на рис. 11.18, данные из АЦП поступают в массив DATA с помощью прерываний, создаваемых каждые 100 мкс программируемым таймером 8536. Главная программа занимается непрерывным обновлением массива DISPLAY, используя для этого подпрограмму update (обновление) (поскольку эта подпрограмма совсем не думает о том, что у нее под носом протекает интереснейший процесс сбора данных, она вынуждена проверять флаг, устанавливаемый программой обработки прерываний и свидетельствующий об окончании измерений).

Мы сначала хотели включить в главную программу также и регенерацию дисплея, но этому помешало любопытное обстоятельство. С каждой парой сигналов X, Y, посылаемых на ЦАП для вывода на экран точки, надо формировать также и сигнал «оси Z» (подсветки). В разд. 10.20 было показано, как можно сформировать «программный сигнал», посылая в бит порта сначала 1, а затем 0. Сигналы оси Z должны иметь одинаковую длительность, иначе одни точки на экране будут ярче других. Если, однако, программа время от времени прерывается, невозможно гарантировать равную длительность программных сигналов.

Упражнение 11.12. Но почему?


Перейти на страницу:

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

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

Чарльз Платт

Радиоэлектроника / Технические науки
PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника
Электроника для начинающих
Электроника для начинающих

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

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки