|
|
|
Глобальный счетчик милисекунд. |
|
|
|
Jun 11 2018, 04:27
|
Профессионал
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075
|
Есть програма для Kinetis K10. В ней есть глобальный счетчик милисекунд который инкрементируется каждую милисекунду в прерывании. Код void TI1_OnInterrupt(LDD_TUserData *UserDataPtr) { globalSysTimer++; } И на основе этой переменной строятся таймауты и периодические циклы. Это очень удобно и работать с переменной просто но мне не нравиться парадигма прерывания програмы каждую милисекунду. У Kinetis есть аппаратный таймер (FlexTimer Module (FTM)) 16 бит - это дает нам 65536 милисекунд до переполнения что конечно очень мало для нормальной работы. Что поинтересней можно придумать для Cortex-M4?
|
|
|
|
|
Jun 11 2018, 07:34
|
Гуру
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702
|
Цитата(Jenya7 @ Jun 11 2018, 07:27) Это очень удобно и работать с переменной просто но мне не нравиться парадигма прерывания програмы каждую милисекунду. Ничего страшного. Я обычно делаю 10 мс, но при помощи SysTick. В Cortex именно этот таймер используется для этих целей. Цитата(Jenya7 @ Jun 11 2018, 07:27) это дает нам 65536 милисекунд до переполнения что конечно очень мало для нормальной работы. А что значит "нормальная работа"? Переполнения конечно же нужно обрабатывать. При 32-битном счетчике переполнения будут каждые 49 дней, но их тоже нужно обрабатывать.
|
|
|
|
|
Jun 12 2018, 11:14
|
Гуру
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702
|
Цитата(Jenya7 @ Jun 12 2018, 12:24) покажите где тут делитель Цитата The processor has a 24-bit system timer, SysTick, that counts down from the reload value to zero, reloads, that is wraps to, the value in the SYST_RVR register on the next clock edge, then counts down on subsequent clocks. Перевожу: есть 24-битный вычитающий таймер. Когда он досчитает до нуля, то перегружается значением из SYST_RVR. Таким образом можно получить периодические прерывания, а в них уже работать с софтовыми интервалами. Обращаю внимание на бит CLKSOURCE регистра SYST_CSR. Он выбирает источник тактирования. У STM32, например, можно тактировать от HCLK или HCLK / 8 за счет этого бита. Цитата The RCC feeds the Cortex System Timer (SysTick) external clock with the AHB clock (HCLK) divided by 8. The SysTick can work either with this clock or with the Cortex clock (HCLK), configurable in the SysTick Control and Status Register.
|
|
|
|
|
Jun 13 2018, 05:57
|
Гуру
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713
|
Цитата(adnega @ Jun 12 2018, 16:17) или мили- секунд? Миля - единица длины, секунда - времени. Даже как-то затрудняюсь вот так ставить между ними знак '-'. Цитата(adnega @ Jun 12 2018, 16:25) У ТС именно "мили". Нужно понять что это значит. С точки зрения физики: значение разницы расстояния и времени пока не исследовано Цитата(Jenya7 @ Jun 13 2018, 08:39) все так грустно? только мне на планете Земля нужны временные метки в проекте? нет. Только у Вас это вызывает трудности
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|