PIC32, бесплатные часы RTOS в мс - PullRequest
1 голос
/ 23 ноября 2011

У меня PIC32MX460F512L с ОСРВ, и я ищу способ получить разницу в мс между двумя точками в коде.

Этот код ниже получает время такта, но не время в мс.

static unsigned long gMSTP_timer_tick = 0 ;
void MSTP_timer_reset() {
    gMSTP_timer_tick = xTaskGetTickCount( ) ;
}
FLOAT32 MSTP_timer_differences() {
    unsigned long differences = xTaskGetTickCount( ) - gMSTP_timer_tick ;
    gMSTP_timer_tick += differences ;

    return (FLOAT32) differences ;
}

Мой вопрос

В бесплатной ОСРВ есть ли способ получить текущее относительное время в мс?

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Тики должны иметь заданную частоту. 1000 Гц -> прерывание и переключение задач срабатывают каждые 1 мс. Это будет не совсем так, особенно если у вас есть другие прерывания. Но он должен сохранять эту частоту.

Я полагаю, что вы сможете сравнить два числа тиков и поделить их на частоту тиков, чтобы получить задержку.

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

Вы также можете задать список FreeRTOS .

1 голос
/ 23 ноября 2011

Согласно этому связанному вопросу , есть значение configTICK_RATE_HZ.

Используя это значение, нужно только немного математики определить, сколько миллисекунд числогалочки соответствует.Что-то вроде:

return (FLOAT32) (differences / configTICK_RATE_HZ / 1000);

Существует также набор API-интерфейсов таймера, на которые вы, возможно, захотите посмотреть, которые поддерживают обратные вызовы в ваш код через определенные промежутки времени.Не знаю, подойдет ли это вам или нет, но, может быть, стоит посмотреть:

http://www.freertos.org/FreeRTOS-Software-Timer-API-Functions.html

0 голосов
/ 17 апреля 2018

FreeRtos использует таймер 1 в порту pic32, вы можете найти конфигурацию регистра timer1 в файле port.c и рассчитанную временную базу точной частоты тиков config_TICK_RATE_HZ в миллисекундах.и умножить в галочках значение галочки.Обычно базовый config_TICK_RATE_HZ: 1000 Гц ~ 1 мс, 100 Гц ~ 10 мс

...