
Firelander
19.01.2017
09:22:20
контакты снаружи же

kaktys
19.01.2017
09:22:37
ну тогда на стенку десяток-другой емкостных датчиков

Firelander
19.01.2017
09:22:54
я про то и говорю

kaktys
19.01.2017
09:22:59
или оптических

Google

Petr
19.01.2017
09:23:31
вообще поставить на весы наврное правальнее всего

Firelander
19.01.2017
09:23:36
только ёмкость надо ставить на выровненную поверхность. Ну и сама она не должна быть кривой

kaktys
19.01.2017
09:23:37
или в дно уз датчик

Petr
19.01.2017
09:23:45
народ
на канистре указан же номинальный обьем?
или пустую канистру сначала взвешиваем, или через плотность считать

Dolphin
19.01.2017
09:25:04

Firelander
19.01.2017
09:25:23
плотность можно посчитать

Petr
19.01.2017
09:25:42
думаю что она написана в доках на продукцию

Kaorych {red-hot-chili-clever}
19.01.2017
09:54:23
Ну в целом там наверное все будет в пределах погрешности в доках указывается вес продукта
Ну точнее объем в жидких единицах flz

Petr
19.01.2017
10:11:37
ye djn
ну вот

Google

Petr
19.01.2017
10:11:42
ставишь на весы и все

Eugene
19.01.2017
10:26:12
Вместимость литров всегда одинакова, а масса будет разная. Отношение л/кг константа для данного типа жидкости. Залили - запомнили массу которая измерилась весами. Исходя из постоянного соотношения л/кг считаешь остаток в литрах

Ruslan
19.01.2017
10:27:44
ну, это при одинаковой температуре

Eugene
19.01.2017
10:28:48
В тз не сказано про температуру ничего

Petr
19.01.2017
10:29:03
но и температуру скомпенсировать можно

Eugene
19.01.2017
10:32:05
Думаю на обьеме канистры это будут единицы миллитров если не компенсировать температуру

Serg
19.01.2017
11:36:05
Кто какие параметры ставит в FreeRTOSCOnfig.h ? Интересуют эти два:
#define configKERNEL_INTERRUPT_PRIORITY 255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11. */

Kirill
19.01.2017
11:39:50
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY « (8 - configPRIO_BITS) )
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY « (8 - configPRIO_BITS) )

Serg
19.01.2017
11:40:51
это STM32 ?

Kirill
19.01.2017
11:41:11
да
f407

Serg
19.01.2017
11:43:32
Приоритет любого прерывания должен быть выше (меньше число) или ниже (выше число) configMAX_SYSCALL_INTERRUPT_PRIORITY ?

Kirill
19.01.2017
11:45:29
Therefore, any interrupt service routine that uses an RTOS API function must have its priority manually set to a value that is numerically equal to or greater than the configMAX_SYSCALL_INTERRUPT_PRIORITY setting. This ensures the interrupt's logical priority is equal to or less than the configMAX_SYSCALL_INTERRUPT_PRIORITY setting.
число выше, приоритет ниже
http://www.freertos.org/RTOS-Cortex-M3-M4.html

Dmitry
19.01.2017
12:01:21
хм…

Serg
19.01.2017
12:09:03
This ensures the interrupt's logical priority is equal to or less than the configMAX_SYSCALL_INTERRUPT_PRIORITY setting.
Значит надо свои прерывания делать с приоритетом ниже чем configMAX_SYSCALL_INTERRUPT_PRIORITY?
т.е. число ниже 11 (12, 13 и т.д.)

Kirill
19.01.2017
12:34:57
блджать, там есть 2 предложения)

Google

Kirill
19.01.2017
12:35:13
Therefore, any interrupt service routine that uses an RTOS API function must have its priority manually set to a value that is numerically equal to or greater than the configMAX_SYSCALL_INTERRUPT_PRIORITY setting. This ensures the interrupt's logical priority is equal to or less than the configMAX_SYSCALL_INTERRUPT_PRIORITY setting.
если их перевести то все понятно сразу

Serg
19.01.2017
12:38:07
ну так я же то и написал - перывание должно с приоритетом ниже или равно (цифра больше или равна) onfigMAX_SYSCALL_INTERRUPT_PRIORITY

Kirill
19.01.2017
12:39:07
Therefore, any interrupt service routine that uses an RTOS API function must have its priority manually set to a value that is numerically equal to or greater than the configMAX_SYSCALL_INTERRUPT_PRIORITY setting.
дословно переведи это предложение
а потом дословно переведи это предложение
This ensures the interrupt's logical priority is equal to or less than the configMAX_SYSCALL_INTERRUPT_PRIORITY setting.

Serg
19.01.2017
12:39:52
Что я не так написал?

Kirill
19.01.2017
12:39:57
хотя да)

Serg
19.01.2017
12:40:01
Чему не соответствует?

Kirill
19.01.2017
12:40:28
приоритет ниже, цифра больше

Serg
19.01.2017
12:40:53
Такого огорода нагородили с этими прерываниями

Kirill
19.01.2017
12:40:58
logical priority is equal to or less
numerically equal to or greater

Serg
19.01.2017
12:41:06
Интересно бы жизненный пример когда нужны эти приоритеты
Еще ни разу не видел

Kirill
19.01.2017
12:42:07
когда внутри прерывания нужно дернуть семафор и чтобы ничего не сломалось
пихнуть в очередь чтобы ничего не сломалось
взять мьютекс чтобы ничего не сломалось

Serg
19.01.2017
12:42:53
не, я про саму суть приоритетов
без привязки к FreeRTOS
где может пригодиться более высокий приоритет?

Google

Kirill
19.01.2017
12:43:31
сама суть приоритетов нужна для вложенных прерываний, когда nvic гоняет между приоритетами, но при этом не гоняет между субприоритетами

Serg
19.01.2017
12:43:32
не видел примеров
для чего нужны вложенные прирывания?

Kirill
19.01.2017
12:44:37
ну например у тебя есть длительное прерывание и управление клапаном давления, который если срочно не крутануть то все взорвется

Serg
19.01.2017
12:45:56
длительное в смысле обработчик долго работает?

Admin
ERROR: S client not available

Kirill
19.01.2017
12:46:33
да

Serg
19.01.2017
12:47:05
типа ж низя так, лучше состояниями управлять
конечный автомат, а прерывания только состояния новые выставляют

Kirill
19.01.2017
12:48:30
по факту можно и так и так, конечно длительные прерывания не приветствуются, но если вся логика построена на прерываниях, то почему нет

Serg
19.01.2017
12:49:14
попробуй разберись потом в такой логике
плюс нетестопригодно

Firelander
19.01.2017
12:49:51
конечный автомат плох, что он не вытесняемый, если у тебя есть функция, которая долго и печально что-то считает, а нужно посчитать что-то быстро и отреагировать на какое-то событие типа превышения тока. Тут уже ртос годится

Serg
19.01.2017
12:50:31
да, ос все прозрачно сделает

Kirill
19.01.2017
12:50:59
как правило и в такой и в такой хер потом разберешься))
именно по этому я делал свой менеджер прерываний, который позволял динамически подцеплять коллбек со своей областью видимости куда нужно.
что позволяло делать программу из разных модулей, без глобальных переменных вообще

Firelander
19.01.2017
12:51:04
ос ни разу не прозрачно)
с синхронизацией геморроя больше
но есть ситуации когда автомата+прерываний уже не хватает. Или хватает, но получается не расширяемо

Kirill
19.01.2017
12:52:20
да, как раз имхо в расширяемость все и упирается обычно

Spanish
19.01.2017
12:52:36
Опубликовано в канале @ru_electronics_feed
достуные теги: #объявление #книга #статья #каналья #ссылка

Google

Serg
19.01.2017
12:56:30
А вот например есть uart и есть системный таймер 10 мсек, таймер используется для FatFS
а через UART идет общение с SIM900
Какое прерывание лучше сделать приоритетнее, таймера или UART ?

Firelander
19.01.2017
12:58:50
uart скорее
можно одинаковый приоритет поставить штоб не вытесняло ничего

Serg
19.01.2017
12:59:51
получается uart важнее, потому что SIM900 не будет ждать
а сыпет байтами
и надо успеть принять

Firelander
19.01.2017
13:00:32
ага, если не успеешь байт принять, будет оверран. Дма наше всё

Serg
19.01.2017
13:01:17
а дма как принимает, задается бфер определенного размера и пока он не заполнится, принимает само?

Kirill
19.01.2017
13:02:03
для начала нужно убедиться что нвик настроен на вложенные прерывания, по дефолту он их не поддерживает и везде subpriority.
А так для мелких прерываний это не важно, больше даже потеряется. переход с оного приоритета в другой это 7 тактов. вход в прерывание это 14 тактов.
В итоге если обработка юарта например занимает 100 тактов, а прерывание таймера 50, то вместо
14 тактов на вход, 100 на обработку первого прерывания, 50 на второе, 14 тактов на выход (178).
мы получим
14 на вход 50 на обработку части первого, 7 на переход во второе, 50 на обработку второго, 7 на переход обратно в первое и 50 обработки первого, потом 14 обратно (192)
мы получим понядка 10% оверхеда

Firelander
19.01.2017
13:02:10
ага. Но можно прекращать, например по IDLE прерывание сделать

Serg
19.01.2017
13:04:05
с дма выходит если редко идут данные то меньше ресурсов будет простое прерывание по приему байта, а то в случае дма надо будет периодически проверять наличие новых данных

Firelander
19.01.2017
13:13:35

Mad
19.01.2017
18:13:43
хэй