Программирование ARM nRF5 SDK v12.3.0: пример использования PPI Tue, April 23 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

nRF5 SDK v12.3.0: пример использования PPI Печать
Добавил(а) microsin   

Пример использования блока Programmable Peripheral Interconnect (PPI) из SDK [1] реализует взаимодействие между тремя таймерами.

Timer 0 запускается в основном цикле main каждые 100 мс. Значение счетчика timer 0 передается через порт UART, и это значение может наблюдаться в одной из программ терминала (например PuTTy) на хосте, который подключен через переходничок USB-UART.

Timer 1 генерирует события каждую четную секунду, т. е. через 2, 4, 6, 8, ... секунд. Эти события запускают stop task для timer 0. Timer 2 генерирует события каждую нечетную секунду, т. е. через 1, 3, 5, 7, ... секунд. Эти события запускают start task для timer 0, который работает в режиме счетчика. Задачи start task и stop task активируются блоком PPI.

Когда приложение запускается, значение счетчика timer 0 в течение первой секунды инкрементируется каждые 100 мс. Затем timer 2 создает событие, которое передается через PPI и генерирует stop task для timer 0, поэтому timer 0 останавливается. Несмотря на то, что основной цикл программы инициирует инкремент timer 0, его значение не изменяется, поскольку счетчик остановлен. После одной секунды timer 1 создает событие, которое передается через PPI, генерируя start task для timer 0. Timer 0 снова начинает счет, и значение счетчика снова увеличивается каждые 100 мс, пока не timer 0 не будет остановлен опять таймером 2 через одну секунду.

PPI timers example

Приложение при запуске выполняет 3 шага по конфигурированию трех таймеров:

• Timer 0 конфигурируется в режиме счетчика.
• Timer 1 конфигурируется для генерации события каждую четную секунду.
• Timer 2 конфигурируется для генерации события каждую нечетную секунду.

PPI конфигурируется таким образом, чтобы timer 0 останавливался и запускался по событиям, которые генерируют timer 1 и timer 2 соответственно. Основной цикл инкрементирует timer 0, и печатает значение его счетчика каждые 100 мс.

Исходный код этого примера и файл проекта можно найти в каталоге установки SDK, папка examples\peripheral\ppi.

[Тестирование примера PPI]

1. Скомпилируйте код примера.
2. Запустите эмулятор терминала наподобие PuTTY, и подключите его к используемому COM-порту со следующими настройками: Baud rate 115.200, 8 data bits, 1 stop bit, No parity, HW flow control: None.
3. Наблюдайте в выводе терминала значения счетчика, которые будут циклически, каждую секунду инкрементироваться и переставать инкрементироваться.

[Ссылки]

1. nRF5 SDK v12.3.0 PPI Example site:nordicsemi.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page