~~NOTOC~~
====== OSA : Error list ======
==== #1 : Unknown compiler! ====
OSA работает только со следующими компиляторами:
* HI-TECH PICC STD
* HI-TECH PICC18 STD
* Microchip C18
* Microchip C30
* CCS PICC
* microC PRO for PIC
Остальные компиляторы пока не поддерживаются.
----
==== #2 : Constants OS_xxx_BANK are not allowed now (use OS_BANK_xxx instead) ====
Эта ошибка возникает, когда вы пытаетесь разместить переменные OSA с помощью устаревших констант. Новые константы имеют префикс имени "##[[osa:ref:appendix:configuration|OS_BANK_]]##" (См. [[osa:ref:appendix:configuration#Размещение данных для PIC10, PIC12, PIC16 и PIC18|конфигурация]].)
----
==== #3 .. #12 : Incorrect OS_BANK_xxx value (should be 0, 1, 2 or 3) ====
Одна или несколько констант ##[[osa:ref:appendix:configuration|OS_BANK_xxx]]## имеют недопустимое значение (в файле ##[[osa:ref:appendix:configuration|OSAcfg.h]]##). Разрешены только значения 0, 1, 2 и 3.
----
==== #13 : OST_TIMER is not supported! Use OS_TIMER_SIZE instead ====
Вы пытаетесь переопределить тип таймера через устаревшую константу ##[[osa:ref:description:data_types#OST_TIMER|OST_TIMER]]##. В старых версиях этой константе приравнивалось имя типа напрямую (например, **char** или **unsigned long**). Теперь тип таймеров задается указанием размерности переменной. Например:
#define OS_TIMER_SIZE 4 // таймеры будет типа unsigned long
----
==== #14 .. #15 : Can't redefine name OST_xxx in 'OSAcfg.h'. Use OS_xxx_TYPE instead. ====
Начиная с версии 90200 типы ##[[osa:ref:description:data_types#OST_MSG|OST_MSG]]## и ##[[osa:ref:description:data_types#OST_SMSG|OST_SMSG]]## не могут быть переопределены напрямую. Теперь они переопределяются через константы ##[[osa:ref:appendix:configuration|OS_MSG_TYPE]]## и ##[[osa:ref:appendix:configuration|OS_SMSG_TYPE.]]## Причина описана ниже:
Например ##[[osa:ref:description:data_types#OST_MSG|OST_MSG]]## определена в файле ##[[osa:ref:appendix:configuration|OSAcfg.h]]## так:
#define OST_MSG void *
Когда определяется несколько переменных:
OST_MSG msg1, msg2, msg3;
компилятор делает подстановку:
void * msg1, msg2, msg3;
Как видно, толь **msg1** будет указателем, а **msg2** and **msg3** будет иметь просто тип void.
Ситуацию можно было бы исправить так:
typedef void * OST_MSG;
Но тогда будет невозможно переопределять эти типы вручную. По этой причине переопределение типа ##[[osa:ref:description:data_types#OST_MSG|OST_MSG]]## сделано так:
#define OS_MSG_TYPE int *
а сам ##[[osa:ref:description:data_types#OST_MSG|OST_MSG]]## определяется без вмешательства пользователя в файле OSA.h:
typedef OS_MSG_TYPE OST_MSG;
----
==== #16 : Incorrect OS_CSEM_SIZE value (m.b. only 1, 2 or 4)! (see OSAcfg.h) ====
Введено неправильно значение размера переменных типа счетного семафора. Допустимые значения:
* 1 - для unsigned char
* 2 - для unsigned int
* 4 - для unsigned long
----
==== #17 .. #21 : Bad OS_xxx size (must be 1, 2 or 4) ====
Введено неправильно значение размера переменных таймера. Допустимые значения:
* 1 - для unsigned char
* 2 - для unsigned int
* 4 - для unsigned long
----
==== #22: Qtimers are not supported under 12-bit controllers (PIC10 and PIC12) ====
Qtimers are not supported with 12-bit controllers. Actualy, there is no needness to use them on 12-bit PICs, since benefit is noticed only with large number of timers.
----
==== #25: STM8 with ROM > 64K are not supported yet ====
Контроллеры STM8 с ROM > 64K пока что не поддерживаются
----