diff --git a/README.md b/README.md index e4882f0..d83417c 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,15 @@ Для работы доступно два последовательных интерфейса. Нулевой интерфейс используется экземпляром класса `Serial`. Информации в Монитор порта в Arduino IDE поступает через него. Первый интерфейс используется экземпляром класса `Serial1`. Выводы, на которых доступны указанные интерфейсы, перечислены в описании отдельных плат. Доступны следующие макросы для настройки режима работы каждого интерфейса в функции `Serial.begin()`: `SERIAL_7N1`, `SERIAL_8N1`, `SERIAL_7N2`, `SERIAL_8N2`, `SERIAL_7E1`, `SERIAL_8E1`, `SERIAL_7E2`, `SERIAL_8E2`, `SERIAL_7O1`, `SERIAL_8O1`, `SERIAL_7O2`, `SERIAL_8O2`. Здесь длина данных - 7 или 8 бит; бит четности - нет(N), четный(E), нечетный(O); стоп бит - 1 или 2 бита. +### Переопределение функции main +В ArduinoIDE доступна возможность определить пользовательскую функцию `main()` в скетче. Для этого необходимо удалить из скетча функции `setup()` и `loop()` и определить свою функцию `int main(void){}`. Чтобы весь функционал пакета поддержки работал корректно, перед заходом в бесконечный цикл необходимо вызвать функцию `post_init()`, внутри которой глобально разрешаются прерывания. Пример переопределения представлен ниже. +![main_redefine_example_.png](docs/main_redefine_example_.png) + ### Предупреждения об ошибках Если в скетче используется интерфейс `Serial`, при возникновении ошибок при использовании какой-либо функции из пакета в порт может передаваться сообщение об этой ошибке с пояснением. Например, если в функцию будет передан некорректный номер цифрового вывода, предупреждение об этом появится в подключенном com порту. По умолчанию вывод предупреждений включен. Если интерфейс `Serial` используется для коммуникации с другим устройством, вывод предупреждений можно отключить. Для этого в самом начале функции `void setup()` необходимо вызвать макрос `DISABLE_ERROR_MESSAGES();`. Вывод предупреждений можно включить обратно, вызвав макрос `ENABLE_ERROR_MESSAGES();` в любом месте программы. -### Библиотеки, входящие в состав пакета +## Библиотеки, входящие в состав пакета Входящие в состав пакета библиотеки используют периферию микроконтроллера MIK32 Амур и/или адаптированы для работы с ним. |Библиотека|Описание|Заметки| @@ -97,7 +101,7 @@ ## Протестированные модули Список модулей и шилдов, работа которых была протестирована на платах, входящих в состав пакета поддержки, доступен [здесь](./docs/tested_shields.md). -# Режим отладки +## Режим отладки Для всех плат, входящих в состав пакета, доступен режим отладки скетча в ArduinoIDE версии 2. Подготовка к работе в режиме отладки описана в [инструкции.](./docs/debug_description.md) # Полезные ссылки diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp index 77b6e0b..6dd1d46 100644 --- a/cores/arduino/main.cpp +++ b/cores/arduino/main.cpp @@ -7,6 +7,7 @@ void initVariant() __attribute__((weak)); void initVariant() { } +extern "C" int main(void) __attribute__((weak)); int main() { initVariant(); // for freeRTOS diff --git a/docs/main_redefine_example_.png b/docs/main_redefine_example_.png new file mode 100644 index 0000000..95689bd Binary files /dev/null and b/docs/main_redefine_example_.png differ