From 775c6f1da972297606e24089afb89f934c316397 Mon Sep 17 00:00:00 2001 From: klassents Date: Wed, 16 Oct 2024 09:49:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 93e8944..f0de393 100644 --- a/README.md +++ b/README.md @@ -11,22 +11,23 @@ ## Особенности использования платы 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 доступны встроенные светодиод и кнопка. Для их использования необходимо воспользоваться макросами `LED_BUILTIN` и `BTN_BUILTIN`, передавая их в качестве аргументов функции вместо номера цифрового вывода. +В отличие от стандартного функционала Arduino, на плате Elbear Ace-Uno невозможно управлять притяжками цифрового вывода, настроенного на вход, с помощью функции `void digitalWrite(uint32_t PinNumber, uint32_t Val)`. Для включения притяжки к питанию необходимо воспользоваться функцией `void pinMode(PinNumber, INPUT_PULLUP)`. +Для изменения состояния цифровых выводов помимо стандартной функции `void digitalWrite(uint32_t PinNumber, uint32_t Val)` доступна функция `void digitalToggle(uint32_t PinNumber)`. ### Аналоговые выводы #### АЦП -Разрешение встроенного в MIK32 АЦП составляет 12 бит. Разрешение АЦП по умолчанию в Arduino IDE составляет 10 бит. Функция `analogReadResolution()` позволяет измененить разрешение в пределах от 1 до 32 бит. -Функция `analogRead()` возвращает результаты измерения после усреднения по 10 значениям. +Встроенный в MIK32 АЦП обладает разрешением 12 бит, однако по умолчанию в Arduino IDE применяется разрешение 10 бит. С помощью функции `void analogReadResolution(uint8_t resolution)` можно изменять разрешение в диапазоне от 1 до 32 бит. +Функция `uint32_t analogRead(uint32_t PinNumber)` возвращает результаты измерения после усреднения по 10 значениям. #### ШИМ -На плате Elbear Ace-Uno доступны следующие выводы для формирования ШИМ сигнала: D3, D5, D6, D9, D10, D11. Сигнал формируется с помощью 32-битного таймера. Выводы D3, D5, D6, D9 подключены к таймеру 1, выводы D10, D11 подключены к таймеру 2. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ сигнал одинаковой частоты. -Цифровой вывод D10 не может быть использован для ШИМ, если одновременно активен интерфейс SPI. Это ограничение связано с особенностями работы микроконтроллера. Ограничение не распространяется на использование D10 в качестве цифрового вывода при активном SPI. -По умолчанию частота сформированного ШИМ сигнала составляет 1 кГц. Функция `analogWriteFrequency()` позволяет изменить частоту сигнала в пределах от 1 Гц до 1 МГц. -По умолчанию разрешение, используемое в функции `analogWrite()`, составляет 8 бит. Функция `analogWriteResolution()` позволяет измененить разрешение в пределах от 1 до 32 бит. +На плате Elbear Ace-Uno доступны следующие выводы для формирования ШИМ-сигнала: D3, D5, D6, D9, D10, D11. Генерация сигнала осуществляется с помощью 32-битного таймера. Выводы D3, D5, D6, D9 подключены к таймеру 1, выводы D10, D11 подключены к таймеру 2. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ-сигнал одинаковой частоты. +Цифровой вывод D10 не может быть использован для генерации ШИМ, если одновременно активен интерфейс SPI. Это ограничение связано с особенностями работы микроконтроллера. Ограничение не распространяется на использование D10 в качестве цифрового вывода при активном SPI. +По умолчанию частота сформированного ШИМ-сигнала составляет 1 кГц. Функция `void analogWriteFrequency(uint32_t freq)` позволяет изменить частоту сигнала в диапазоне от 1 Гц до 1 МГц. +По умолчанию разрешение, используемое в функции `void analogWrite(uint32_t PinNumber, uint32_t writeVal)`, составляет 8 бит. Функция `void analogWriteResolution(uint8_t resolution)` позволяет измененить разрешение в диапазоне от 1 до 32 бит. +Остановить генерацию ШИМ-сигнала можно, вызвав функцию `void analogWriteStop(uint32_t PinNumber)` или функции `void digitalWrite(uint32_t PinNumber, uint32_t Val)`/`int digitalRead(uint32_t PinNumber)`. ### Прерывания -На плате Elbear Ace-Uno доступно 7 прерываний, настраиваемых функцией `attachInterrupt()`: +На плате Elbear Ace-Uno доступно 7 прерываний, настраиваемых функцией `void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode)`: |Цифровой вывод|Номер прерывания| |---------|---------| |D2|0| @@ -35,10 +36,11 @@ |D5|3| |D8|4| |D9|5| -|`BTN_BUILTIN`|6| +|`BTN_BUILTIN`|6| +Для получения номера прерывания по номеру вывода существует функция `int8_t digitalPinToInterrupt(uint32_t digPinNumber)`. В микроконтроллере MIK32 предусмотрен всего один вектор прерывания. Когда срабатывает прерывание от любого источника, общая функция-обработчик последовательно проверяет все возможные источники и, при необходимости, вызывает соответствующие обработчики конкретных модулей. Поэтому важно, чтобы функции, вызываемые при прерываниях, выполняли минимально необходимый объем работы и обеспечивали как можно более быстрое завершение обработки. Это позволит избежать задержек и снизит риск пропуска последующих прерываний. -Общая функция-обработчик прерываний располагается в RAM памяти. Это позволяет устраненить задержки, связанных с кэшированием памяти при работе из FLASH памяти. Обработчики прерываний, назначаемые цифровым выводам с помощью функции `attachInterrupt()`, а так же обработчик прерывания для функции `tone()` так же располагаются в памяти RAM. +Общая функция-обработчик прерываний располагается в RAM памяти. Это позволяет устраненить задержки, связанных с кэшированием памяти при работе из FLASH памяти. Обработчики прерываний, назначаемые цифровым выводам с помощью функции `void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode)`, а так же обработчик прерывания для функции `tone()` так же располагаются в памяти RAM. ### Serial Для работы доступно два последовательных интерфейса. Нулевой интерфейс доступен на выводах D0, D1, для работы с ним используется экземпляр класса под названием `Serial`. Нулевой интерфейс используется для вывода информации в Монитор порта в Arduino IDE. @@ -48,6 +50,7 @@ ### Предупреждения об ошибках Если в скетче используется интерфейс `Serial`, при возникновении ошибок при использовании какой-либо функции из пакета в порт может передаваться сообщение об этой ошибке с пояснением. Например, если в функцию будет передан некорректный номер цифрвого вывода, предупреждение об этом появится в подключенном com порте. По умолчанию вывод предупреждений включен. Если интерфейс `Serial` используется для коммуникации с другим устройством, вывод предупреждений можно отключить. Для этого в самом начале функции `setup()` необходимо вызвать макрос `DISABLE_ERROR_MESSAGES();`. Вывод предупреждений можно включить обратно, вызвав макрос `ENABLE_ERROR_MESSAGES();` в любом месте программы. + ### Библиотеки, входящие в состав пакета Входящие в состав пакета библиотеки используют периферию микроконтроллера MIK32 и адаптированы для работы с ним. |Библиотека|Описание|Заметки|