реклама на сайте
подробности

 
 
> Глобальный счетчик милисекунд.
Jenya7
сообщение Jun 11 2018, 04:27
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть програма для Kinetis K10.
В ней есть глобальный счетчик милисекунд который инкрементируется каждую милисекунду в прерывании.
Код
void TI1_OnInterrupt(LDD_TUserData *UserDataPtr)
{
   globalSysTimer++;
}
И на основе этой переменной строятся таймауты и периодические циклы.
Это очень удобно и работать с переменной просто но мне не нравиться парадигма прерывания програмы каждую милисекунду.
У Kinetis есть аппаратный таймер (FlexTimer Module (FTM)) 16 бит - это дает нам 65536 милисекунд до переполнения что конечно очень мало для нормальной работы.
Что поинтересней можно придумать для Cortex-M4?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Jun 12 2018, 08:37
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



а как я устанавливаю период тика в SysTick? я что то не нашел никаких прескайлер регистров
Код
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */

    SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
    NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
    SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
    SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
    SysTick_CTRL_TICKINT_Msk   |
    SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
    return (0);                                                  /* Function successful */
}

Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 12 2018, 09:14
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Jun 12 2018, 11:37) *
а как я устанавливаю период тика в SysTick? я что то не нашел никаких прескайлер регистров

Может, поискать в документации? Там все очевидно: и источник, и делитель.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 12 2018, 09:24
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(adnega @ Jun 12 2018, 14:14) *
Может, поискать в документации? Там все очевидно: и источник, и делитель.

покажите где тут делитель
http://infocenter.arm.com/help/index.jsp?t...a/Babieigh.html
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 12 2018, 11:14
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Глобальный счетчик милисекунд.   Jun 11 2018, 04:27
- - adnega   Цитата(Jenya7 @ Jun 11 2018, 07:27) Это о...   Jun 11 2018, 07:34
|- - Jenya7   Цитата(adnega @ Jun 11 2018, 13:34) Ничег...   Jun 11 2018, 08:35
- - Serge V Iz   В мире "больших" вычислительных систем д...   Jun 11 2018, 14:52
|- - Jenya7   Цитата(adnega @ Jun 12 2018, 17:14) Перев...   Jun 12 2018, 11:47
|- - adnega   Цитата(Jenya7 @ Jun 12 2018, 14:47) мне н...   Jun 12 2018, 13:17
|- - jcxz   Цитата(adnega @ Jun 12 2018, 16:17) или м...   Jun 13 2018, 05:57
- - ViKo   милли-   Jun 12 2018, 13:19
|- - adnega   Цитата(ViKo @ Jun 12 2018, 16:19) милли- ...   Jun 12 2018, 13:25
- - Jenya7   все так грустно? только мне на планете Земля нужны...   Jun 13 2018, 05:39
- - AlexandrY   Цитата(Jenya7 @ Jun 11 2018, 07:27) Это о...   Jun 13 2018, 06:02
|- - Jenya7   Цитата(AlexandrY @ Jun 13 2018, 12:02) У ...   Jun 13 2018, 06:41
|- - jcxz   Цитата(Jenya7 @ Jun 13 2018, 09:41) PIT н...   Jun 13 2018, 06:48
||- - AlexandrY   Цитата(jcxz @ Jun 13 2018, 09:48) 2 Alexa...   Jun 13 2018, 08:55
|- - Сергей Борщ   QUOTE (Jenya7 @ Jun 13 2018, 09:41) PIT н...   Jun 13 2018, 08:03
- - ViKo   Цитата(Jenya7 @ Jun 11 2018, 07:27) Это о...   Jun 13 2018, 08:25
|- - Jenya7   Цитата(ViKo @ Jun 13 2018, 14:25) Допусти...   Jun 13 2018, 09:00
|- - ViKo   Цитата(Jenya7 @ Jun 13 2018, 12:00) я не ...   Jun 13 2018, 09:05
||- - Jenya7   Цитата(ViKo @ Jun 13 2018, 15:05) Как мож...   Jun 13 2018, 09:25
||- - ViKo   Цитата(Jenya7 @ Jun 13 2018, 12:25) у мен...   Jun 13 2018, 09:36
||- - adnega   Цитата(Jenya7 @ Jun 13 2018, 12:25) можно...   Jun 13 2018, 09:38
|- - adnega   Jenya7, вы по все видимости начинающий разработчик...   Jun 13 2018, 09:35
|- - jcxz   Цитата(Jenya7 @ Jun 13 2018, 12:00) это т...   Jun 13 2018, 09:52
- - Jenya7   adnega так что вы предлагаете? я честно говоря так...   Jun 13 2018, 09:41
|- - adnega   Цитата(Jenya7 @ Jun 13 2018, 12:41) по мо...   Jun 13 2018, 10:15
|- - Jenya7   Цитата(adnega @ Jun 13 2018, 16:15) Дык, ...   Jun 13 2018, 10:17
- - pokk   Раньше, тоже делал счет миллисекунд из прерывания,...   Jun 17 2018, 03:37
|- - Jenya7   Цитата(pokk @ Jun 17 2018, 08:37) Раньше,...   Jun 18 2018, 05:02
- - adnega   А почему SysTick не используете?   Jun 18 2018, 06:40
|- - Jenya7   Цитата(adnega @ Jun 18 2018, 11:40) А поч...   Jun 21 2018, 05:12
|- - adnega   Цитата(Jenya7 @ Jun 21 2018, 08:12) у нег...   Jun 21 2018, 05:15
||- - juvf   Цитата(adnega @ Jun 21 2018, 10:15) Вы оп...   Jun 21 2018, 05:24
||- - Jenya7   Цитата(adnega @ Jun 21 2018, 10:15) Вы оп...   Jun 21 2018, 05:44
||- - adnega   Цитата(Jenya7 @ Jun 21 2018, 08:44) Я НЕ ...   Jun 21 2018, 06:02
||- - juvf   Цитата(adnega @ Jun 21 2018, 11:02) Вы мо...   Jun 21 2018, 06:23
||- - adnega   Цитата(juvf @ Jun 21 2018, 09:23) У меня ...   Jun 21 2018, 06:32
||- - juvf   Цитата(adnega @ Jun 21 2018, 11:32) А есл...   Jun 21 2018, 06:37
||- - adnega   Цитата(juvf @ Jun 21 2018, 09:37) А они м...   Jun 21 2018, 07:05
||- - jcxz   Цитата(adnega @ Jun 21 2018, 10:05) И мне...   Jun 21 2018, 07:12
||- - juvf   Цитата(adnega @ Jun 21 2018, 12:05) Допус...   Jun 21 2018, 07:26
||- - adnega   Цитата(juvf @ Jun 21 2018, 10:26) зачем в...   Jun 21 2018, 09:12
|- - Obam   Цитатадолгие годы игры в покер научили меня воврем...   Jun 21 2018, 16:08
- - juvf   Цитата(Jenya7 @ Jun 11 2018, 09:27) У Kin...   Jun 20 2018, 04:42
- - Obam   В K10 4-канальный 32-битный PIT (программируемый и...   Jun 20 2018, 18:54
- - ViKo   ТС не умеет задавать такое значение в SysTick тайм...   Jun 21 2018, 05:44
- - ViKo   То есть, мои аргументы, что вы теряете 0.03% произ...   Jun 21 2018, 05:51
|- - Jenya7   Цитата(ViKo @ Jun 21 2018, 10:51) То есть...   Jun 21 2018, 05:59
- - ViKo   А через каждые 10 мс прерываться рискнете? Тоже но...   Jun 21 2018, 06:28


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 04:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01475 секунд с 7
ELECTRONIX ©2004-2016