MicroCore - пакет Arduino для ATtiny13

https://github.com/MCUdude/MicroCore

Библиотека MicroCore-master.zip

MicroCore - это легкий аппаратный пакет Arduino для ATtiny13, ATtiny13A и ATtiny13V. Он прост в установке, прост в использовании, имеет множество функций и поддерживает большинство функций Arduino. Если вы занимаетесь низкоуровневым программированием AVR, я рад сообщить вам, что все релевантные ключевые слова выделяются IDE через отдельный файл ключевых слов. Обязательно ознакомьтесь с примерами файлов (File > Examples > AVR C code examples).

Содержание

Зачем использовать ATtiny13 в проекте Arduino?

Поддерживаемые тактовые частоты

ATtiny13 имеет несколько внутренних генераторов, и это доступные тактовые частоты:

Если вам нужны другие или более высокие тактовые частоты, вы можете применить внешний источник тактовых импульсов. Обратите внимание, что ATtiny13 требует внешнего тактового сигнала и не может управлять цепью резонатора. Вы можете использовать кварцевый генератор или драйвер кристалла (показано в минимальной настройке ). Поддерживаемые внешние тактовые частоты:

Выберите ATtiny13 в меню плат, затем выберите тактовую частоту. Вам нужно нажать «Burn bootloader», чтобы установить правильные предохранители. Убедитесь, что вы подключили ISP-программатор и выбрали правильный в меню «Программисты».

* Обязательно используйте один из «медленных» параметров программатора при использовании опции 600 или 128 кГц (например, USBtinyISP (медленный) ).

LTO

Оптимизация LTO или времени соединения включена по умолчанию и уменьшает размер кода во время компиляции. Если вы хотите узнать больше о флагах компилятора и оптимизации времени компоновки (LTO), зайдите на сайт GNU GCC . Ральф Донкастер также написал отличный пост о LTO, который вы должны прочитать.
Оптимизация компилятора, безусловно, может сделать ваш код меньше по размеру. Тем не менее, это все о написании эффективного кода. Компания Atmel создала заметку о том, как написать более эффективный код C для микроконтроллеров AVR. Это большое знание, поэтому вы должны обязательно это проверить - AVR4027: Советы и рекомендации по оптимизации кода C для 8-разрядных микроконтроллеров AVR .

Опция BOD

Обнаружение отключения или BOD для краткости позволяет микроконтроллеру определять входное напряжение и отключаться, если напряжение падает ниже значения отключения. Вот доступные варианты BOD:

Timing options (Варианты времени)

Вы можете включить или отключить micros () непосредственно из меню синхронизации. Отлично, если вы хотите сохранить флэш-память! Millis () автоматически связывается при использовании.

Серийная (Serial) поддержка

MicroCore представляет собой блестящую, сверхлегкую программную библиотеку UART, обернутую Serial. Это означает, что вы можете использовать обычный, Serial.print()если вам нужно. Обратите внимание, что скорость передачи данных должна быть определена во время компиляции и не может быть определена в эскизе. В таблице ниже приведен список тактовых частот, которые по умолчанию используются. Если вам нужна другая скорость передачи для конкретной тактовой частоты, вы можете изменить файл core_settings.h .

Если вы хотите использовать функциональность UART, вам необходимо подключить правильное оборудование к правильным контактам ATtiny13. См. Минимальный раздел настройки для получения дополнительной информации. Также, пожалуйста, посмотрите на предоставленные serial example sketches.

----------------------------------------
Clock                Скорость передачи
(Внешний) 20 МГц        115200
(Внешний) 16 МГц        115200
(Внешний) 12 МГц        115200
(Внешний) 8 МГц                115200
(Внешний) 1 МГц                19200
(Внутренний) 9,6 МГц        115200
(Внутренний) 4,8 МГц        57600
(Внутренний) 1,2 МГц        19200
(Внутренний) 600 кГц        9600
(Внутренний) 128 кГц        Не поддерживается
-----------------------------------------

Калибровка внутреннего генератора

Внутренние внутренние генераторы 9,6 и 4,8 МГц (да, они отдельные) в ATtiny13 обычно не очень точны. Это приемлемо для многих приложений, но когда вы используете асинхронный протокол, такой как UART, скидка ± 3-4% просто не будет работать. Для решения этой проблемы MicroCore предоставляет удобный эскиз калибровки генератора, который вычисляет новое значение OSCCAL на основе полученного символа через UART. Все, что вам нужно сделать, это загрузить эскиз, выбрать правильную скорость передачи данных в последовательном мониторе, выбрать Без окончания строки и отправить xсимвол много раз ( x[отправить],x[Отправить] ...). После нескольких попыток вы должны постепенно увидеть читаемый текст на последовательном мониторе. После того, как калибровочное значение стабилизируется, оно автоматически сохраняется в адресе EEPROM 0 для будущего использования. Это значение не загружается по умолчанию, но должно быть загружено "вручную" в вашем эскизе, например:

  // Проверяем, существует ли какое-либо значение OSCCAL в EEPROM addr. 0
  // Если нет, сначала   запустите эскиз тюнера генератора
  uint8_t cal = EEPROM.read(0);
  if (cal < 0x80)
    OSCCAL = cal;

Причина, по которой он проверяет, является ли значение калибровки меньше 0x80, заключается в том, что значение OSCCAL может быть только 0x7F или меньше, а значение по умолчанию, когда EEPROM стирается и пусто, равно 0xFF. Приведенный выше фрагмент кода - это просто примитивный способ проверки наличия значения, которое можно загрузить в регистр OSCCAL.

Огромное спасибо Ральфу Донкастеру за его превосходную последовательную библиотеку программного обеспечения и его код калибровки генератора. Ничто из этого не было бы близко к возможному, если бы не его блестящая работа!

Программирование

Когда ATtiny13 работает от внутреннего генератора 600 или 128 кГц, он может быть слишком медленным для взаимодействия с инструментом программирования. Вот почему это ядро добавляет в список некоторых дополнительных программистов с суффиксом (медленно) . Эти опции заставляют программистов работать на более низкой тактовой частоте, чтобы микроконтроллер мог поддерживать скорость.

Выберите свой микроконтроллер в меню плат, затем выберите тактовую частоту. Вам нужно нажать «Записать загрузчик», чтобы установить правильные предохранители и загрузить правильный загрузчик.
Убедитесь, что вы подключили ISP-программатор и выбрали его правильно в меню «Программирование».

Основные настройки

Чтобы убедиться, что вы можете разместить весь свой проект в этом крошечном микроконтроллере и при этом использовать функции Arduino, я добавил некоторые основные настройки . Изменяя core_settings.hфайл, вы можете включить или отключить основные функции, которые вам нужны или не нужны. Если вы знаете, что делаете, и хотите получить полный контроль, вы можете отключить безопасный режим. Например, safemode гарантирует, что PWM будет отключен, если один из выводов работает на высоком или низком уровне, или если цифровые контакты не превышают 5 (всего 6 цифровых контактов). Отключив безопасный режим, вы получите немного скорости и места на флэш-памяти.

Как установить

Установка Boards Manager

MicroCore требует Arduino IDE версии 1.6.13 или выше.

Ручная установка

Нажмите на кнопку «Клонировать или скачать» в правом верхнем углу. Извлеките ZIP-файл и переместите извлеченную папку в папку « ~ / Documents / Arduino / hardware ». Создайте «аппаратную» папку, если она не существует. Откройте Arduino IDE, и в меню плат появится новая категория «MicroCore».

Начало работы с MicroCore

Итак, вы загрузили и установили MicroCore, но как вы получаете вращение колес? Вот краткое руководство по началу работы:

Распиновка

Эта схема показывает распиновку и периферийные устройства ATtiny13. Распиновка Arduino напрямую связана с номером порта, чтобы минимизировать использование кода.

Распиновка ATtiny13

Минимальная установка

установка

Работающие функции и библиотеки Arduino

Из-за ограниченного аппаратного обеспечения ATtiny13 поддерживает не все функции и библиотеки Arduino по умолчанию. Вот список всех рабочих функций и библиотек Arduino, которые включены в пакет MicroCore.

Arduino функции

Библиотеки Arduino

Подтверждения

MicroCore основан на ядре Smeezekitty13 , которое представляет собой аппаратный пакет Arduino ATTiny13 для IDE 1.0.x.