Файл OSAcfg.h для каждой программы должен быть свой, и его желательно держать в той же директории, где и сама программа. Этот файл автоматически включается файлом OSA.h и является настроечным (в нем определяется, где хранятся какие данные, сколько максимально может быть задач, семафоров, таймеров и пр.). Шаблон этого файла лежит в папке OSA\PROJECT.
В самом простом случае этот файл может быть пустым, тогда будут приняты все настройки по умолчанию.
Имя константы | Описание |
---|---|
OS_ENABLE_ALL | Разрешить все |
OS_ENABLE_CSEM | Если определена эта константа, то в программу включается код по работе с счетными семафорами |
OS_ENABLE_QUEUE | Если определена эта константа, то в программу включается код по работе с очередями сообщений |
OS_ENABLE_SQUEUE | Если определена эта константа, то в программу включается код по работе с очередями коротких однобайтовых сообщений |
OS_QUEUE_SQUEUE_IDENTICAL | Если используются сразу и очереди сообщений и очереди коротких сообщений, и есть уверенность в том, что размерность указателя на сообщение (тип OST_MSG) и короткого соощения (тип OST_SMSG) одинакова, то можно определить эту константу, чтобы для работы с обоими типами очередей выполнялась одними и теми же функциями. Особенно актуально для PIC10, PIC12 и PIC16. |
OS_ENABLE_CRITICAL_SECTION | Если определена, то в программу включаются функции входа в критическую секцию и выхода из нее |
Имя константы | Допустимые значения | Описание |
---|---|---|
OS_PRIORITY_LEVEL | OS_PRIORITY_NORMAL | (defaul) Обычный приоритетный режим с последовательной проверкой задач на готовность в порядке их создания |
OS_PRIORITY_DISABLE | Принудительно устанавливает всем задачам высший приоритет. Можно использовать для ускорения работы планировщика, если приоритетность не важна | |
OS_PRIORITY_EXTENDED | Расширенный приоритетный режим, который распределяет ресурсы ядра микроконтроллера между задачами пропорционально весам их приоритетов | |
OS_DISABLE_PRIORITY | (old style consant) То же, что и OS_PRIORITY_DISABLE |
Имя константы | Описание |
---|---|
OS_ENABLE_TTIMERS | Если эта константа определена, то в программу будут включены функции по определению задержек в задачах и таймеры в OST_TCB. Если в программе не планируется использовать OS_Delay или ожидание событий с таймаутами, то эту константу можно не определять (тогда получится меньший код и освободится RAM). |
OS_ENABLE_DTIMERS | Если определена, то в программе можно использовать динамические таймеры |
OS_ENABLE_QTIMERS | Если определена, то в программе можно использовать очкркдь таймеров |
OS_STIMERS | Количество статических таймеров. Если определена, то создается массив статических таймеров такой размерности |
OS_STIMERS_ENABLE_ALLOCATION | Если определена, то в код включаются функции по назначению статических таймеров в ходе выполнения программы |
OS_STIMERS_OPTIMIZE_SPEED | Если определена, то код по управлению статическими таймерами в OS_Timer будет оптимизирован по размеру (иначе - по скорости) |
OS_TTIMERS_OPTIMIZE_SPEED | Если определена, то код по управлению таймерами задач в OS_Timer будет оптимизирован по размеру (иначе - по скорости) |
Имя константы | Описание |
---|---|
OS_ENABLE_INT_BSEM | |
OS_ENABLE_INT_CSEM | Разрешает отправлять счетные семафоры из прерываний |
OS_ENABLE_INT_FLAG | Разрешает работать с флагами внутри прерывания |
OS_ENABLE_INT_MSG | Разрешает отправку сообщений из прерываний |
OS_ENABLE_INT_SMSG | Разрешает отправку коротких сообений из прерываний |
OS_ENABLE_INT_QUEUE | Разрешает отправку сообщений и коротких сообщений через очередь из прерываний |
OS_ENABLE_INT_ALL | Если определена, то включает все выше перечисленные константы |
Имя константы | Описание | Требуется памяти |
---|---|---|
OS_TASKS | Количество задач, которые одновременно могут быть активны | На каждую задачу: Для PIC12 - по 2 байта. Для PIC16 - по 3 байта. Для PIC18 - по 4 байта. Для PIC24 и dsPIC - по 20 байт. Для AVR - по 5 байт. Если в программе используются таймеры (определена константа OS_ENABLE_TTIMERS), то а каждую задачу добавляется OS_TTIMER_SIZE байт. |
OS_BSEMS | Количество бинарных семафоров | Для 8-разрядных: По 1 байту на каждую неполную восьмерку семафоров. Для 16-разрядных: По 1 слову, на каждые 16 семафоров. |
OS_TIMERS8 (устаревшая) | Количество пользовательских 8-разрядных таймеров | На каждый по 1 байту |
OS_TIMERS16 (устаревшая) | Количество пользовательских 16-разрядных таймеров | На каждый по 2 байту |
OS_TIMERS24 (устаревшая) | Количество пользовательских 24-разрядных таймеров | На каждый по 2 байту (в этих таймерах нет младшего байта) |
OS_TIMERS32 (устаревшая) | Количество пользовательских 32-разрядных таймеров | На каждый по 4 байта |
Имя константы | Значение по умолчанию | Описание |
---|---|---|
OS_TIMER_SIZE | 2 | Количество байт, занимаемых системным таймером. Может быть = 1, 2 или 4. |
OS_STIMER_SIZE | OS_TIMER_SIZE | Количество байт, занимаемых статическим таймером. Может быть = 1, 2 или 4. |
OS_TTIMER_SIZE | OS_TIMER_SIZE | Количество байт, занимаемых таймером задачи. Может быть = 1, 2 или 4. |
OS_QTIMER_SIZE | OS_TIMER_SIZE | Количество байт, занимаемых таймерами в очереди таймеров. Может быть = 1, 2 или 4. |
OS_DTIMER_SIZE | OS_TIMER_SIZE | Количество байт, занимаемых динамическим таймером. Может быть = 1, 2 или 4. |
OS_CSEM_SIZE | 1 | Количество байт, выделяемое под каждый счетный семафор. Определяет, в каких пределах может меняться счетный семафор. Может быть = 1, 2 или 4 |
OS_SMSG_TYPE* | unsigned char | Тип коротких сообщений, которыми обмениваются задачи. |
OS_MSG_TYPE* | void * | Тип сообщений для MSG и QUEUE. |
* - эти типы нельзя переопределять при использовании PIC12.
Константы OS_BANK_xxx могут принимать значения:
Имя константы | Значение по умолчанию | Описание |
---|---|---|
OS_BANK_OS* | 0 | Определяет, где будут храниться все переменные системы (если для них не указаны другие). |
OS_BANK_BSEMS* | OS_BANK_OS | Для двоичных семафоров. |
OS_BANK_TASKS* | OS_BANK_OS | Банк, в котором будут размещены дескрипторы задач |
OS_BANK_STIMERS* | OS_BANK_TIMERS | Для статических таймеров |
OS_ADDRESS_TASK | - | Для mikroC PRO for PIC16: Для размещения дескрипторов задач по определенному адресу памяти (например в 0x120 (для bank2) или 0x190 (для bank3) |
OS_BANK_TIMERS* | OS_BANK_OS | Для статических таймеров старрого типа |
OS_BANK_TIMERS8* (устаревшая) | OS_BANK_TIMERS | Для 8-разрядных статических таймеров |
OS_BANK_TIMERS16* (устаревшая) | OS_BANK_TIMERS | Для 16-разрядных статических таймеров |
OS_BANK_TIMERS24* (устаревшая) | OS_BANK_TIMERS | Для 24-разрядных статических таймеров |
OS_BANK_TIMERS32* (устаревшая) | OS_BANK_TIMERS | Для 32-разрядных статических таймеров |
OS_BANK_TIMEOUTS* (устаревшая) | OS_BANK_TIMERS | Для битовых полей - флагов переполнения (таймаутов) пользовательских статических таймеров. |
* - игнорируется в CCS и mikroC PRO, а также для контроллеров AVR