DUE SAM3X8E, считать состояние вывода PWM

Alex_1978
Offline
Зарегистрирован: 21.07.2019

Здравствуйте
Прошу сильно не пинать ногами, только изучаю DUE...
Написал многоканальный генератор с использованием библиотеки pwm_lib.
На выводах сигналы получились норм для моей задачи, но...
Теперь нужно в реальном времени считывать состояние некоторых выводов, и ничего не получается почему-то. Чтение регистров PIO_ODSR, PIO_PDSR даёт лишь нули...

Alex_1978
Offline
Зарегистрирован: 21.07.2019

Вообще возможно читать вывод, на котором уже сгенерирован шим-сигнал, или придётся искать другие пути?

Alex_1978
Offline
Зарегистрирован: 21.07.2019

Решил проблему так: кинул перемычку на другой вывод, и с него всё прекрасно читается
А вот как считать напрямую хз...

nik182
Offline
Зарегистрирован: 04.05.2015

Читать надо PIO_PDSR , предварительно включить для него тактирование. Даташит утверждает, что если включено тактирование то в регистре PIO_PDSR всегда содержиться данные по уровню на ноге процессора не зависимо от режима.

31.5.8 Inputs
The level on each I/O line can be read through PIO_PDSR (Pin Data Status Register). This register indicates the
level of the I/O lines regardless of their configuration, whether uniquely as an input or driven by the PIO controller
or driven by a peripheral.
Reading the I/O line levels requires the clock of the PIO controller to be enabled, otherwise PIO_PDSR reads the
levels present on the I/O line at the time the clock was disabled.

 

Alex_1978
Offline
Зарегистрирован: 21.07.2019

Тактирование, точно! Читал невнимательно мануал

Включил, теперь это работает

pin_status1 = PIOC->PIO_PDSR & PIO_PDSR_P21;

Спасибо.

kulibinator
Offline
Зарегистрирован: 06.08.2021

Alex_1978 а как ты включил тактирование можешь подсказать