OSA - кооперативная многозадачная операционная система реального времени (ОСРВ) для микроконтроллеров фирмы Microchip серий PIC10, PIC12, PIC16, PIC18, PIC24 и dsPIC, AVR 8-bit фирмы Atmel, а также микроконтроллеров STM8 фирмы STMicroelectronics.
ОСРВ позволяет программисту сосредоточить свои усилия на решении конкретных задач (алгоритмических, математических и т.п.), не отвлекаясь на задачи второстепенные. Она берет на себя:
Задачами в ОСРВ OSA являются обычные функции. Тело функции должно содержать бесконечный цикл, внутри которого должен быть хотя бы один вызов сервиса переключения задач (иначе остальные задачи не получат управления).
void interrupt int_routine (void) { char var1, var2; int var3; OS_EnterInt(); ... // Здесь делается проверка флагов прерываний ... // и обработка OS_LeaveInt(); }
Дело в том, что HT-PICC не всегда сохраняет значение регистра FSR (FSR0 для PICC18), который активно ипсользуется самой системой.
Выражаю благодарность всем, кто принимал участие в поисках и исправлении багов, не ленился копаться в кодах и тратил свое время на дебаггер. Особую благодарность Вадиму Франку и Д. Иванову, принимавшим самое активное участие и проявившим терпение и настойчивость.
Также выражаю благодарность Alex'у B., любезно предоставившему свой сайт для документации и оказавшему помощь в ее размещении здесь.