- •Регистры лабораторной работы lab 5_1:
- •Установка управляющего цикла
- •Компиляция и загрузка
- •Отладка
- •Включение Watchdog таймера
- •Обслуживание сторожевого таймера
- •Порядок выполнения
- •Лабораторная работа 5_3: Цифровой ввод.
- •Порядок выполнения
- •Лабораторная работа 5_4: цифровой ввод и вывод
- •Лабораторная работа 5_5: Цифровой ввод и вывод, старт/стоп – режим
Установка управляющего цикла
10. В «Lab5_1.c» найдите бесконечный «while» (цикл 1). После инкремента переменной
"counter" добавьте следующие инструкции, чтобы проанализировать текущую величину в
"counter" :
If bit 0 of counter is 1, set GPIO9 to 1, otherwise clear GPIO9 to 0
If bit 1 of counter is 1, set GPIO11 to 1, otherwise clear GPIO11 to 0
If bit 2 of counter is 1, set GPIO34 to 1, otherwise clear GPIO34 to 0
If bit 3 of counter is 1, set GPIO49 to 1, otherwise clear GPIO49 to 0
Примечание: GPIO регистры данных являются доступным для использования комплектом 4 регистров («x» заменяется на A, B или C):
GpioDataRegs.GPxDAT – доступ к регистрам данных
GpioDataRegs.GPxSET – установка в единицу линий, которые выделяются как «1»
GpioDataRegs.GPxCLEAR – установка в ноль линий, которые выделяются как «1»
GpioDataRegs.GPxTOGGLE – инвертирование линий, которые выделяются как «1»
Например, чтобы установить линию GPIO5 в 1:
GpioDataRegs.GPASET.bit.GPIO5 = 1;
Компиляция и загрузка
11. Нажмите “Rebuild Active Project ” кнопку или выполните:
Project » Rebuild All (Alt +B)
и наблюдайте работу компилятора в окне build. Если Вы получаете ошибки или предупреждения, необходима коррекция программы.
12. Загрузите выходной файл для отладочной сессии:
Target » Debug Active Project
и переключитесь на вкладку “Debug” .
Отладка
13. Проверьте в отладочном окне исходный код «Lab5_1.» и, что синяя стрелка для текущего значения программного счетчика установлена под линией “void main(void)”.
14. Запустите выполнение в реальном времени.
Target Run
15. Проверьте, включаются ли светодиоды как ожидается. Если включаются правильно, то Вы успешно завершили первую часть Lab5_1. Остановите устройство ( Target Halt).
Включение Watchdog таймера
16. Теперь давайте приведем нашу Lab5_1 к более реалистичному сценарию. Хотя выключить сторожевой таймер было легко в первой части этого упражнения, это не - хорошая практика для реального аппаратного проекта. Сторожевой таймер является аппаратными средствами устройства безопасности; это - внутренняя часть F2833x и она должно использоваться во всех проектах. Так давайте модифицируем наш код:
17. Вернитесь назад в «C/C++»вкладку. В файле «Lab5_1.c» найдите функцию «InitSystem()» и измените WDCR - регистр. Теперь сторожевой таймер включен.
18. Что является результатом?
Ответ : Если сторожевой таймер разрешен, наша программа остановит операции после нескольких миллисекунд где-нибудь в while(1) – цикле. В зависимости от выбранного загрузочного режима, сторожевой таймер заставит контроллер прейти аппаратно на стартовую команду, обычно в точку входа во FLASH. Поскольку наша программа загружена в RAM а не во FLASH, он не начнется снова. В результате, наша программа не будет больше работать!
Примечание: загрузочный режим F2833x выбирается четырьмя GPIOs (GPIO87, 86, 85 и 84), которые выбраны в течение запуска. В случае F28335ControlCard все 4 вывода - подтянуты резисторами до 3.3 В, таким образом переход на начальный адрес FLASH выбран по умолчанию. На периферийном плате исследователя GPI084 может подключаться к GND перемычкой J3 («Boot-2») в модуле XDS100 («M1»); это выберет опцию "SCI- загрузчик". Все остальные комбинации загрузки не доступны для F28335ControlCard +.
19. Нажмите кнопку «Rebuild All» или выполните:
Project Rebuild Active Project
20. Загрузите выходной файл для отладочной сессии:
Target » Debug Active Project
и переключитесь на вкладку “Debug” .
21. Запустите выполнение в реальном времени.
Target Run
Наша программа не должна больше работать! Это - признак того, что F2833x сброшен переполнением сторожевого таймера.
