Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: Буфер данных Stm32f103c8

Сб авг 11, 2018 22:43:14

Не устраивает что? Практически все Оси имеют системный таймер на 1mS . Если нужны интервалы меньше, вменяемо юзать аппаратные решения а не задержки процессорного времени.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 06:06:28

Разберусь - скажу что не устраивает.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 12:30:51

А кто-нибудь использует этот SysTick в мирных целях? Мне он всегда казался страшно неудобным, отчего я так его ни разу и не попользовал.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 13:50:28

я использую для нетребовательных вещей флаги выставлять - динамическую индикацию переключать, пакеты modbus-а обрабатывать, антидребезг, такое вот все.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 14:14:33

ау ARV
ку-ку, досикус.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:16:57

А кто-нибудь использует этот SysTick в мирных целях? Мне он всегда казался страшно неудобным, отчего я так его ни разу и не попользовал.


То есть тут я, похоже, не дурак. Это лыжи не едут.... Блин, ну хоть что-то хорошее...

Добавлено after 1 minute 2 seconds:
Я-то думаю, почему я его не могу подогнать под себя.

Добавлено after 1 minute 37 seconds:
ау ARV
:facepalm:
ку-ку, досикус.
:facepalm:

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:25:27

khch, systick изначально задумывался как источник этих самых тиков для RTOS. Он является частью ядра контроллера, а не "периферии". А RTOS использует этот таймер "в тёмную" и многих мало интересует, что там происходит.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:27:07

Я-то думаю, почему я его не могу подогнать под себя

а что там "подгонять"? Это самый тупой из возможных таймеров. Единственное, что он умеет - выдавать прерывание раз в n-цать тактов.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:31:33

Я посмотрел в HAL_Delay, там был этот систик. Може я что-то упустил - это характерно.
как я понимаю, мне надо изучать таймеры? Мне нужны микросекундные интервалы. Сейчас я этим и занят.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:37:14

Да, таймеры. Их там несколько разновидностей (по количеству функционала). Самые продвинутые так и называются Advanced timers. В зависимости от контроллера их может быть до двух, это TIM1, TIM8. Ими можно и импульсы микросекундные захватывать и трехфазные моторы крутить, плюс аппаратно объединять их.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:51:39

Если мой таймер сидит на шине с частотой 32,000,000, значит на одну микросекунду мне надо записать в регистр ARR число 32. Я правильно считаю??
Оставим в сторону точность работы кварца.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:53:56

khch писал(а):Я-то думаю, почему я его не могу подогнать под себя.
Системный таймер самый простой. Про другие прочитайте. http://robocraft.ru/blog/ARM/722.html
http://robocraft.ru/blog/ARM/739.html

khch писал(а):мне надо изучать таймеры? Мне нужны микросекундные интервалы.
Для этого не обязательно использовать таймер.
По аналогии с кодом выше. https://radiokot.ru/forum/viewtopic.php ... 7#p3435257
Код:
void DWT_Delay_us(uint32_t us)
{
    uint32_t Count = DWT->CYCCNT;
    us = us * (SystemCoreClock / 1000000);
    while((DWT->CYCCNT - Count) < us);
}

khch писал(а):Если мой таймер сидит на шине с частотой 32,000,000, значит на одну микросекунду мне надо записать в регистр ARR число 32. Я правильно считаю??
32-1, т. е. 31.
Последний раз редактировалось Мурик Вс авг 12, 2018 15:57:10, всего редактировалось 8 раз(а).

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 15:54:29

32 - 1

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 16:00:17

Системный таймер самый простой. Про другие прочитайте.

Да я уже с переменным успехом с утра .....

Добавлено after 1 minute 5 seconds:
void mcsDelay (uint32_t time_in_mcsec)
{
TIM_TypeDef * Timer;
uint16_t diviser = time_in_mcsec*(32-1);
Timer->ARR=diviser;

}
Как-то так....

Добавлено after 4 minutes 2 seconds:
32 - 1

Ну да... Он же и нуль считает.
Мне, почему-то, кажется, что 31,,,32 небольшая разница будет.
При погрешности кварца в десять миллионых номинала это уже 3.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 16:00:35

На что указывает TIM_TypeDef * Timer;?
Прога в HardFault улетит.

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 16:03:10

Все таймеры уже определены глобально. Не надо их внутри функции переопределять. Берите и пользуйте.

TIM1->ARR = xxx;

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 16:06:39

На что указывает TIM_TypeDef * Timer;?
Прога в HardFault улетит.

Я не знаю что такое HardFault, но то, что я сделал - неправильно...

да!!! Это должен быть
#define TIM1 ((TIM_TypeDef *)TIM1_BASE)
Надо же.... я учусь :)

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 16:08:16

Почему вы не хотите подключить заголовочные файлы, где это уже определено?

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 16:09:20

Понимаю, выглядело глупо... Теперь сам понял.

Добавлено after 51 second:
Почему вы не хотите подключить заголовочные файлы, где это уже определено?


Да все там подключено.
Просто я сделал по-своему, а вышло как обычно ;)

Re: Буфер данных Stm32f103c8

Вс авг 12, 2018 16:20:32

khch писал(а):Я не знаю что такое HardFault
http://infocenter.arm.com/help/index.js ... 12s01.html
Об одной из причин попадания программы в обработчик HardFault. http://purebasic.mybb.ru/viewtopic.php?id=564#p7599
Ответить