Страница 10 из 10

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

Добавлено: Сб авг 11, 2018 22:43:14
dosikus
Не устраивает что? Практически все Оси имеют системный таймер на 1mS . Если нужны интервалы меньше, вменяемо юзать аппаратные решения а не задержки процессорного времени.

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

Добавлено: Вс авг 12, 2018 06:06:28
khch
Разберусь - скажу что не устраивает.

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

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

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

Добавлено: Вс авг 12, 2018 13:50:28
arkhnchul
я использую для нетребовательных вещей флаги выставлять - динамическую индикацию переключать, пакеты modbus-а обрабатывать, антидребезг, такое вот все.

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

Добавлено: Вс авг 12, 2018 14:14:33
ARV
[uquote="dosikus",url="/forum/viewtopic.php?p=3435837#p3435837"]ау ARV[/uquote]ку-ку, досикус.

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

Добавлено: Вс авг 12, 2018 15:16:57
khch
[uquote="a5021",url="/forum/viewtopic.php?p=3436082#p3436082"]А кто-нибудь использует этот SysTick в мирных целях? Мне он всегда казался страшно неудобным, отчего я так его ни разу и не попользовал.[/uquote]

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

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

Добавлено after 1 minute 37 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3436133#p3436133"][uquote="dosikus",url="/forum/viewtopic.php?p=3435837#p3435837"]ау ARV[/uquote] :facepalm:
ку-ку, досикус.[/uquote] :facepalm:

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

Добавлено: Вс авг 12, 2018 15:25:27
Myp3ik
khch, systick изначально задумывался как источник этих самых тиков для RTOS. Он является частью ядра контроллера, а не "периферии". А RTOS использует этот таймер "в тёмную" и многих мало интересует, что там происходит.

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

Добавлено: Вс авг 12, 2018 15:27:07
arkhnchul
[uquote="khch",url="/forum/viewtopic.php?p=3436155#p3436155"]Я-то думаю, почему я его не могу подогнать под себя[/uquote]
а что там "подгонять"? Это самый тупой из возможных таймеров. Единственное, что он умеет - выдавать прерывание раз в n-цать тактов.

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

Добавлено: Вс авг 12, 2018 15:31:33
khch
Я посмотрел в HAL_Delay, там был этот систик. Може я что-то упустил - это характерно.
как я понимаю, мне надо изучать таймеры? Мне нужны микросекундные интервалы. Сейчас я этим и занят.

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

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

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

Добавлено: Вс авг 12, 2018 15:51:39
khch
Если мой таймер сидит на шине с частотой 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.

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

Добавлено: Вс авг 12, 2018 15:54:29
Myp3ik
32 - 1

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

Добавлено: Вс авг 12, 2018 16:00:17
khch
Системный таймер самый простой. Про другие прочитайте.
Да я уже с переменным успехом с утра .....

Добавлено 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:
[uquote="Myp3ik",url="/forum/viewtopic.php?p=3436179#p3436179"]32 - 1[/uquote]
Ну да... Он же и нуль считает.
Мне, почему-то, кажется, что 31,,,32 небольшая разница будет.
При погрешности кварца в десять миллионых номинала это уже 3.

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

Добавлено: Вс авг 12, 2018 16:00:35
Мурик
На что указывает TIM_TypeDef * Timer;?
Прога в HardFault улетит.

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

Добавлено: Вс авг 12, 2018 16:03:10
a5021
Все таймеры уже определены глобально. Не надо их внутри функции переопределять. Берите и пользуйте.

TIM1->ARR = xxx;

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

Добавлено: Вс авг 12, 2018 16:06:39
khch
[uquote="Мурик",url="/forum/viewtopic.php?p=3436183#p3436183"]На что указывает TIM_TypeDef * Timer;?
Прога в HardFault улетит.[/uquote]
Я не знаю что такое HardFault, но то, что я сделал - неправильно...

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

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

Добавлено: Вс авг 12, 2018 16:08:16
a5021
Почему вы не хотите подключить заголовочные файлы, где это уже определено?

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

Добавлено: Вс авг 12, 2018 16:09:20
khch
Понимаю, выглядело глупо... Теперь сам понял.

Добавлено after 51 second:
[uquote="a5021",url="/forum/viewtopic.php?p=3436195#p3436195"]Почему вы не хотите подключить заголовочные файлы, где это уже определено?[/uquote]

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

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