Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab 5 ввод-вывод.doc
Скачиваний:
8
Добавлен:
25.08.2019
Размер:
124.42 Кб
Скачать

Lab 5_1: “Двоичный счетчик ” на 4 LED

Цель

Целью этой лабораторной работы является практика использования базовых операций цифрового ввода/вывода.

Задание:

  • Инкремент переменной “counter” каждые 100 ms

  • Использование программной задержки для получения интервала в 100 ms

  • Отображение 4-х битов переменной на LED LD1(GPIO9), LD2(GPIO11), LD3(GPIO34) и LD4(GPIO49) периферийной платы.

Файлы проекта :

  1. C – исходный файл “Lab5_1.c”

  2. Стартовый ассемблерный файл: “DSP2833x_CodeStartBranch.asm”

  3. Файл определения регистров: “DSP2833x_GlobalVariableDefs.c”

  4. Командные файлы редактора связей :

“28335_RAM_lnk.cmd”

“DSP2833x_Headers_nonBIOS.cmd”

  1. Библиотека реального времени:

“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: все линии на цифровой ввод.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]