- •1. Введение.
- •2. Разработка аппаратного обеспечения.
- •2.3.2. Работа блока цап .
- •2.4. Согласование .
- •2.5.3. Расчет минимального напряжения на выходе модуля
- •2.5.4. Расчет надежности.
- •2.5.5. Расчет потребляемой мощности.
- •2.5.6. Тепловой расчет.
- •2.5.7. Расчет точности коэффициентов усиления.
- •3. Разработка программного обеспечения для pic-процессора.
- •3.1. Структура данных.
- •3.2. Принцип построения программы.
- •3.3 Структурная схема программы.
- •3.3.1 Тело основного цикла.
- •3.3.2. Работа модуля ацп.
- •3.3.3. Работа модуля цап.
- •3.3.4. Работа модуля ачх.
- •3.3.5. Работа модуля вах.
- •3.4. Интерфейсы:
- •3.4.1. Интерфейс общения с rs-232.
- •3.4.2. Интерфейс общения с цаПом max513.
- •3.5. Расчеты:
- •3.5.2.1. Расчет констант для задержки в модуле ацп.
- •3.5.2.2. Расчет констант для задержки в модуле цаПа.
- •4. Разработка программного обеспечения для пк.
- •4.1. Структура данных.
- •4.2. Принцип построения программы.
- •4.3. Структурная схема программы.
- •4.3.1. Модуль отображения.
- •4.3.2. Модуль преобразования Фурье.
- •4.3.3. Модуль ачх.
- •4.3.4. Модуль вах.
- •4.3.5. Интерфейс с асинхронным портом pic-процессора.
- •4.3.6. Модуль работы с файлами.
- •4.3.7. Модуль редактора.
- •4.3.8. Модуль генератора.
- •5. Инструкция по эксплуатации.
- •5.1. Порядок работы.
- •5.2. Управляющие клавиши .
- •5.3. Проверка связи с платой уэип.
- •5.4. Получение новой осциллограммы.
- •5.5. Получение нового ачх.
- •5.6. Получение нового вах.
- •5.7. Преобразование Фурье.
- •5.8. Работа с файлами.
- •5.9. Редактирование сигналов.
- •5.10. Генерация сигналов.
- •6. Заключение.
3.3 Структурная схема программы.
Структурная схема программы представлена на плакате.
3.3.1 Тело основного цикла.
После PowerON Reset по вектору reset программа попадает на процедуру начальной инициализации, которая подготавливает контролер к началу работы. В ее функции входит:
подготовка портов к работе,
подготовка таймеров,
подготовка начальных данных (инициализация).
После начальной инициализации управление передается циклу ожидания команд, в котором, при приеме команды управление передается процедуре обработки данной команды.
3.3.2. Работа модуля ацп.
Модуль АЦП является основным модулем программы , так как в нем осуществляются основные измерения .
Снятие осциллограммы можно разбить на два этапа :
Настройка коэффициентов .
Оцифровка сигнала .
Мы априорно предположим , что за время измерения сигнала его амплитуда не будет иметь значительных скачков , а значит мы сначала сможем определить максимальное значение сигнала в измеряемом диапазоне времени , а затем , установив коэффициенты таким образом , чтобы максимальная амплитуда , умноженная на соответствующие коэффициенты , соответствовала интервалу опорного напряжения АЦП ( 5 вольтам) , а затем собственно измерить сигнал.
Программно это организованно в виде нескольких процедур , вызываемых поочередно .
Вначале запускается процедура ( ADKOF ) установки необходимого коэффициента . Входным параметром для данной процедуры является переменная KOIF2 , которая в младшем полубайте содержит код усиления , а в старшем полубайте код ослабления . Процедура , в зависимости от значения находящимся в переменной , выставляет на выводах RC1, RD0, RD1 код ослабления , а на RD2,RD3, RD4 код усиления . Вначале устанавливается максимальный коэффициент ослабления .
После установки начального коэффициента ослабления запускается процедура ( KOIFAD ) определяющая коэффициенты усиления и ослабления , соответствующие максимальной амплитуде . Алгоритм работы данной процедуры следующий если новое оцифрованное значение попадает в интервал :
0x00 - 0x80 Это значит , что коэффициент ослабления большой и его надо уменьшить , или надо увеличить коэффициент усиления , в зависимости от текущего значения коэффициентов .
0x81 - 0xEF Это означает , что амплитуда принятого числа находится в интервале от Uоп- до Uоп/2 и соответственно нет необходимости менять коэффициенты .
0xF0-0xFF Это значит , что коэффициент ослабления маленький и его надо увеличить , или надо уменьшить коэффициент усиления , в зависимости от текущего значения коэффициентов .
По окончании анализа выбранный коэффициент записывается в переменную KOIF2 . После анализа коэффициентов усиления и ослабления , соответствующих максимальной амплитуде их надо установить , чтобы последующие измерения проводились с найденными коэффициентами. Далее снова запускается процедура ADKOF.
Когда подготовительные операции завершены программа запускает процедуру AD , которая и осуществляет оцифровку сигнала. У этой процедуры входным параметром является время дискретизации преобразования . При входе в процедуру AD сначала происходит инициализация внутренних переменных (счетчик цикла, указатель косвенной адресации). Затем организуем цикл на 180 значений. Внутри цикла сначала происходит снятие оцифрованного значения сигнала , помещение его в регистр аккумулятор , пересылка из аккумулятора в ячейку хранения (при пересылке значения из аккумулятора в ячейку хранения используется косвенная адресация), увеличение на единицу значения указателя косвенной адресации , уменьшение на единицу счетчика цикла и если значение счетчика не равно 0 , вызывается процедура задержки , обеспечивающая необходимую дискретизацию и передает управление на начало цикла. Если счетчик равен 0, то происходит выход из цикла, и осуществляется выход из процедуры.
Чтобы оцифрованный сигнал можно было бы отобразить на экране персонального компьютера надо передать данные, используя асинхронный последовательный порт. Для этого предназначена процедура TX. В ней , также как в процедуре AD организуется цикл на 180 значений. Используя косвенную адресацию мы последовательно передаем 180 значений сигнала , записанных по адресам 0x26 - 0x7F и 0xA6 - 0xFF в регистр TXREG и далее происходит передача байта из TXREG через асинхронный порт SCI в СОМ-порт. После передачи 180 байт передается значение коэффициентов, при которых проводились измерения .