|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
||||||
Перевод тиков FreeRTOS в миллисекунды16.10.2014, 11:43. Показов 9174. Ответов 24
Метки нет (Все метки)
Добрый день!
Пытаюсь перевести FreeRTOS'ные тики в миллисекунды - типа, реализация функции Sleep в миллисекундах, а не тиках.
portTICK_RATE_MS == 1000 / configTICK_RATE_HZ configTICK_RATE_HZ == 1000, configSYSTICK_CLOCK_HZ == 168000000 (это тактовая частота Cortex-M4), SysTick Reload Value Register (0xe000e014) == ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL Формулу взял из коментариев к функции 'xTimerCreate' в FreeRTOS'ном коде: * @param xTimerPeriodInTicks The timer period. The time is defined in tick periods so * the constant portTICK_RATE_MS can be used to convert a time that has been * specified in milliseconds. For example, if the timer must expire after 100 * ticks, then xTimerPeriodInTicks should be set to 100. Alternatively, if the timer * must expire after 500ms, then xPeriod can be set to ( 500 / portTICK_RATE_MS ) * provided configTICK_RATE_HZ is less than or equal to 1000. Замерял время по секундомеру на разных Sleep-периодах (10000, 15000, 20000 мс) - всегда приблизительно в 3 раза дольше получается. И вопрос - как перевести тики в миллисекунды?
0
|
||||||
| 16.10.2014, 11:43 | |
|
Ответы с готовыми решениями:
24
FreeRTOS на STM32F103 "медленные" миллисекунды. Количество тиков таймера перевести в миллисекунды
|
|
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
| 16.10.2014, 11:48 | |
|
C конкурирующего форума
Не по теме: Если вдруг кто-то с похожим столкнется - проблема решена)
1
|
|
|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
|
| 16.10.2014, 12:18 [ТС] | |
|
Спасибо. Но не помогло.
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 16.10.2014, 14:58 | ||
|
0
|
||
|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
|
| 16.10.2014, 16:26 [ТС] | |
|
Нет, не уверен.
Прошу прощения за возможно глупый вопрос (я только недавно начал работать с "железом" и еще не все уложилось в голове) - а как проверяется на какую частоту настроен PLL и его канал?
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 16.10.2014, 17:32 | |
|
RRR_RRR_RRR, читаете частоту из регистров клоков. В API также есть функция, отдающая структуру с частотой ЦПУ и частоты по шинам. По крайней мере, так в STM32F1xx. Думаю, F4 отличается в этом не сильно.
Добавлено через 2 минуты ...потом вам предстоит вычитать в доке по FreeRTOS (или глянуть в исходники) как именно (чем) она формирует задержки. Ставлю на то, что она считает с помощью RTC. Тогда надо глянуть еще чем тактуется он .
0
|
|
|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
|||||||||||||||||
| 17.10.2014, 12:37 [ТС] | |||||||||||||||||
|
Вообще, у меня сформировалось видение ситуации такое: Изначально во FreeRTOS'е задается максимальная тактовая частота (168MHz)
Вот вопросы 1) В какой момент времени частота уже понизилась? 2) Откуда взять уже пониженную тактовую частоту?
0
|
|||||||||||||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 17.10.2014, 12:50 | |
|
RRR_RRR_RRR, SysTickHandler работает на своей собственной частоте, либо от внутреннего генератора на 40кГц, либо внешнего (обычно 32768Гц), либо через делители от тактующего. Скорее всего первое у вас.
0
|
|
|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
||
| 17.10.2014, 13:08 [ТС] | ||
|
Я ориентируюсь вот на это
http://infocenter.arm.com/help... 02s03.html Там сказано:
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||
| 17.10.2014, 13:24 | |||
|
Уточните какой контроллер вы программируете? Добавлено через 3 минуты ...просто у вас в первом посте было про М4
0
|
|||
|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
|||
| 17.10.2014, 13:55 [ТС] | |||
|
Для cortex-m4 программирую.
На том же сайте Cortex-M series processors => Cortex-M4 => Revision: r0p1 => ARM Cortex-M4 Processor Technical Reference Manual => System Control => Register summary там
0
|
|||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 17.10.2014, 15:44 | |
|
RRR_RRR_RRR, берите datasheet и reference manual на свой конкретный чип. И листайте.
Повторю вопрос - какой контроллер конкретно вы програмите? Вы же понимаете, что Cortex M4 - это ядро. И реализация базовых адресов, равно как и много периферии может существенно отличаться даже у одного и того же производителя? Для примера могу привести STM32, Cortex M3. В разных семействах этого контроллера USB реализован СОВЕРШЕННО по-разному. То есть ну вообще!. В описании же и там и сям пишут "USB", но и софт и API не совпадают аж никак. То же касается и если сравнить NXP, TI и STM32, если сравнивать настройки периферии. Соответственно, есть подозрение, что клок для RTC (он же systick_timer) может тактироваться на разных контроллерах по-разному.
0
|
|
|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
||||
| 17.10.2014, 20:46 [ТС] | ||||
Микроконтроллер - STM32, борда - STM32F407VGT6.
Я тут поэкспериментировал малость. Если прочитать из STRVR регистра значение, разделить его на 3 (число из первого поста) и записать обратно, то моя функция Sleep работает нормально - проверено по секундомеру.
0
|
||||
| 17.10.2014, 20:47 | |
|
Не по теме: Ставлю на STM32
0
|
|
|
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
|
|
| 17.10.2014, 21:35 [ТС] | |
|
Не по теме: Ставлю на STM32 Это о чем речь?
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
|||
| 18.10.2014, 08:02 | |||
![]() есть файл FreeRTOSConfig.h в котором, самому ручками нужно, прописать все константы в зависимости от железа FreeRTOS портирован на 100500 платформ, и этот файл очень сильно отличается Добавлено через 4 минуты нужно знать от чего работает камень, если от внешнего то какова частота кварца потом коэффициент множителя ведь если к готовой схеме припаять кварц на 4 мГц вместо 8 то частота очень сильно изменится, несмотря на то, что софтверно все будет идентично
0
|
|||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 18.10.2014, 21:28 | |
|
ValeryS, ну, если задержка сделана на Systick timer, то частота PLL будет иметь к нему отношение только в том случае, если systick тактуется от нее. Если используется свой генератор внутренний LCI, либо внешний LCI, то нужно смотреть инициацию именно его.
RRR_RRR_RRR, зачем вы работает с регистрами, когда у вас запускается ОСь? По идее она это все должна делать, и вы должны настроить клок ее собственными настройками. Иначе есть риск что-то что-нибудь где-нибудь вылезет по частоте снова.
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
|||
| 18.10.2014, 22:22 | |||
|
чтобы узнать частоту шины и её прописывать в CORE_CLOCK а не брать готовый(чей то ) FreeRTOSConfig.h и верить что все пойдет идеально Добавлено через 4 минуты вот отсюда я начал знакомство с FreeRTOS может поможет кому нибудь http://microsin.net/programmin... part1.html вот здесь про настройку для СТМок http://microtechnics.ru/stm32-... s-chast-1/
0
|
|||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 18.10.2014, 22:37 | ||
. В данном контексте непонятно, что вы имели ввиду. А дfльнейшее рассуждение о внешнем кварце "на 4 или на 8МГц" указывает таки на высокочастотный источник тактования. Я же просто уточнил, что "камень" к systick-таймеру может и не иметь отношения. Если тактование последнего будет выполняться низкочастотным внешним или внутренним источником. Если вы слово "камень" использовали к Systick-таймеру, то я с вами согласен .
0
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
|||
| 18.10.2014, 22:44 | |||
|
привык я к нему ![]() т.е извиняюсь, если ввел в заблуждение
0
|
|||
| 18.10.2014, 22:44 | |
|
Помогаю со студенческими работами здесь
20
Как перевести unix миллисекунды (unixtimestamp) в обычные миллисекунды?
Сгенерировать uuid v1 из тиков даты
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|