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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: