- •Регистры лабораторной работы lab 5_1:
- •Установка управляющего цикла
- •Компиляция и загрузка
- •Отладка
- •Включение Watchdog таймера
- •Обслуживание сторожевого таймера
- •Порядок выполнения
- •Лабораторная работа 5_3: Цифровой ввод.
- •Порядок выполнения
- •Лабораторная работа 5_4: цифровой ввод и вывод
- •Лабораторная работа 5_5: Цифровой ввод и вывод, старт/стоп – режим
Lab 5_1: “Двоичный счетчик ” на 4 LED
Цель
Целью этой лабораторной работы является практика использования базовых операций цифрового ввода/вывода.
Задание:
Инкремент переменной “counter” каждые 100 ms
Использование программной задержки для получения интервала в 100 ms
Отображение 4-х битов переменной на LED LD1(GPIO9), LD2(GPIO11), LD3(GPIO34) и LD4(GPIO49) периферийной платы.
Файлы проекта :
C – исходный файл “Lab5_1.c”
Стартовый ассемблерный файл: “DSP2833x_CodeStartBranch.asm”
Файл определения регистров: “DSP2833x_GlobalVariableDefs.c”
Командные файлы редактора связей :
“28335_RAM_lnk.cmd”
“DSP2833x_Headers_nonBIOS.cmd”
Библиотека реального времени:
“rts2800_fpu32.lib”
Файл “DSP2833x_GlobalVariableDefs.c”
Определение глобальных переменных для всей памяти отображающей периферийные регистры базирующееся на внутренней структуре
Основной файл заголовка “DSP2833x_Device.h”
Например GpioDataRegs:
Энергозависимая структура GPIO_DATA_REGS GpioDataRegs;
Эта структурная переменная объединяет все регистры, которые принадлежат этой периферийной группе, например,: GpioDataRegs.GPADAT
Каждый регистр объявлен как union чтобы допустить 32-битный - (“all”) и побитный доступ (“bit”), например:
GpioDataRegs.GPADAT.bit.GPIO9 = 1;
GpioDataRegs.GPADAT.all = 0x0000FFFF;
Шаги, которые должны быть сделаны:
Добавить “DSP2833x_GlobalVariableDefs.c” в проект
Включить “DSP2833x_Device.h” в Вашу C-программу
Регистры лабораторной работы lab 5_1:
Регисры ЦП:
Управление сторожевым таймером : WDCR
PLL тактовый регистр : PLLCR
Делитель для высокой тактовой частоты : HISPCP
Делитель для низкой тактовой частоты : LOSPCP
Регистр управления тактами периферии: PCLKCRx
Системный регистр управления и статуса: SCSR
Доступ к LED‘s (GPIO9, GPIO11,GPIO34,GPIO49):
GPA и GPB Multiplex Регистры:
GPAMUX1, GPAMUX2, GPBMUX1, GPBMUX2
GPA и GPB управляющие регистры:
GPADIR и GPBDIR
GPA и GPB Регистры данных:
GPASET, GPACLEAR, GPBSET, GPBCLEAR
Выводы GPIO9, GPIO11, GPIO34 и GPIO49 подключаются к четырем светодиодам (LD1-4) в периферийной плате. Цифровая выходная величина «1» включит свет, а цифровой «0» выключит. Lab5_1 будет использовать регистры напрвлений GPAMUX1, GPBMUX1, GPADIR, GPBDIR и регистры данных GPADAT, GPBDAT, GPASET, GPACLEAR, GPBSET и GPBCLEAR.
Программа Lab5_1 непрерывно увеличивает целую переменную "counter " и отображает текущее значение четырех младших битов на LD1 - LD4. В этой первой лабораторной работе мы не будем использовать прерывания. Модуль сторожевого таймера и основные регистры для установки тактовой частоты в этом упражнении используются.
Порядок выполнения
Создайте Файл Проекта.
1. Используя программу Code Composer Studio, создайте новый проект, названный Lab5.pjt в C:\DSP2833x_V4\Labs (или в другом каталоге, который доступен Вам).
2. Определите размер системного стека C. В окне проекта, кликните правой кнопкой мыши на проекте «Lab5» и выберите «Properties». На вкладках «C/C++ Build», «C2000 Linker», «Basic Options» установите размер стека C в 0x400.
3. Скопируйте предусмотренный файл исходной программы «Lab5_1.c» в папку проекта «C:\DSP2833x_V4\Labs\Lab5». Этот шаг автоматически включит файл в проект «Lab5».
Затем, мы воспользуемся некоторыми полезными файлами, которые предусмотрительно созданы инженерами фирмы Техас Инструмент и уже доступны на вашем жестком диске С как часть так называемого "Файла Заголовков" в пакете (sprc530.zip). Если нет, попросите, лаборанта установить этот пакет для Вас!
4. Во вкладке C/C++ , правый клик на проекте «Lab5» и выбор “Link Files to Project”.
Откройте папку «C:\tidcs\c28\dsp2833x\v131\DSP2833x_headers\source» добавьте:
DSP2833x_GlobalVariableDefs.c
Этот файл определяет все глобальные переменные, чтобы иметь доступ к памяти отображающей периферийные регистры.
5. Повторите шаг “Link Files to Project”. Из папки C:\tidcs\c28\dsp2833x\v131\DSP2833x_common\source добавьте:
DSP2833x_CodeStartBranch.asm
Этот файл содержит единственную длинную сборочную инструкцию и должен устанавливаться в кодовый раздел "BEGIN" в программе.
Всё что будет делать Компоновщик базируется на файле, который будет добавлен на следующем шаге.
6. Из C:\tidcs\c28\dsp2833x\v131\DSP2833x_headers\cmd, добавить в «Lab5»:
DSP2833x_Headers_nonBIOS.cmd
Этот файл команд компоновщика соединит все глобальные переменные и регистры с их соответствующими физическими адресами.
Опции компиляции проекта
7. Мы также должны указать маршрут поиска файлов include для C-Компилятора. Правый клик на проекте «Lab5» и выбор «Properties». Выберите «C/C++ Build», «C2000 Compiler», «Include Options». В окне "Add dir to #include search path”, добавляем следующую строку:
C:\tidcs\C28\dsp2833x\v131\DSP2833x_headers\include
Примечание: Используйте Иконку «Add», чтобы добавить новый маршрут:
Закройте окно нажав <OK>.
Модифицируйте Исходную Программу
После того, как мы подготовили наш проект, подошло время, чтобы проверить и изменить предусмотренный C-исходный файл программы "Lab5_1.c".
8. Откройте Lab5_1.c и найдите локальную функцию «InitSystem()». Вы найдете различные вопросные маркеры в этом коде. Ваше задание - заменить все вопросные маркеры, чтобы завершить код.
Установка Сторожевого Таймера (WDCR): дезактивируйте сторожевой таймер и очистите Разряд WD признака.
Установите SCSR, чтобы сгенерировать СБРОС по событию переполнения сторожевого таймера (WDENINT).
Установите модуль PLL тактового генератора: (PLLCR)-множитель на 10/2. Предположим, мы используем внешний 30 MHz генератор это установит DSP на 150 MHz внутренней частоты. Установите битовую область "DIV" в PLLCR в 10 и области DIVSEL в регистре PLLSTS на 2!
Установите высокочастотный предделитель тактового генератора (HISPCP) на «divide 2», низкочастотный предделитель (LOSPCP) на «divide 4».
Разрешите тактирование GPIO битом "GPIOINENCLK" в регистре PCLKCR3. Запретите тактирование всех других периферийных устройств в регистрох: PCLKCR0, PCLKCR1 и PCLKCR3.
9. Найдите локальную функцию «Gpio_select()» и модифицируйте её код следующим образом:
Установите все мультиплексные регистры на цифровой I/O.
Установите GPADIR: линии GPIO9 и GPIO11 на вывод, все другие линии на ввод.
Установите GPВDIR: линии GPIO34 и GPIO49 на вывод, все другие линии на ввод
Установите GPCDIR: все линии на цифровой ввод.