Лабораторная работа 5_4: цифровой ввод и вывод

      Цель: Теперь давайте объединим Lab5_1 и Lab5_3!

    Это означает, что ваше задание должно управлять скоростью вашего «LED»- счетчика кода (Lab5_1) текущим состоянием 4-битового шестнадцатеричного шифратора. Он вводит величину между 0 и 15. Например, мы можем использовать это число, чтобы изменить входной параметр для функции «delay_loop()», чтобы сгенерировать интервал времени между 100 миллисекундами (состояние шестнадцатеричного шифратора = 0) и 1.6 секунд (состояние шестнадцатеричного шифратора = 15).

    

Модифицируйте программу и файл проекта

 

1. Откройте исходную программу «Lab5_1.c» из проекта Lab5.pjt в C:\DSP2833x_V4\Labs\Lab5 и сохраните её как «Lab5_4.c».

2. Исключите файл «Lab5_3.c» из build. Правое нажатие на Lab5_3.c в окне проекта и выбор «Exclude File(s) from Build».

 

    Модифицируйте Lab5_4.C

3. В «main()», измените входной параметр функции «delay_loop()». Этот параметр определяет количество итераций for-цикла. Все что Вы должны делать, это изменить текущий параметр, использующий GPIO-вводы GPIO15…GPIO12.

4. Наилучший вариант, чтобы скорректировать параметр для времени цикла задержки  в бесконечном цикле «main()», находится между двумя шагами LED-последовательности. Учитываем, что 4-битовый шифратор даст нам число между 0 и 15. Задание - сгенерируйте период задержки между 100 миллисекундами и 1.6 секунды. Вам нужно вставить здесь небольшой математический кусок. Предположим, ваш DSP работает на частоте в 100 MHz, один цикл «for» -инструкции в функции «delay_loop()» занимает приблизительно 173 наносекунды, так что Вам нужно масштабировать соответственно величину.

5. Скомпилируйте, загрузите и протестируйте программу как Вы сделали в предшествующих упражнениях.

 

Лабораторная работа 5_5: Цифровой ввод и вывод, старт/стоп – режим

Цель: Как конечное упражнение в этой главе, давайте добавим некоторые старт/стоповые функции в наш проект.

Периферийная плата исследователя снабжена двумя кнопками PB1 и PB2. Если кнопка нажата, соответствующая входная линия читается как «0»; если нет, она читается как «1». Кнопка PB1 подключена на GPIO17, а PB2 на GPIO48.

Задание:

(1) для того, чтобы начать последовательность счета из Lab5_4, необходимо нажать PB1.

(2) для того, чтобы приостановить последовательность счета, нажать PB2.

(3) для того, чтобы продолжать счет, снова нажать PB1.

 

Модифицируйте программу и файл проекта

 

1. Откройте исходную программу «Lab5_4.c» из проекта Lab5.pjt в C:\DSP2833x_V4\Labs\Lab5 и сохраните её как «Lab5_5.c».

2. Исключите файл «Lab5_4.c» из build. Правое нажатие на Lab5_4.c в окне проекта и выбор «Exclude File(s) from Build».

 

Модифицируйте Lab5_5.c

3. Проверьте функцию «Gpio_select()» и убедитесь, что GPIO17 и GPIO48 проинициализированы как входные линии.

4. В начало Lab5_5.c добавьте два определения:

#define START GpioDataRegs.GPADAT.bit.GPIO17

#define STOP GpioDataRegs.GPBDAT.bit.GPIO48

Теперь мы можем использовать символы START и STOP вместо длинных имен битовых переменных.

5. В начало функции «delay_loop()», добавьте определение для статической переменной «run» и инициализируйте её как 0:

static unsigned int run = 0;

Эта переменная позже будет использована в качестве управляющего ключа. Если run = 0 выполнение цикла кода остановлено. Если run = 1, цикл управляющего кода разрешен.

7. В for()-цикл функции «delay_loop()», добавьте кодовую последовательность, чтобы отложить выполнение цикла пока PB1 не нажата. Эта опция должна использовать do-while

 конструкцию:

do

{

  EALLOW;

 SysCtrlRegs.WDKEY = 0x55;

  SysCtrlRegs.WDKEY = 0xAA; // service watchdog

  EDIS;

   if (START == 0 && STOP == 1) run = 1; // run control code if PB1=0

} while (!run);

Примечание: Вы должны отрегулировать вычисление входного параметра для функции «delay_loop()»!

7. После того, как выполнен do-while -цикл, нам нужно проверить, нажата ли PB2. Если нажата, то мы должны установить переменную run = 0.

if(STOP == 0)  run = 0; // пауза

 С следующим повторением for() -цикла процессор снова входит в do-while  конструкцию и ждет вторую START команду.

Процедуры шагов 6 и 7 - один из вариантов решения задания. Вы можете найти другие решения равные или более подходящие.

8. Скомпилируйте, загрузите и протестируйте программу как Вы сделали в предшествующих упражнениях.

 


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



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