Цель: Теперь давайте объединим 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. Скомпилируйте, загрузите и протестируйте программу как Вы сделали в предшествующих упражнениях.