# elbear_arduino_bsp Пакет поддержки платы Elbear Ace-Uno на базе микроконтроллера MIK32 Амур в среде программирования Arduino IDE. ## Установка пакета в ArduinoIDE Для установки пакета в параметрах ArduinoIDE необходимо добавить ссылку `https://elron.tech/files/package_elbear_beta_index.json` в поле "Дополнительные ссылки для Менеджера плат". Подробные шаги по установке и начальной настройке описаны в [инструкции](./Instructions.md). ## Функциональное назначение выводов ![Pinout](docs/pinout.PNG) ## Особенности использования платы Elbear Ace-Uno в ArduinoIDE ### Цифровые выводы На плате Elbear Ace-Uno пользователю доступны встроенные светодиод и кнопка. Для их использования можно воспользоваться макросами LED_BUILTIN и BTN_BUILTIN, передавая их в качестве аргументов функции вместо номера цифрового вывода. В отличие от стандартного функционала Arduino, на плате Elbear Ace-Uno невозможно управлять притяжками цифрового вывода, настроенного на вход, с помощью функции digitalWrite(). Для включения притяжки к питанию необходимо воспользоваться функцией pinMode(PinNumber, INPUT_PULLUP). Для изменения состояния цифровых выводов помимо стандартной функции digitalWrite() доступна функция digitalToggle(uint32_t PinNumber). ###Прерывания На плате Elbear Ace-Uno доступно 6 выводов, позволяющих использовать прерывания с помощью функции attachInterrupt(). Это выводы D2, D3, D4, D5, D8, D9. Дополнительно доступно прерывание по встроенной кнопке (использовать макрос BTN_BUILTIN). В микроконтроллере MIK32 предусмотрен всего один вектор прерывания. Когда срабатывает прерывание от любого источника, общая функция-обработчик последовательно проверяет все возможные источники и, при необходимости, вызывает соответствующие обработчики конкретных модулей. Поэтому важно, чтобы функции, вызываемые при прерываниях, выполняли минимально необходимый объем работы и обеспечивали как можно более быстрое завершение обработки. Это позволит избежать задержек и снизит риск пропуска последующих прерываний. Общая функция-обработчик прерываний располагается в RAM памяти. Это позволяет устраненить задержки, связанных с кэшированием памяти при работе из FLASH памяти. Обработчики прерываний, назначаемые цифровым выводам с помощью функции attachInterrupt(), а так же обработчик прерывания для функции tone() так же располагаются в памяти RAM. UART - доступно два штуки, оба работают. Как использовать второй UART. ADC - разрешение встроенного в МИК32 АЦП составляет 12 бит, но возможно изменение разрешения в пределах от 1 до 32 бит с помощью функции analogReadResolution(). Разрешение АЦП по умолчанию составляет 10 бит. Функция analogRead() возвращает результаты измерения после усреднения по 10 значениям. ШИМ - одновременно с разными частотами можно использовать только выводы, сидящие на разных таймерах. На таймере 1 - 3, 5, 6, 9. На таймере 2 - 10, 11. Входящие в состав пакета библиотеки адаптированы для работы на Амуре. Варнинги от ErrorMsgHandler и как их можно отключить. Включение/отключение сообщений об ошибках DISABLE_ERROR_MESSAGES(); ## Протестированные библиотеки |Библиотека|Описание|Заметки| |---------|---------|------| |[SPI](https://docs.arduino.cc/language-reference/en/functions/communication/SPI/)|Библиотека для работы с интерфейсом SPI. Входит в состав bsp| Для работы используется встроенный SPI1. Доступные делители частот - SPI_CLOCK_DIV4, SPI_CLOCK_DIV8, SPI_CLOCK_DIV16, SPI_CLOCK_DIV32, SPI_CLOCK_DIV64, SPI_CLOCK_DIV128,SPI_CLOCK_DIV256, обеспечивают частоту работы от 125 кГц до 8 МГц. Скорость работы по умолчанию - 4 МГц. Для задания режима и скорости работы рекомендуется использовать функцию SPISettings(), а не отдельные соответствующие функции.| |[Wire](https://docs.arduino.cc/language-reference/en/functions/communication/Wire/)|Библиотека для работы с интерфейсом I2C. Входит в состав bsp|Для работы используется встроенный I2C1. Доступные частоты работы интерфейса: 100 кГц (WIRE_FREQ_100K), 400 кГц (WIRE_FREQ_400K), 1000 кГц (WIRE_FREQ_1000K). Скорость работы по умолчанию - 100 кГц. В режиме работы в качестве ведомого устройства функции, заданные через onReceive() и onRequest(), выполняются в прерывании.| |[SoftwareSerial](https://docs.aСrduino.cc/learn/built-in-libraries/software-serial/)|Библиотека, реализующая программный последовательный интерфейс. Входит в состав bsp|Доступные скорости работы - от 300 до 57600 бод. Для отправки данных (TX) можно использовать любой цифровой вывод. Для приема данных (RX) можно использовать только выводы, поддерживающие прерывания. Обработчик прерывания и связанные с ним функции располагаются в памяти RAM.| |[EEPROM](https://docs.arduino.cc/learn/built-in-libraries/eeprom/)|Библиотека для работы с памятью EEPROM. Входит в состав bsp| Для использования доступно 1024 байта встроенной EEPROM памяти. Для корректной работы библиотеки обязательно вызывать функцию EEPROM.begin() перед началом работы с памятью.| |[Servo](https://docs.arduino.cc/libraries/servo/)|Библиотека для работы с сервоприводом. Входит в состав bsp| Любой цифровой вывод может использоваться для управления сервоприводом| |[NeoPixel](https://docs.arduino.cc/libraries/adafruit-neopixel/)|Библиотека для работы с адресными светодиодами. Входит в состав bsp|| |[SD Library](https://www.arduino.cc/en/Reference/SD)|Библиотека, позволяющая считывать и записывать информацию на карты `SD`|v1.2.4| # Полезные ссылки * [Материалы по платам ELBEAR ACE-UNO](https://elron.tech/support/#elbear) * [Телеграмм-канал компании (обновления по проекту ELBEAR и другим)](https://t.me/elrontech) При возникновении вопросов или выявлении проблем можно оставить заявку [здесь](https://gitflic.ru/project/elron-tech/elbear_arduino_bsp/issue).