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

Установка управляющего цикла

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 сброшен переполнением сторожевого таймера.

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