Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
4.5 Исследование модуля АЦП
Одним из наиболее важных периферийных устройств процессора является аналого-цифровой преобразователь (АЦП), который работает как интерфейс, связывая контроллер с внешними устройствами.
Такие физические величины, как температура, влажность, давление, скорость и ускорение являются аналоговыми сигналами. Известно, что обрабатывать проще дискретные сигналы. Для преобразования аналоговых сигналов в дискретные и служит АЦП.
Зависимость между входным аналоговым напряжением и его дискретным значением, учитывая разрядность АЦП, выражается формулой:
(4.1) |
где и - рабочий диапазон входных напряжений;
n – разрядность
В процессоре F2812 = 3 В и = 0 В, n = 12.
В процессоре имеется 16 выводов для аналоговых сигналов. Однако при осуществлении преобразования АЦП работает только с одним выводом, что обеспечивается с помощью внутреннего устройства “выборки-хранения” (sample and hold). Процессор включает два УВХ, которые могут работать параллельно. К каждому УВХ подсоединено 8 мультиплексированных линий.
Можно запрограммировать модуль АЦП таким образом, чтобы автоматически происходило преобразование по всем 16 каналам. Следует помнить, что преобразование напряжения последующего канала осуществляется только после преобразования предыдущего.
В этой лабораторной работе мы будем преобразовывать напряжения каналов ADCIN_A0 и ADCIN_B0, подсоединенных к потенциометрам. Диапазон изменения напряжения от 0 до 3 В. Запуск АЦП осуществляется от GP таймера 1 модуля Менеджера Событий А с частотой 10 Гц.
Порядок выполнения лабораторной работы №5
Часть I
1. Создание проекта.
1.1 В Code Composer Studio создаем новый проект Lab6.pjt.
1.2 Добавляем в проект файлы: C:\tidcs\c28\dsp281x\v100\DSP281x_headers\source\DSP281x_GlobalVariableDefs.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\cmd\F2812_EzDSP_RAM_lnk.cmd;
C:\tidcs\c28\dsp281x\v100\DSP281x_headers\cmd\F2812_Headers_nonBIOS.cmd;
C:\ti\c2000\cgtoolslib rts2800_ml.lib;
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source: DSP281x_PieCtrl.c; DSP281x_PieVect.c; DSP281x_DefaultIsr.c; DSP281x_Adc.c; DSP281x_usDelay.asm.
1.3 Включаем в проект заголовочные файлы: Project → Build Options, в закладке Compiler выбираем Preprocessor и в поле Include Search Path (-i) вводим: C:\tidcs\C28\dsp281x\v100\DSP281x_headers\include;..\include.
1.4 Задаем глубину стека: Project → Build Options → Linker → Stack Size: 0x400.
1.5 Компонуем проект: Project → Build.
1.6 Загружаем выходной файл: File → Load Program → Debug\ lab6.out.
1.7 Создаем файл, в котором будет находиться программа в С-коде: File → New → Source File.
2. Инициализация системы (подпрограмма “InitSystem()”).
2.1 Разрешаем работу сторожевого таймера с коэффициентом деления 64 (WDCR), сбрасываем сторожевой таймер (SCSR).
2.2 Настраиваем ЦСП на частоту 150 МГц (PLLCR), в предделитель высокоскоростного таймера заносим 2.
2.3 Разрешаем тактирование модуля АЦП и Менеджера Событий (PCLKCR).
3. Инициализация портов (подпрограмма “Gpio_select()”).
3.1 Настраиваем все выводы на работу в качестве портов (GPxMUX).
3.2. Настраиваем порты A, D, E, F, G на ввод (GPxDIR).
3.3 Настраиваем линии порта GPIOB15 – GPIOB8 на ввод, а GPIOB7 – GPIOB0 на вывод.
3.4 Сбрасываем биты регистров GPxQUAL в ноль.
4. Инициализация модуля Менеджера Событий.
4.1 Запрещаем выходы сравнения и выбираем полярность выходов сравнения принудительный низкий уровень (GPTCONA).
4.2 В регистре T1CON выбираем: непрерывный режим счета вверх, синхронизация от внутреннего источника, запрещаем режим сравнения, разрешаем работу GP таймера 1, задаем коэффициент деления 128.
4.3 Разрешаем запуск АЦП от Менеджера Событий А (GPTCONA).
4.4 Рассчитываем значение периода (T1PR), зная, что = 10 Гц:
5. Инициализация модуля АЦП.
5.1 Задаем: двух последовательный режим, запрещаем непрерывный режим, коэффициент деления 1 (ADCTRL1).
5.2 Записываем количество преобразований 2 (ADCMAXCONV).
5.3 Выбираем каналы ADCIN_A0 и ADCIN_B0 (ADCCHSELSEQ1).
5.4 Разрешаем преобразования от Менеджера Событий А, разрешаем прерывания АЦП в конце каждой последовательности (ADCTRL2)
5.3 Задаем делитель частоты высокосоростного таймера равный 4.
6. Настройка прерываний.
6.1 Указываем адрес вектора прерываний (ADCINT).
6.2 Разрешаем прерывание 6 группы 1 (PIEIER1).
6.3 Вызываем подпрограммы инициализации: модуля прерывания периферийных устройств “InitPieCtrl()”, вектора прерывания периферийных устройств “InitPieVectTable()”, модуля АЦП “InitAdc()”.
7. Получение результатов преобразования АЦП (подпрограмма “adc_isr()”).
7.1 Читаем результаты преобразования (ADCRESULT) и сохраняем их в Voltage_A0 и Voltage_B0.
7.2 Подготавливаем АЦП к следующему преобразованию: сбрасываем последовательность SEQ1 (ADCTRL2), сбрасываем бит прерывания SEQ1 (ADCST), подтверждаем прерывания (PIEACK).
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.