Проблемы с выходными PIN-кодами GPIO для измерения времени выполнения.Код C |Raspberry Pi 3B + |Использование библиотеки BCM 2835 - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь измерить время выполнения различных функций моего кода (написанного на C), чтобы определить узкое место.Да, я смог сделать это с помощью операторов печати, но я бы предпочел использовать осциллограф для экономии ресурсов, поскольку это проект обработки в реальном времени.(Я понимаю, что Rpi не идеально подходит для таких целей).

Язык кода: C

Операционная система: Raspbian GNU / Linux 9 (stretch)

Ядро: Linux 4.9.80-v7 +

Архитектура: arm

Проблема: до использования вывода GPIO для синхронизации код работает правильно и обновляет все необходимые переменные с каждой итерацией и дает ожидаемые результаты.Однако, как только я введу ПИН-код для синхронизации итерации кода, все остальные выходные данные консоли начнут выдавать фиктивные номера.

Я не уверен, как это диагностировать / отладить, так как я не получаю никаких сообщений об ошибках.

Мой метод настройки PIN-кода:

код вне функции:

#define TIME_ITERATION      RPI_GPIO_P1_05 //
#define TIME_ITERATION_1()  bcm2835_gpio_write(TIME_ITERATION, HIGH)
#define TIME_ITERATION_0()  bcm2835_gpio_write(TIME_ITERATION, LOW)

код внутри функции:

// SETUP THE PIN TO BE AN OUTPUT
bcm2835_gpio_fsel(TIME_ITERATION, BCM2835_GPIO_FSEL_OUTP);
// SET PIN HIGH
TIME_ITERATION_1();

...
<body of function>
...

// SET PIN LOW
TIME_ITERATION_0();

Полный скрипточень длинный, поэтому я решил опубликовать этот отрывок, показывающий логический поток.Таким образом, по сути, вывод устанавливается как выход, а затем переключается на ВЫСОКИЙ в начале функции и НИЗКИЙ в конце.Как указано в названии, я использую библиотеку BCM2835.

Я ценю ваше время и ваш вклад.

...