
- •Пояснительная записка к курсовой работе
- •Оглавление
- •1. Постановка задачи.
- •1.1. Стандартное задание
- •1.2. Индивидуальное задание
- •2. Техническое задание
- •3. Описание аппаратных и программных средств лабораторного комплекса
- •3.1. Структура аппаратных средств
- •3.1.1. Структурная схема лабораторного комплекса
- •3.1.2. Плата мк – системы
- •3.1.2.1. Конфигурируемые узлы мк c8051f064
- •Интерфейс прямого доступа к памяти (dma)
- •3.1.2.2. Внешняя память xram
- •3.1.2.3. Входные усилители
- •3.1.2.4. Микросхема моста uart-usb
- •3.1.2.5. Сопряжение платы с pc
- •3.1.2.6. Питание платы
- •3.1.3. Требования к pc
- •3.1.4. Осциген
- •. Перечень программных средств лабораторного комплекса
- •Средства программирования и отладки мк-системы
- •Интегрированная среда разработки фирмы SiLabs ide 2.0
- •3.2.1.2. Ассемблер, компилятор и линкер интегрированной среды разработки Keil
- •3.2.2. Средства разработки Windows-приложений
- •3.2.2.1. Среда разработки
- •3.2.2.2. Библиотека win32 api функций
- •3.2.3. Приложения для осцигеНа.
- •3.2.3.1. Драйвер конфигурируемого выносного блока
- •3.2.3.2. Windows-приложение ogView
- •3.2.4. Драйвер виртуального com-порта фирмы SiLabs
- •Организация бесконечного цикла встроенного приложения
- •Отключение сторожевого таймера
- •Переключение с внутреннего генератора на внешний
- •Конфигурирование портов ввода/вывода
- •Конфигурирование аналого-цифровых преобразователей adc
- •Конфигурирование интерфейса dma
- •Инициализация последовательного интерфейса uart
- •Выбор и инициализация таймера для установки скорости обмена данными по последовательному каналу
- •Инициализация таймера для установки времени дискретизации входного сигнала
- •Прием данных с pc
- •Другие используемые функции
- •Конфигурирование узлов мк с учетом данных, пришедших с pc
- •Разработка Windows-приложения
- •4.4.1. Особенности использования среды разработки
- •4.4.2. Описание файлов проекта
- •4.4.3. Обобщенная схема алгоритма многопоточного приложения
- •4.4.4. Внешний вид и описание графического интерфейса, принципы построения программы
- •Описание структуры и организация программы
- •4.4.5.1. Назначение подключаемых файлов
- •4.4.5.2. Описание прототипов функций
- •4.4.5.3. Функция WinMain()
- •4.4.5.4. Функция главного окна
- •4.4.5.5. Организация дополнительных потоков, их назначение
- •4.4.5.6. Рабочие функции дополнительных потоков
- •4.4.5.7. Синхронизация потоков
- •4.4.5.8. Особенности обработки сообщений Windows в программе
- •4.4.6.2. Организация настроек com-порта в графическом интерфейсе
- •4.4.6.3. Использование функций WaitCommEvent(), WaitForSingleObject(), WaitForMultiplyObject()
- •Работа оператора с приложением
- •4.4.7.1. Последовательность запуска приложения на мк и пк в лаборатории
- •4.4.7.2. Адаптация к спектру входного сигнала
- •Описание протокола rs-232
- •Список используемых источников информации
- •Приложения
- •Исходные тексты модулей программы для мк
- •Фрагменты листингов файлов мк-приложения, полученные в результате трансляций: map-file и др
- •Исходные тексты файлов Windows-приложения
Конфигурирование аналого-цифровых преобразователей adc
Регистр ADC0CN:
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
Значение при сбросе: 00000000 |
AD0EN |
AD0TM |
AD0INT |
AD0BUSY |
AD0CM1 |
AD0CM0 |
AD0WINT |
- |
|
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит 3 |
Бит 2 |
Бит 1 |
Бит 0 |
Бит 7: AD0EN - бит включения АЦП0
0 – АЦП0 отключен, находится в режиме пониженного энергопотребления
1 - АЦП0 включен, находится в активном режиме и готов к преобразованию
данных или калибровке
Бит 6: AD0TM – бит установки режима слежения АЦП0
0 – когда АЦП0 включен, слежение осуществляется всегда, за исключением
момента преобразования
1 - режим слежения определяется битами AD0CM1-0
Бит 5: AD0INT – флаг прерывания от АЦП0 (устанавливается при завершении преобразования). Этот флаг должен быть сброшен программно.
0 – АЦП0 не закончил преобразование данных
1 - АЦП0 закончил преобразование данных
Бит 4: AD0BUSY – бит занятости АЦП0
Чтение:
0 – преобразование данных завершено или в данный момент не осуществляется
1 - идет процесс преобразования данных
Запись:
0 – не оказывает никакого влияния
1 - инициирует запуск преобразования АЦП0, если биты ADC0CM1-0 = 00b
Биты 3-2: AD0CM1-0 – биты выбора режима запуска преобразования АЦП0
Если AD0TM = 0
00 – запуск преобразования осуществляется установкой в 1 бита AD0BUSY
01 - запуск преобразования осуществляется при переполнении Таймера 3
10 - запуск преобразования осуществляется нарастающим фронтом сигнала CNVSTR0
11 - запуск преобразования осуществляется при переполнении Таймера 2
Если AD0TM = 1
00 – слежение (выборка) начинается в момент установки в 1 бита AD0BUSY, после
истечения периода слежения начинается преобразование данных
01 - слежение (выборка) начинается при переполнении Таймера 3, после истечения
периода слежения начинается преобразование данных
10 – преобразование АЦП0 запускается нарастающим фронтом сигнала CNVSTR0
11 - слежение (выборка) начинается при переполнении Таймера 2, после истечения
периода слежения начинается преобразование данных
Бит 1: AD0WINT - флаг прерывания от детектора диапазона АЦП0 (сбрасывается программно)
0 – не зафиксировано соответствия преобразованных данных заданному диапазону
1 - зафиксировано соответствия преобразованных данных заданному диапазону
Бит 0: зарезервирован. Необходимо записать 0b.
Регистр REF0CN:
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
Значение при сбросе: 00000000 |
- |
- |
- |
- |
- |
- |
BIASE0 |
REFBE0 |
|
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит 3 |
Бит 2 |
Бит 1 |
Бит 0 |
Бит 7-2: зарезервированы, читаются как b000000, необходимо записать b000000.
Бит 1: BIASE0 – бит включения генератора напряжения смещения АЦП0 (если АЦП используется, то этот бит должен быть установлен в 1)
0 – внутренний генератор напряжения смещения отключен
1 - внутренний генератор напряжения смещения включен
Бит 0: REFBE0 – бит включения внутреннего буферного усилителя АЦП0
0 - внутренний буферный усилитель АЦП0 отключен
1 - внутренний буферный усилитель АЦП0 включен
Конфигурирование АЦП происходит в функции ADC_Init() по следующему алгоритму:
Запись значения 0xC4 (b11000100) в регистр ADC0CN – включение ADC0, режим слежения определяется битами 01, т.е. запуск преобразования осуществляется при переполнении Таймера3;
Запись значения 0x03 (b00000011) в регистр REF0CN – включение генератора напряжения смещения ADC0 и включение внутреннего буферного усилителя, внутреннее опорное напряжение подается на вывод VREF0;
Задержка для стабилизации генератора опорного напряжения
Запись значения 0x00 в регистр ADC0CF – установка в качестве периода преобразования АЦП0 Tconv = 21*TSYSCLK
Запись значения 0x00 в регистр AMX0SL – выбор однофазного режима работы ADC0;
Проверка переменной ADC_Mode, если выбран дифференциальный режим работы АЦП, то повторить пп.1-4 для соответствующих регистров ADC1, а также записать значение 0x40(b1000000) в регистры AMX0SL и AMX1SL (установка в '1' бита DIFFSEL – выбор дифференциального режима работы).
Описанный алгоритм иллюстрирует следующий код:
ADC0CN = 0xC4; // ADC0 Enabled, Timer3 start-of-conversion
// track 16 SAR clocks before data conversion
// upon Timer3 OV. DMA will enable ADC as needed
REF0CN = 0x03; // ADC0: turn on bias generator and internal reference
for(i=0;i<10000;i++); // Wait for Vref to settle
ADC0CF = 0x00; // Setting Conversion Clock Period Bits
// (ADC0SC[3..0]=0000, Tcon= 21*SYSCLK)
//ADC mode (ADC0 / DIFF)
if (ADC_Mode == 's')
AMX0SL = 0x00; // Single-ended mode, ADC0
else if (ADC_Mode=='d')
{
AMX0SL = 0x40; // Differential mode
SFRPAGE = ADC1_PAGE; // Switch to ADC1 Page
ADC1CN = 0xC4; // ADC1 Enabled, Timer3 start-of-conversion
// track 16 SAR clocks before data conversion
// upon Timer3 OV. DMA will enable ADC as needed
REF1CN = 0x03; // ADC1: turn on bias generator and internal reference
for(i=0;i<10000;i++); // Wait for Vref to settle
ADC1CF = 0x00; // Setting Conversion Clock Period Bits
}