Выполняет сброс watchdog'а, выводит в лог информацию о ядре и причину сброса МК, дамп задач и инициализирует TIMER_C при необходимости. Также заполняет все ОЗУ кодом 0xF7 для диагностики. Сбрасывает счетчик времени(uptime).
Входящих или исходящих параметров не имеет, влияет на некоторые регистры.
C5_REINIT - выполняется как продолжение C5_INIT. Может быть вызвано отдельно как часть программного сброса.
Чистка таблицы прерываний, очередей, флагов, точек стека и свободной памяти. Инициализация основного аппаратного таймера, буфера ввода, программных таймеров, таблицы заголовков задач и драйверов.
Входящих или исходящих параметров нет, влияет на некоторые регистры.
C5_CREATE - процедура создания процесса(задачи или драйвера).
Добавляет запись заголовка в таблицу процесса(задачи или драйвера), вызывает процедуру инициализации в процессе.
На входе:
PID - уникальный идентификатор процесса(определяется разработчиком) с флагами:
- C5_PROCID_OPT_DRV - процесс является драйвером
- C5_PROCID_OPT_TIMER - задача выполняющаяся периодически(по таймеру)
- C5_PROCID_OPT_NOSUSP - диспетчеру запрещается вытеснять данную задачу
TEMP_H,TEMP_L,TEMP - время(*2мс) для периода таймера, если включена опция C5_PROCID_OPT_TIMER
Исходящих параметров нет, не влияет на регистры но не отвечает за процедуру инициализации процесса.
*корректность процедуры при работе ядра(после C5_START не проверялась, не было необходимости).
C5_READY - вызывается процессом после инициализации(как и C5_CREATE является неотъемлемой частью механизма создания процесса).
Завершает процедуру инициализации процесса. Переопределяет точки стека, сохраняет старшие регистры в стек задачи и точку входа на основной код процесса(следует сразу после вызова C5_READY). Задает параметры для задачи по таймеру.
Входящих или исходящих параметров нет, но не отвечает за процедуру инициализации процесса.
C5_EXEC - вызов процедуры драйвера.
На входе:
TEMP - уникальный идентификатор драйвера(PID), остальные параметры зависят от драйвера.
На выходе:
TEMP - результат операции DRV_RESULT_... - задается драйвером, остальные параметры также зависят от драйвера.
C5_SUSPEND - передать выполнение следующей задаче.
Входящих или исходящих параметров нет, не влияет на регистры задачи.
C5_TCNT_GET - получить значение регистра счетчика основного аппаратного таймера
На выходе:
TEMP - значение регистра счетчика
C5_IR_VECTOR_SET - Установить точку входа для прерывания.
На входе:
PID - уникальный идентификатор процесса(PID) в котором размещен обработчик.
ACCUM - номер прерывания C5_IR_...(см. библиотеку устройства)
TEMP_H,TEMP_L - адрес точки входа в обработчик прерывания (0x00 - не обрабатывать прерывание)
Исходящих параметров нет, не влияет на регистры.
* передает обработчику в регистре ACCUM номер прерывания C5_IR_...
** возвращаться из обработчика надо по RET(не RETI), TEMP и SREG сохранять не нужно.
C5_SOFT_UART_MODE_SET - Включить корректировку основного аппаратного таймера для корректной реализации программного UART. При этом тик таймера станет равным 0.052мс(или 0.026мс) что отразится на счете uptime.
Входящих или исходящих параметров нет, не влияет на регистры.
C5_SOFT_UART_MODE_RESET - Выключить корректировку основного аппаратного таймера для корректной реализации программного UART. При этом тик таймера станет стандартным 0.050мс(или 0.025мс)
Входящих или исходящих параметров нет, не влияет на регистры.
C5_START - запуск ядра.
Запускает основной аппаратный таймер. Выполняет бесконечный цикл выполняющий переход на задачу, в случае отсутствия задач на выполнение переводит МК в сон.
Входящих параметров нет.