
OMEN
16.09.2017
20:22:36
умею
просто я тут немного не понимаю

Andrew
16.09.2017
20:23:04
ну так а чо, ткнуть тебя носом что ли?

OMEN
16.09.2017
20:23:10
тики системные или переключение контекста

Google

Andrew
16.09.2017
20:23:39
во-первых, тебе какая разница
во-вторых, давай расскажи нам чем они отличаются

OMEN
16.09.2017
20:24:15
ну епта
у меня значит ядро молотит на 72 мегагерцах

Andrew
16.09.2017
20:24:41
таак

unum
16.09.2017
20:25:04

OMEN
16.09.2017
20:25:32
в FreeRTOSConfig.h я могу залепить TICK_RATE_HZ как я захочу

Andrew
16.09.2017
20:25:53

OMEN
16.09.2017
20:26:25
это значит, что 72 000 000 / TICK_RATE_HZ
и получаем частоту переключения контекста

Andrew
16.09.2017
20:26:56
ты читал вот это? http://www.freertos.org/a00127.html
» The constant portTICK_PERIOD_MS can be used to calculate real time from the tick rate - with the resolution of one tick period.

Google

Andrew
16.09.2017
20:27:50
а 72 000 000 / TICK_RATE_HZ это величина делителя системного таймера
и вообще завязывай называть это частотой переключения контекста, это именно частота системного таймера, контекст далеко не во всех случаях обязательно переключаться будет

OMEN
16.09.2017
20:31:19
250 hz это типа 250 раз в секунду?
на ду нах

Andrew
16.09.2017
20:31:25
бля…
у тебя еще физика в школе не началась, да?

OMEN
16.09.2017
20:31:41
или ты имеешь в виду это предделитель

Andrew
16.09.2017
20:31:51
ща с 7 класса начинается, да?
я ничо не имею в виду, как написал так и есть
TICK_RATE_HZ = 250, при sysclock_freq = 72e6 предделитель = 288000

OMEN
16.09.2017
20:33:20
да я пытаюсь вкурить
всё
я понял тебя

Andrew
16.09.2017
20:33:57

OMEN
16.09.2017
20:34:59
configSYSTICK_CLOCK_HZ это я так понимаю мы указываем предделитель самого ядра который дёргает xPortSysTickHandler

Andrew
16.09.2017
20:35:02

unum
16.09.2017
20:35:33
Что он делает вообще? Какая связь между rtos и arduino?

Andrew
16.09.2017
20:35:35
что у тебя в голове?

Google

OMEN
16.09.2017
20:36:52
легко
void sys_tick_handler(void) {
xPortSysTickHandler();
}

Andrew
16.09.2017
20:37:12
эээ
обыно вроде дефайном их биндяд

OMEN
16.09.2017
20:37:30
дефолтная настройка же
systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);
ну я хз как их биндят

Andrew
16.09.2017
20:38:18
ты где этот код взял?
обработчик прерывания в cmsis не так называется

OMEN
16.09.2017
20:38:46
это libopencm3

Andrew
16.09.2017
20:39:03
ну он, у них такая таблица
выебнулись

Andrew
16.09.2017
20:40:09
есть системный таймер, он тактируется на AHB1 обычно, со своим делителем, у него есть counter, есть порог сброса, порог и есть суть этот предделитель частоты систика (с учетом делителя тактирования).
когда таймер сбрасывается, вызывается прерывание xPortSysTickHandler

OMEN
16.09.2017
20:40:36
да, всё правильно
SYSTICK_CLOCK_HZ указывает реальную частоты системного таймера, отличную от частоту ядра

Andrew
16.09.2017
20:41:25
конечно же
))

OMEN
16.09.2017
20:41:32
разобрались

Andrew
16.09.2017
20:41:39
системный таймер очень медленный
ну типа 1 кГц

Google

OMEN
16.09.2017
20:42:01
и вот я надыбал макрос pdMS_TO_TICKS

Andrew
16.09.2017
20:42:48
почему нельзя просто поделить на portTICK_PERIOD_MS?
как в примере собственно написано

OMEN
16.09.2017
20:43:14
почему, можно)
теперь надо понять как расчитать размер стэка

Andrew
16.09.2017
20:44:23
обычно эмпирически
ты понимаешь, что такое стек, что там оказывается и почему у каждой задачи свой стек?

OMEN
16.09.2017
20:44:40
бляха, а формул нет?

Andrew
16.09.2017
20:44:47
каких блять формул

Admin
ERROR: S client not available

OMEN
16.09.2017
20:44:48
да
знаю
я как то писал ОС для атмеги8

Andrew
16.09.2017
20:45:11
ну и что же в стек попадает?
и какие формулы должны быть?

OMEN
16.09.2017
20:45:43
там никакого размера стэка не указывалось
я просто сохранял РОН

Andrew
16.09.2017
20:45:50
в общем случае величина стека для задачи является невычислимой
это что за регистр?

OMEN
16.09.2017
20:46:00
и восстанавливал

Google

OMEN
16.09.2017
20:46:11
регистры бщего назначения
их 13 штук вроде
через POP и PUSH засовывал и извлекал из стэка

unum
16.09.2017
20:46:56
@shadowsoul тут опять аниме

OMEN
16.09.2017
20:47:04
простая вытесняющая многозадачность

Andrew
16.09.2017
20:47:43
ну то есть нормально да, что одна таска положила на стек 10 байт, потом ты контекст преключил, другая таска положила еще 15 байт на стек и перетерла нахуй все?

OMEN
16.09.2017
20:48:12
я там над этим не заморачивался
там никакой динамики

Andrew
16.09.2017
20:48:22
чо блять значт не заморачвался
ёптваюбмать
меня сейчас за мат забанят
пиздос
какая динамика
как можно без стека на си писать вообще

OMEN
16.09.2017
20:48:48
да бля, ты давно кодил на AVR?

Andrew
16.09.2017
20:49:11
я примерно представляю, как си в ассемблер компилируется
даже если все статикой объявить, как ты функции вызывать будешь

OMEN
16.09.2017
20:49:50
там всё просто

Andrew
16.09.2017
20:50:57
я хз может в атмеге как-то по-другому работает вызов функций, может они там на магнитной ленте контекст вызова сохраняют и в архив сдают

OMEN
16.09.2017
20:52:07
в атмеге стэк нужен тупо для сохранения всяких адрессов возвратов

unum
16.09.2017
20:52:14
Функцию там вызывают как сантехников, по номеру из газеты. Это же очевидный троллинг

Andrew
16.09.2017
20:52:39
я сейчас оказался героем «истории одного байта», он там тоже подгорал с того, что кто-то ему сказал, что «нам стек не нужен»