Теперь у нас есть раздел «Обсуждения» на Github. Если проблема определенно является дефектом ядра, вы сократите время, необходимое для ее устранения, если создадите проблему, поскольку я отдаю приоритет проблемам, а не обсуждениям.
Это исправляет многие ошибки, присутствующие в версии 2.6.x.
В версии 2.6.x значительно улучшено пространство для флэш-памяти последовательного порта, а также добавлены функции, провод может вывести подчиненное устройство из спящего режима без повреждения данных и многое, многое другое, см. Список изменений.
Следует использовать только версии Arduino IDE, загруженные с arduino.cc, НИКОГДА из менеджера пакетов Linux. Менеджеры пакетов часто имеют Arduino IDE, но модифицировали ее . И это несмотря на то, что они ничего не знают об Arduino или разработке встроенных систем в целом, а тем более о том, что им нужно знать для успешной модификации. Эта версия печально известна тонкими, но серьезными проблемами, вызванными этими неразумными модификациями. Не следует ожидать, что это ядро будет работать на таких версиях, и по этой причине не будут вноситься никакие изменения для исправления версий IDE, поступающих из менеджеров пакетов.
Это ошибка в клиенте Arduino.
В версиях IDE между 1.8.13 и 2.x возникли серьезные новые дефекты. Однако версии IDE 1.8.2 и более ранние содержат серьезные неустраненные дефекты. Я считаю, что у них наконец-то вышла рабочая версия IDE, и я верю, что последняя версия сможет правильно установить мое ядро.
До версии megaTinyCore 2.6.0 ручная установка megaTinyCore приводила к сбою версии 1.8.14 IDE из-за этой ошибки при установке ядра вручную в папку arduino. Пользователи версии 1.8.14 и более поздних должны использовать версию megaTinyCore 2.6.0.
Я покупаю много электроники на AliExpress. Это отличный рынок для вещей, которые производятся китайскими компаниями и в основном являются универсальными, включая множество компонентов, недоступных для людей на глобальном Западе другим способом (например, минимальный заказ — это катушка или что-то в этом роде — если вы вообще можете найти поставщик компонентов, который работает с безымянным китайским производителем чипов). Это не лучшее место для новейших линеек полупроводниковой продукции крупных западных производителей, особенно в условиях исторического дефицита этих чипов. Современные устройства AVR, когда они вообще доступны по этим каналам, часто считаются поддельными или неисправными (например, ATtiny412, которые думают, что они 416, и могут неправильно выполнить включение питания при сбросе). В этом отношении вы, вероятно, не захотите покупать микроконтроллеры AVR на AliExpress ... Собранные платы, такие как клоны Arduino Nano, обычно работают, если вы избегаете плат со сторонними чипами LGT8 и следите за платами с ATmega168p. вместо '328p - но есть много сообщений о поддельных микроконтроллерах, когда они продаются как голые чипы (я слышал о поддельных ATtiny85, которые на самом деле были отмечены ATtiny13; подделываются не только современные AVR). Существует множество интересных теорий о том, откуда взялись эти фиктивные чипы, но Microchip хранит полное молчание по этому поводу.
Этот документ лучше всего просматривать в Интернете (в отличие от открытия файла уценки в вашем любимом текстовом редакторе), чтобы ссылки были доступны для кликов и отображались встроенные изображения, и, что, вероятно, самое главное, чтобы таблицы иногда отображались правильно. Опять же, этот [документ можно найти на github](https://github.com/SpenceKonde/megaTinyCore](https://github.com/SpenceKonde/megaTinyCore)
Старые версии неправильно обрабатывают программисты в меню инструменты -> программисты, что быстро ухудшает пользовательский интерфейс по мере увеличения количества установленных ядер. Они не подходят. Новейшие версии, начиная с 1.8.14 (включая 1.8.17, 1.8.18 и 1.8.19), могут генерировать ошибку «паника: основная версия не найдена», поскольку они не могут правильно проанализировать файл Platform.txt. Начиная с версии 2.6.0 мы вручную изменяем файл Platform.txt непосредственно перед выпуском, поэтому это не является проблемой.
Когда megaTinyCore устанавливается через диспетчер плат, необходимая версия набора инструментов устанавливается автоматически. Все детали серии 0/1/2 поддерживаются без дополнительных действий. Вплоть до версии 2.2.7 мы использовали версию avr-gcc для Arduino7 (gcc 7.3.0 и avrlibc 3.6.1) с последними пакетами ATpack по состоянию на июнь 2020 года. Начиная с версии 2.2.7, мы начали использовать мою сборку цепочки инструментов Azduino, которая обновил ATpacks для всех новых поддерживаемых частей. В версии 2.2.7 использовался Azduino3, в версии 2.3.0+ использовался Azduino4, а начиная с версии 2.6.0 мы используем Azduino5 (хотя он не дает нам никаких преимуществ, кроме экономии четверти ГБ места на жестком диске и 40 МБ полосы пропускания при загрузке, если вы установите оба megaTinyCore и DxCore через диспетчер платы.
Ручная установка более сложна, особенно если вам нужна поддержка 2-й серии; дополнительную информацию см. в руководстве по установке.
Ядро Arduino для tinyAVR серий 0, 1, а теперь и 2-й серии. Эти части имеют улучшенную архитектуру по сравнению с «классическими» частями tinyAVR (которые поддерживаются ATTinyCore), с улучшенной периферией и улучшенным временем выполнения определенных инструкций (они аналогичны как усовершенствованным AVR серии Dx, так и Чипы megaAVR 0-Series, такие как ATmega4809, используемые в официальных Nano Every и Uno Wifi Rev. 2 — хотя команда Arduino приложила все усилия, чтобы поставить им колени) в недорогие небольшие упаковки, типичные для линейки ATtiny. Все эти части имеют как минимум один аппаратный UART, а также интерфейсы SPI и TWI (ничего такого USI-мусора, как, например, в ATtiny85), мощную систему событий, настраиваемую пользовательскую логику, как минимум один встроенный аналоговый компаратор. , удивительно точный внутренний генератор, а в случае серии 1 — настоящий выходной канал ЦАП, а в случае серии 2 — причудливый дифференциальный АЦП.
Более того, компоненты tinyAVR серии 0/1/2 дешевы : самые дорогие модели, 3226 и 3227, с 32 КБ флэш-памяти и 3 КБ SRAM (по сравнению с 2 КБ SRAM, как у ATmega328p, используемого в Uno/Nano/ProMini), работают Количество чуть более 1 доллара США - меньше, чем у многих 8-тысячных классических деталей AVR ATtiny (набор инструкций AVR на PIC цена"). Все эти детали рассчитаны на работу на частоте 16 МГц или 20 МГц (при напряжении 4,5–5,5 В) без внешнего кристалла, а внутренний генератор достаточно точен для связи UART.
В них используется программирование UPDI, а не традиционный ISP, как в классических компонентах ATtiny. Дополнительную информацию см. ниже. Получить программатор UPDI просто — вы можете использовать классический Arduino на базе 328p в качестве программатора с помощью jtag2updi — или для достижения лучших результатов с более дешевым оборудованием вы можете использовать любой последовательный USB-адаптер и резистор (и желательно диод), используя прилагаемый SerialUPDI. инструмент, или вы можете использовать AVRdude с одним из программаторов Microchip (программаторы на базе mEDBG/nEDBG/EDBG на их плате разработки, Atmel-ICE или SNAP) или любой инструмент программирования UPDI, который эмулирует один из них (который, насколько мне известно, все они делают - если есть такой, который поддерживает avrdude, а мое ядро - нет, откройте проблему, чтобы сообщить мне!).
В этих частях поддерживается последовательный загрузчик Optiboot_x (основанный на той же кодовой базе, что и классический загрузчик Arduino Uno, хотя и сильно измененный) (в настоящее время поддерживается серия 0/1, поддержка серии 2 ожидается к первой неделе мая). ; корректировки новых деталей тривиальны), что позволяет программировать их через традиционный последовательный порт. Дополнительную информацию об этом и соответствующих параметрах см. в разделе Optiboot ниже. Для установки загрузчика требуется программатор UPDI. Собранные коммутационные платы, которые я продаю на Tindie, доступны с предварительной загрузкой (они загружаются по требованию). При этом пользовательский опыт работы с Optiboot немного разочаровывает детали серии 0/1, а также 14-контактные детали серии 2 из-за отсутствия у них контакта аппаратного сброса, который можно было бы использовать с обычной схемой автоматического сброса. для автоматического сброса в загрузчик при открытии последовательного порта. Вам необходимо либо полностью отключить программирование UPDI (требуется высоковольтный программатор, если настройки предохранителей или загрузчика необходимо изменить после первоначальной загрузки), либо оставить UPDI включенным, но начинать любую загрузку в течение 8 секунд после подачи питания. 20-контактные и 24-контактные детали серии 2 поддерживают «альтернативный контакт сброса», что позволяет им действовать больше как традиционный Arduino.
Интерфейс программирования UPDI — это однопроводной интерфейс для программирования (и отладки — Universal Programming and Debugging Interface ), который используется в микроконтроллерах tinyAVR 0/1/2-серии, а также во всех других современных микроконтроллерах AVR. . Хотя всегда можно приобрести специальный программатор UPDI от Microchip, это не рекомендуется, если вы будете использовать Arduino IDE, а не (ужасно сложную) IDE Microchip. Официальные программисты Microchip часто сообщают о проблемах в Linux. Существует два очень недорогих альтернативных подхода к созданию программатора UPDI, оба из которых у сообщества Arduino больше опыта, чем у официальных программистов.
До появления megaTinyCore существовал инструмент под названием pyupdi — простая программа Python для загрузки в микроконтроллеры, оснащенные UPDI, с использованием последовательного адаптера, модифицированного добавлением одного резистора. Но pyupdi было нелегко использовать из Arduino IDE, поэтому это был не вариант. Начиная с версии 2.2.0, megaTinyCore включает переносимую реализацию Python, которая открывает множество дверей; Первоначально мы планировали адаптировать pyupdi, но по настоянию его автора и нескольких сотрудников Microchip вместо этого мы основали эту функциональность на pymcuprog, «более надежном» инструменте, разработанном и «поддерживаемым Microchip», который включает ту же загрузку через последовательный порт. функция, только без оптимизации производительности. При установке вручную вам необходимо добавить пакет Python, соответствующий вашей операционной системе, чтобы использовать этот метод загрузки (установки системного Python недостаточно и она не является необходимой).
Прочтите документацию SerialUPDI для получения информации о подключении.
Начиная с версии 2.3.2, благодаря значительному улучшению производительности и проверенной надежности схемы подключения с использованием диода вместо резистора, а также с учетом ненадежности прошивки jtag2updi, этот метод программирования теперь является рекомендуемым. В этой версии скорость программирования увеличена почти в 20 раз и теперь намного превышает то, что было возможно с помощью jtag2updi (программирование с помощью jtag2updi примерно сопоставимо по скорости с программированием через SerialUPDI с опцией скорости «МЕДЛЕННО», 57600). бод; обычная версия программы со скоростью 230–400 бод примерно в три раза быстрее, чем версия SLOW или jtag2updi, а опция «TURBO» (работает со скоростью). 460800 бод и увеличивает скорость загрузки примерно на 50% по сравнению с обычной версией. Версия со скоростью TURBO должна использоваться только с устройствами, работающими с напряжением 4,5 В или выше, поскольку нам придется запускать тактовую частоту UPDI быстрее, чтобы идти в ногу со временем (это также не ожидается). быть совместимым со всеми последовательными адаптерами — это намеренный компромисс для повышения производительности), но он позволяет загружать и проверять эскиз размером 32 КБ за 4 секунды.
В настоящее время тестируются три конструкции: последовательный адаптер с двумя портами, где оба являются последовательными портами, последовательный адаптер с двумя портами, где один порт всегда является UPDI, и один порт с переключателем для выбора режима, а также дополнительная дополнительная плата для предоставления светодиоды, показывающие состояние линий управления модемом.
Они позволят использовать либо разъем SMT JST-XH, либо разъем Dupont — в любом случае с 6 контактами для последовательного порта (распиновка FTDI указана) и 3 контактами (для UPDI).
Все три из них смогут подавать напряжение 3,3 или Vusb (номинальное напряжение 5 В) или отключать от питания как Vusb, так и 3V3, и ожидать, что целевое устройство будет питаться с напряжением 5,5 В > Vdd > 1,8 В. Логические уровни, используемые в этом случае, будут соответствовать напряжению всего, что приложено. Имейте в виду, что на устройствах с двумя последовательными портами шина питания VccIO является общей! Они оба должны работать под одинаковым напряжением, быть одним и тем же устройством, или адаптер должен быть настроен на их питание, а их питание отключено.
Было обнаружено, что в зависимости от модели адаптера и операционной системы требуются разные настройки синхронизации; однако настройки, необходимые для предотвращения сбоя даже при скорости 230 400 бод на Linux/Mac с большинством адаптеров, накладывают гораздо больший штраф по времени на Windows, где последовательная обработка ОС достаточно медленная, и такая задержка не требуется...
Упомянутая здесь «задержка записи» предназначена для завершения выполнения команды стирания-записи страницы; это занимает ненулевое время. В зависимости от адаптера задержка USB и неявный 2- или 3-байтовый буфер (это похоже на USART и, вероятно, реализовано как один внутри. Пришедшему третьему байту некуда идти, поскольку аппаратный буфер имеет глубину всего 2 байта) может быть достаточно, чтобы позволить ему работать без явной задержки. Или он может выйти из строя на полпути и сообщить «Ошибка с st». Чем меньше тайм-аут задержки адаптера и чем быстрее обрабатывается последовательный порт ОС, тем больше вероятность того, что это проблема. Это контролируется параметром командной строки -wd
при запуске prog.py вручную. Начиная с версии 2.5.6 эта задержка записи ближе к фактическому запрошенному времени (в мс), раньше она имела степень детализации в несколько мс, когда 1 — это все, что вам нужно, и в результате налагаемое ею наказание было жестоким , особенно на Окна.
Руководство по выбору:
Для скорости 460800+ бод требуется, чтобы цель работала при напряжении 4,5 В+, чтобы оставаться в характеристиках (на практике, вероятно, оно не должно быть таким высоким, но оно должно быть достаточно высоким, чтобы стабильно работать на частоте 16 МГц. Мы установили частота интерфейса на максимум для всех скоростей выше 230400 бод - при этом некоторые адаптеры иногда работают на 460800 без этого шага (что само по себе странно - 460800 бод — это 460800 бод, верно?), большинство из них этого не делают, и у SerialUPDI нет способа определить, что это за адаптер.
Адаптеры на базе CH340 имеют достаточно высокую задержку на большинстве платформ и почти всегда работают на любой скорости, не прибегая к задержке записи. Все опции работают без использования задержки записи.
Практически все адаптеры работают на винде на 230.4к без использования задержки записи. Лишь немногие этого не делают, в том числе некоторые собственные микроконтроллеры USB, запрограммированные для работы в качестве последовательных адаптеров (например: SAMD11C).
Почти ничего, кроме адаптеров на базе CH340, не будет работать с частотой 460,8 КБ и более без задержки записи, независимо от платформы.
В Windows многие адаптеры (даже те, которые действительно должны ее поддерживать) не смогут переключиться на скорость 921600 бод. Я не знаю, почему. Симптомом является пауза в начале нескольких секунд при попытке, за которой следует загрузка на скорости 115200 бод. Единственный, с кем мне пока удалось добиться успеха, это CH340, как ни странно.
Скорость 460800 бод в Windows с задержкой записи часто медленнее, чем 230400 бод без нее. Этого нельзя сказать о Linux/Mac: чем меньше размер страницы, тем больше снижается производительность из-за задержки записи.
Скорость 57600 бод следует использовать, если другие опции не работают или при программировании при Vcc = < 2,7 В.
Скорость 460800 бод работает без задержки записи на некоторых адаптерах с резистором 10 кОм, установленным между диодом Шоттки между TX и RX, но без этого он не работает, если не включена задержка записи. Нет, я тоже не понимаю, как такое может быть!
Как видно из вышеизложенного, эта информация в значительной степени эмпирическая; пока неизвестно, как предсказать поведение.
Адаптеры FTDI (FT232, FT2232, FT4232 и т. д.), включая поддельные, которые доступны на eBay/AliExpress примерно за 2 доллара, в Windows по умолчанию имеют мучительно долгий период задержки, равный 16 мс. Даже несмотря на то, что мы применяем длину, чтобы ограничить количество периодов задержки, которые нам приходится ждать, это увеличит загрузку длительностью 2,2 секунды до более чем 15 секунд. Вы должны изменить это, чтобы получить приемлемые скорости загрузки:
Откройте панель управления, диспетчер устройств.
Расширьте порты (COM и LPT)
Щелкните правой кнопкой мыши порт и выберите свойства.
Откройте вкладку «Настройки порта».
Нажмите «Дополнительно...», чтобы открыть окно дополнительных настроек.
В разделе «Параметры BM» найдите меню «Таймер задержки», для которого, скорее всего, будет установлено значение 16. Измените его на 1.
Нажмите «ОК», чтобы выйти из окна дополнительных параметров, и еще раз, чтобы выйти из свойств. Вы увидите, что диспетчер устройств обновит список оборудования.
Загрузка теперь должна происходить намного быстрее.
Один можно сделать из классического AVR Uno/Nano/Pro Mini; Недорогие клоны Nano — обычный выбор, поскольку они достаточно дешевы, чтобы их можно было подключить, а затем оставить так. Мы больше не предоставляем подробную документацию по этим процессам; jtag2updi устарел. Если вы все еще используете его, вам следует выбрать jtag2updi в меню инструменты->программист. Ранее это был наш рекомендуемый вариант. Из-за постоянных ошибок jtag2updi и его зависимости от практически не поддерживаемого инструмента avrdude (который, среди прочего, вставляет ложное сообщение об ошибке во все загрузки UPDI, сделанные с его помощью), это больше не рекомендуется.
Судя по всему, Arduino не упаковывает 32-битные версии последней версии avrdude. Я определил новое определение инструмента, которое является копией arduino18 (последней версии), за исключением того, что оно использует версию 17 вместо 32-битной Linux, поскольку это лучшее, что доступно для этой платформы. Версия arduino17 неправильно поддерживает загрузку с помощью некоторых инструментов программирования Microchip.
В настоящее время это используется только для последних нескольких выпусков и должно исправить ошибку avrdude, недоступную для этой платформы.
TinyAVR 2-й серии
ATtiny3227,1627,827,427
ATtiny3226,1626,826,426
ATtiny3224,1624,824,424
TinyAVR 1-й серии
ATtiny3217,1617,817,417
ATtiny3216,1616,816,416
ATtiny1614814414214
ATtiny412,212
tinyAVR 0-серии
ATtiny1607,807
ATtiny1606806406
ATtiny1604804404204
ATtiny402,202
Что-нибудь с именем типа «AVR##XX##», где X — буква, а # — число. Для этого вам нужен мой DxCore.
Все классические (до 2016 года) части tinyAVR — почти все они поддерживаются одним из других моих ядер ATTinyCore.
ATtiny 25/45/85, 24/44/84, 261/461/861, 48/88, два маленьких и один (странные 43 и 4313/2313), а в 2.0.0 26, а также финальный -четыре (которые демонстрируют намеки на эксперименты в направлении современных AVR), ATtiny 441/841, 1634 и 828 плюс еще более странный 26.
Что-нибудь еще. См. В этом документе список семейств деталей AVR и сведения о том, с какими ядрами Arduino они работают — почти все имеет ядро, которое предлагает поддержку, обычно мной или MCUdude.
См. этот документ, охватывающий все современные AVR.
Особенность | 0-серия | 1-серия | 1+серия | 2-серия |
---|---|---|---|---|
Вспышка | 2–16 тыс. | 2к-8к | 16 тыс./32 тыс. | 4к-32к |
Пинкол | 8-24 | 8-24 | 14-24 | 14-24 |
СРАМ | 128б-1к | 128б-512б | 2 тыс. | 512б-3к |
ТЦД | Нет | Да | Да | Нет |
УТС | 1 | 1 | 2 | 2 |
АЦП | 1x10бит | 1x10-битный | 2x10-битный | 1x12-битный с PGA |
контакт VREF | Нет | Нет | Да | Да |
переменного тока | 1 | 1 | 3 | 1 |
Событие * | 3 чан | 6 чан | 6 чан | 6 чан |
ККЛ ** | 2 ЛУТ | 2 ЛУТ | 2 ЛУТ | 4 ЛУТ |
*
Каналы событий, за исключением крошечных AVR 2-й серии (и всех неминиатюрных современных AVR), подразделяются на два типа - синхронные (по системным часам) и асинхронные. Не все генераторы могут использоваться с синхронным каналом, а некоторые пользователи событий могут использовать только синхронные каналы, а списки каналов менее последовательны и более . От этого безумия отказались при первой же возможности — даже мега0 устранил это различие.
**
только 2-серийные и немаленькие детали могут вызывать прерывание в зависимости от состояния CCL.
Все детали имеют аналоговый вход на большинстве контактов (все контакты PORTA и PORTB 0–1 и 4–5). Второй АЦП серии 1+ также может использовать контакты PORTC в качестве входов (информацию об их использовании см. в справочнике по аналоговым устройствам).
Это бюджетные варианты. Хотя они поддерживаются, использовать их не рекомендуется. Они никогда не получают того «ускорения», которое получает tinyAVR 1-й серии при 16k, не имеют второго TCB в любой конфигурации, нет TCD, только 3 канала событий, ни один из которых не может передавать выходные данные событий RTC. Эти детали имеют 2 LUT CCL, как и серии 1, и доступны с флэш-памятью до 16 КБ в 14, 20 и 24-контактных конфигурациях (только 4 КБ для 8-контактных деталей) и до 1 КБ SRAM.
Они имеют 2 КБ, 4 КБ или 8 КБ флэш-памяти и 128, 256 или 512 байт оперативной памяти, как и серия 0. У них нет второго АЦП, конфигурации тройного переменного тока или второго TCB, хотя у них есть TCD.
Внезапно, в 16k, части 1-й серии стали гораздо интереснее. В дополнение к более крупной флэш-памяти идет арсенал периферийных устройств, которые, кажется, подходят для гораздо более крупного чипа, и независимо от того, 16 КБ или 32 КБ, все они имеют 2 КБ SRAM. Весь второй АЦП уникален среди AVR. Судя по всему, он стал полигоном для тестирования многих функций, которые в усовершенствованной форме проявились в серии AVR Dx. Цена, по-видимому, не учитывает значительно превосходящие периферийные устройства 16k 1-й серии.
Как видно из таблицы выше, 2-я серия — это скорее побочная версия, чем модернизация. У них гораздо лучший АЦП, система событий и CCL «нормальные», и у них больше оперативной памяти, доступна 14-контактная часть с 32 КБ флэш-памяти (видимо, планировался 3214, но затем его отменили; он зашел достаточно далеко, чтобы побыть некоторое время в ATPACK, прежде чем его удалят)
Я написал краткое описание того, когда какую серию вы захотите использовать, если правильный выбор еще не очевиден.
В официальном определении платы Arduino для их аппаратного пакета «megaavr» они подразумевают, что новая архитектура частей megaAVR 0-Series (которая почти такая же, как используется в tinyAVR 0-Series и 1-Series) называется «megaavr». "- это не официальный термин. Microchip использует термин «megaAVR» для обозначения любой части «ATmega», независимо от того, имеет ли она старую периферию или современную периферию. Не существует официальных терминов для обозначения всех частей AVR того или иного семейства, а сотрудник Microchip даже отрицал наличие такого термина внутри компании. Я не уверен, как можно изготовить два набора деталей, когда детали в каждом наборе имеют так много общего друг с другом и так мало общего с другим набором, и при этом никто не придумал фразу для обозначения любого из них.
В этом документе до версии 2.0.2 мы использовали соглашение Arduino, и, несмотря на то, что с тех пор прошло уже больше года, я все еще продолжаю находить места, где называю их megaAVR. Пожалуйста, сообщите об этом, используя проблему GitHub, если вы ее заметили. Обратите внимание, что термины avr
и megaavr
по-прежнему используются внутри (например, в библиотеках, чтобы отметить, с какими частями совместима данная библиотека, или разделить разные версии файла в зависимости от того, на чем они будут работать). Это будет продолжаться — мы должны придерживаться этого для совместимости с тем, что команда Arduino начала с ядра для Uno WiFi Rev. 2 и Nano Every.
В любом случае для обозначения этих двух групп необходимо какое-то слово , а Microchip его не предоставила. В отсутствие официального термина я называю устройства AVR, выпущенные до 2016 года (с регистрами PORTx, DDRx и т. д. для контактов), « классическими AVR », а те, которые Arduino называет megaavr, « современными AVR ». Также существуют некоторые компоненты, модули ввода-вывода которых во многом больше похожи на классические AVR, но также имеют значительно худшую версию набора команд и типичные размеры флэш-памяти 1 КБ или меньше. Они используют вариант AVR AVRrc (для сокращенного ядра), тогда как большинство классических AVR используют AVRe или AVRe+, а современные AVR используют AVRxt. Части AVRrc не поддерживаются этим ядром, и в том неудачном случае, когда мне придется обсудить эти глубоко разочаровывающие части, я буду называть их частями « Reduced Core AVR », поскольку это их официальное название, хотя у меня есть много более красочные фразы для них. Не рекомендуется ни в одной конструкции использовать AVR с уменьшенным ядром . Не то чтобы они устарели, они просто паршивые. Для всех новых разработок рекомендуется использовать « современные AVR » (с новой периферией и набором инструкций AVRxt ) — серии Ex, Dx, tinyAVR 0/1/2 или mega0.
Техническое описание новой серии tinyAVR 2. Хотя техническое описание «охватывает» только детали 16k, в них четко указано, что между деталями с одинаковым количеством контактов нет различий в функциях (то есть нет «золотых» деталей, таких как 16k/32k 1-Series), только между деталями с разным количеством контактов и только в зависимости от количества контактов (т. е. функция 24-контактной части будет такой же, как и у 14-контактной, если только у 14-контактного нет необходимых контактов, и его нельзя использовать без контактов). Детали с 14, 20 и 24 контактами указаны для флэш-памяти 4k, 8k, 16k и 32k; эти варианты размера флэш-памяти соответственно имеют 512, 1024, 2048 и 3072 байта SRAM (то есть части 4 КБ и 8 КБ имеют вдвое больше SRAM), части 4/8 КБ получают 128 байт EEPROM, более крупные - 256 байт. 14-контактные детали бывают SOIC и TSSOP, 20-контактные — (широкие) SOIC, SSOP и т. д. крошечный QFN, такой как 1616 (на этот раз нам дали и 32-килобайтную деталь в этом комплекте, но удачи в получении, она везде в резерве - я не смог найти ни одной) и 24-контактный в том же VQFN, что и 3217.
TWI, SPI, USART0, AC0 не изменились, как и NVMCTRL (изменения, необходимые для загрузчика, касались исключительно поддержки второго USART). Параметры часов без изменений. TCB0 и TCB1 были обновлены до версии в серии Dx: опция отключения тактового сигнала, каскад и отдельные биты INTCTRL для OVF и CAPT - приятные дополнения, но не имеющие отношения к самому ядру), и все части имеют оба TCB. Теперь мы получаем 4 LUT CCL и 2 секвенсора вместо 2 и 1 — и они могут запускать прерывания, как и другие части с CCL (и в отличие от tinyAVR серии 0/1). Одной из самых интересных особенностей является то, что, как и ожидалось, у них есть второй USART (этот шум, который вы слышите, — это ATtiny841 и ATtiny1634, рыдающие в углу). Регистры PORTMUX теперь называются так же, как и остальные современные AVR, но мы не потеряли индивидуальный контроль над выводами для каждого канала TCA WO. EVSYS теперь работает так же, как и с деталями, отличными от TinyAVR-0/1-Series (что является долгожданным изменением - серия 0/1 была лишней, и некоторые моменты, в которых их EVSYS отличались, были отстойными). ). Функции TCD0, AC1/2, DAC0 и ADC1 серии 1 исчезли . Вместо них ADC0 гораздо более причудлив и почти неузнаваем, это первый новый AVR, выпущенный после выкупа, в котором использовался настоящий дифференциальный АЦП. (очередь еще одного мучительного вопля от бедного 841-го, у которого тоже невероятно навороченный АЦП с отличными дифференциальными опциями, но который выглядит совершенно устаревшим рядом с новыми)... судя по количеству постов на разные темы, которые я написал кажется, у меня такое ощущение, что дифференциальный АЦП не был на вершине большинства ваших списков пожеланий, но он был на вершине списков основных покупателей чипов, и вот что мы получаем. И пришло время получить подходящий дифференциальный АЦП вместо того, что используется в серии Dx. И это действительно очень красиво. См. ниже.
megaTinyCore предоставляет реализацию AnalogRead() и более мощные функции для использования передискретизации и PGA (см. раздел аналоговых функций ниже).
Да, и еще кое-что… конфигурация контактов UPDI имеет старые параметры — UPDI, I/O или Reset… и новую: UPDI на PA0, с аппаратным контактом RESET на PB4! Optiboot, наконец, станет жизнеспособным и удобным вариантом, по крайней мере, для тех частей, которые имеют PB4, то есть не для 14-контактных частей. Который также оказался (если судить по моим продажам в магазине Tindie) самым популярным видом.
Как думаете, будет 3 серия? Я не делаю. DD и EA явно преследуют их и занимают стратегические позиции на территории tinyAVR. Я думаю, что ликвидация бренда, как это сделали с megaAVR после megaAVR 0-серии, — это лишь вопрос времени. Это не обязательно плохо: все детали серии Dx и EA очень похожи по расположению контактов и поведению, что очень приятно. Крошечные устройства менее систематичны, хотя они распределяют контакты по большему количеству периферийных устройств. Руководящим принципом, по-видимому, было «ни одно периферийное устройство не должно оставаться позади». В отличие от распиновки контактов серий Dx и EA, где все следует фиксированному генеральному плану. Детали либо имеют, либо не имеют заданный вывод, а если его нет, эта функция у них недоступна. Я думаю, что в обеих широких группах есть менеджер по продукту, чья работа состоит в том, чтобы щелкнуть кнутом инженеров, думающих о том, чтобы сделать «исключение» из «Святой распиновки» (поскольку эти исключения неизбежно множатся, и именно так мы закончили с назначением булавок для дартса с завязанными глазами. на классическом tinyAVR)
Нумерация контактов на tinyAVR странная, и это вина Microchip - они странно пронумеровали контакты внутри портов: все начинается по порядку, за исключением того, что PA0 является UPDI и обычно не используется, затем контакты PORTB нумеруются в обратном порядке. затем PORTC возвращается к той же нумерации против часовой стрелки, что и PORTA. Дай мне передышку! Поскольку по традиции в качестве первого контакта используется вывод 0, а последний номер — это вывод, который нельзя использовать без установки предохранителя, который затрудняет программирование чипа. Я бы предпочел иметь возможность пронумеровать их против часовой стрелки, начиная с A0, не нарушая неписаных соглашений кода Arduino. Можно утверждать, что я принял неправильное решение по назначению контактов - возможно, им следовало начать с PA0 (неприменимо, если не установлен предохранитель, в этом случае микросхему трудно программировать) в качестве контакта 0, а затем пронумеровать контакты против часовой стрелки. Но вы все равно не сможете проделывать те трюки, которые могли бы, если бы все порты были в порядке, если бы вы не пронумеровали контакты PORTB задом наперед. Если бы вы смогли избавиться от ожидания, что все контакты будут пронумерованы по порядку (и использовать только обозначение PIN_Pxn), можно было бы добиться значительной экономии.
Я прогнозирую, что через 2-4 года появятся AVR DA, DB, DD. Детали серий DU (USB), EA и D/E/F с количеством контактов до 8 (или хотя бы 14) и 64-контактных частей с флэш-памятью 128 КБ и новым АЦП. И больше ничего фирменного ATtiny. Вероятно, самый большой вопрос, который остается, заключается в том, собираются ли они когда-нибудь заменить ATmega2560 современным AVR со 100 контактами (вероятно, 80-88 из которых являются вводами-выводами) и опциями флэш-памяти до 256 КБ; Это создаст три проблемы: во-первых, после 56 контактов ввода-вывода больше не осталось регистров VPORT - нижнее пространство ввода-вывода заполнено 28 VPORT и 4 GPIOR. Как они справятся с четырьмя дополнительными портами? (на 2560 это были просто порты второго класса, доступ к которым осуществлялся медленнее и не имел доступа за один цикл. У меня есть некоторые размышления по этому поводу и о возможности того, как мало кодов операций доступно здесь, в приложении А. и, во-вторых, взломать барьер 128k во флэш-памяти, вам нужно перейти к 17-битному программному счетчику. Все переходы занимают дополнительный цикл, и все возвраты занимают дополнительный цикл. Наконец, если соотношение оперативной памяти AVR DB было сохранено, это. "D x Часть на 256 тыс. Флэш будет 32 тыс. ОЗУ. Теперь помните, как Progmem работает на DX - они не могли пройти весь путь до 32. Карточка Flash не оставляет места для SFR, которые находятся в одном и том же адресном пространстве.
Я продаю прорывные доски с регулятором, заголовком Uddi и серийным заголовком в моем магазине Tindie, а также с голой. Покупка в моем магазине помогает поддержать дальнейшую разработку в сердечнике, и это отличный способ начать использовать эти захватывающие новые детали с Arduino. В настоящее время доступны доски Attiny1624, но 20 и 24-контактные детали не будут продаваться в качестве собранной доски, пока недавно пересмотренный дизайн печатной платы не вернется из дома доски, чтобы включить Autoreset на Alt-Reset Pin. Существует также 14 -контактный пересмотр - подумал, что это в значительной степени косметическая. Желтая припоя маска должна идти, так как читаемость, казалось, ухудшилась в последних нескольких партиях. Новые платы также стандартизируют 0,6-дюймовый интервал между рядами штифтов, а не текущим расстоянием 0,7 дюйма, поэтому вы сможете, например, поставить на них заголовок вывода и подключить их к широкопроводному розетку, или или Используйте их с нашей платой, оптимизированной для этого расстояния между строками. Собранные доски серии 0 снимаются и не будут пополнено, как только они распроданы. То же самое произойдет для деталей 16K 2-серии, как только будут доступны 32K.
АЦП на 2-й серии и серии EA-лучшие АЦП, выпущенные на AVR в современную эпоху AVR. Помимо этих двоих. Самыми близкими сравнениями являются классические AVR, которые получили дифференциальные АДС с первоклассными функциями (T841, MEGA2560 и (удивительно) T861 являются самыми сильными конкурентами). Несмотря на то, что он не способен к безумному увеличению в 100x и 200x, от которых некоторые детали хвастались в классические дни AVR, мне никогда не было ясного, насколько многое усиливалось. Я собираюсь сказать: «Наверное, большую часть этого, и определенно большая часть этого, если вы позволите мне разработать аппаратное обеспечение, я не знаю аналоговый!»). Этот новый АЦП, безусловно, очень способен, с настоящей дифференциальной возможностью (в отличие от серии DA и DB), и тот, который поднимает голову и плечи выше всего, что доступно на любых других современных AVR на сегодняшний день. Программируемый усилитель усиления - это новая возможность, и еще неизвестно, какие подвиги аналоговых измерений могут избавиться от него; Это, безусловно, кажется многообещающим. Будет особенно интересно понять различия между использованием PGA при увеличении 1x, по сравнению с не использовать PGA, а также преимуществами и недостатками этого. (Microchip был бы хорошо оснащен документом, в котором обсуждалось, как выбрать правильную конфигурацию ADC для задачи в общем случае; я поднял эту проблему с Microchip и человеком, с которым я говорил, указал, что это был высокий приоритет; в то время как; Ситуация была значительно улучшена, по -прежнему кажется, что группа DOC была специально указана не делать никаких реальных конкретных рекомендаций любого рода.
Добавление накопления 1024 выборки для целей переносной дискретизации и уничтожения является долгожданным дополнением, хотя также рискует недооценивать величину и актуальность ошибки смещения. (Взяв 1024 образца, (все из которых имеют данную ошибку смещения), а затем уничтожение суммы с целью получения 17-битного измерения АЦП позволяет легко представить, что любая ошибка будет ограничена самой низкой парой битов. Но если ошибка С, скажем, 5 LSB при одном измерении, когда вы накапливаете 1024 образцов и дециплируйте, у вас есть ошибка смещения 160, это чрезвычайно легко увидеть, и думать, что он сигнал, а не шум.
Первый полноразмерный (не-неподходящий) чип с новым АЦП доступен в 28-48 PIN-пакетах со вспышкой до 64K. Были обычные спекуляции о том, что, если что-то изменится от 2-х серия на сериал EA: похоже, что ответ был удален, одна из запутанных ручек была удалена, и автоматическая вырубка знаков для накопленных измерений (
Таймер типа D используется только для PWM на части 20/24 PIN-контакта 1 части на параметрах PWM по умолчанию. На более мелких частях это не позволило бы нам увеличить общее количество штифтов ШИМ. Только булавки WOC и WOD (на PC0 и PC1 соответственно) уже не имеют TCA-управляемого ШИМ. Таким образом, поскольку AnalogWrite () не поддерживает никаких функций, которые будут включены путем отключения режима разделения (например, 16-битного ШИМ) или улучшенного с помощью таймера типа D (например, настройка частоты), это было бы просто хуже, потому что Потребовалось бы дополнительное место для хранения рутины для включения и выключения ШИМ из двух типов таймера вместо одного. Это не незначительно на меньших деталях вспышки; Это на заказе 600 байтов. 150 для DigitalWrite () и 450 для AnalogWrite (), если они когда -либо вызываются на PWM PIN -код TCD. Оптимизатор должен быть в состоянии оптимизировать эту часть этих функций в этом случае, поскольку выводы, используемые с этими функциями, не включают каких -либо контактов TCD PWM. Примечание. Оптимизатор рассмотрит их независимо, то есть DigitalWrite () будет включать код для отключения TCD PWM, если он используется с PIN -кодом, который использует TCD для PWM, независимо от того, называете ли вы когда -нибудь AnalogWrite () на этом PIN.
В отличие от почти всех других AVR (я могу придумать, возможно, 3 примера, и только один из них-это «бонус», а не «Unbonus»), есть дополнительные «бонусные» функции, основанные на размере флэш-размеров в семье . Версии 16K и 32K (только) имеют несколько дополнительных функций (которые также, по -видимому, не были рассмотрены по ценам) - все они имеют 2 тыс. ОЗУ, будь то 16K или 32K, у них 3 аналоговых компаратора (включая режим оконного режима опция), второй - отчаянно необходимый - Тип B таймер - и самые странные из всех, что у них есть второй АЦП, различающийся только в том, в котором соответствуют каналы каналы!
В отличие от классических AVRS, на этих частях вспышка отображается с тем же адресным пространством, что и остальная часть памяти . Это означает pgm_read_*_near()
не требуется для чтения непосредственно из Flash. Из -за этого компилятор автоматически помещает любую переменную, объявляемую const
в ProgMem, и обращается к ней соответствующим образом - вам больше не нужно явно объявлять их как Progmem. Это включает в себя цитируемые строковые литералы, поэтому макрос f () больше не требуется, хотя для поддержания совместимости с некоторыми сторонними библиотеками F () все еще объявляет свою аргументацию.
Тем не менее, обратите внимание, что если вы явно объявите переменную Progmem, вы все равно должны использовать функции pgm_read
для его чтения, как на классическом AVRS. Когда переменная объявлена ProGMem на деталях с отображенной памятью, указатель смещен (адрес относится к началу вспышки, а не за началом адресного пространства); Это же смещение применяется при использовании макросов pgm_read_*_near()
. Обратите внимание, что объявление вещей ProgMem и доступ к pgm_read_*_near
функциям, хотя она работает нормально, медленнее и тратит небольшое количество вспышки (по сравнению с простой объявлением переменных const); То же самое касается макроса f () с постоянными строками в 2.1.0, а затем (в течение некоторого времени до 2.1.0, F()
ничего не делал - но это вызвало проблемы для сторонних библиотек). Авторы утверждали, что проблема заключалась в ядре, а не в библиотеке, и мой выбор заключался в том, чтобы принять меньшую эффективность или лишить доступ моим пользователям доступ к популярным библиотекам). Использование макроса F()
может потребоваться для совместимости с некоторыми сторонними библиотеками (конкретные случаи, которые заставляли возвращение F()
на нас F ()-As-Noop Code, и в результате они взяли на несколько байтов меньше вспышки).
Автомобильные версии также должны работать. Вы всегда должны выбирать 16-МГц тактовые частоты на этих частях. Они не поддерживают работу 20 МГц, и не следует использовать параметры часов.
Теперь о хорошей части, где мы можем поговорить о том, как все это выставлено Мегатиникором. Мы начнем с того, как вы должны ссылаться на булавки для достижения наилучших результатов, а затем перейти к основным функциям, параметрам меню, прежде чем заканчивать серией ссылок на документы с более подробной информацией о различных подсистемах.
Простой вопрос о том, как ссылаться на PIN-код для анализа () и DigitalRead (), особенно на нестандартном оборудовании, стал постоянным источником путаницы среди пользователей Arduino. По моему мнению, большая часть вины зависит от решений, принятых командой Arduino (и автором книги перед ними) относительно того, как должны быть направлены булавки; Обозначение некоторых булавок в качестве «аналоговых контактов» заставляет людей думать, что эти контакты не могут быть использованы для цифровых операций (они лучше считают «булавки с аналоговым вводом» - например, как есть «булавки, которые могут выводить ШИМ»). Тот факт, что булавки традиционно перенумеровались, еще больше забил воду. Для нестандартных классических деталей AVR вопросы часто становятся еще хуже из-за множественных, несовместимых «сопоставлений», создаваемых различными авторами на протяжении многих лет, чтобы стать актером «более похожа на UNO» или для какой-то другой цели (Attinycore-это конкретный Таким образом, пострадайте от некоторых частей, имеющих три совершенно разных сопоставления PIN, по крайней мере, в одном случае, одним из альтернативных отображений является работа Pure Evil, вдохновленная дьяволом, не требуя ничего, кроме таблицы поиска, чтобы преобразовать аналоговые контакты в цифровые булавки).
В этом ядре используется простая схема для назначения номеров Arduino PIN-контактов: выводы пронумерованы, начиная с контакта ввода/вывода, ближайшего к VCC в качестве PIN 0 и выполняя против часовой стрелки, пропуская (в основном) неиспользованный PIN-код UDDI. Затем вывод Addi назначается последнему номеру PIN (как отмечено выше, можно прочитать PIN -код Uddi (как аналоговые, так и цифровые чтения), даже если он не установлен как GPIO). Мы рекомендуем это в качестве последнего средства: у Addi Pinl всегда включена подтяжка, если он не установлен в качестве штифта GPIO, и сигнал, который выглядит слишком сильно, как последовательность включения Uddi, вызовет нежелательную работу.
Чтобы предотвратить все путаницы в отношении идентификаторов PIN -кода и устранить двусмысленность, мы рекомендуем использовать нотацию PIN_PXN для ссылки на выводы, если вы не используете плату разработки с различными числами или именами для напечатанных на них пинов. Это будет максимизировать переносимость вашего кода на другое аналогичное оборудование и облегчит поиск информации о булавках, которые вы используете в соответствующих таблицах данных, если это необходимо.
Это рекомендуемый способ сослаться на контакты #defines
также предоставлены из формы PIN_Pxn
, где x
- это a, b или c, а n
- число 0-7 - (не путать с определением PIN_AN, описанным ниже). Они просто решаются к цифровому выводу рассматриваемого PIN -кода - они не проходят другой путь кода или что -то в этом роде. Тем не менее, они имеют особую утилиту в письменном коде, которая работает по всей линейке продуктов с периферийными устройствами, которые связаны с определенными булавками (по порту), как и большинство периферийных устройств. Несколько произведений демонстрационного кода в документации используют это. Возможна прямая манипулирование портом - и фактически для него доступно несколько мощных дополнительных вариантов - см.
PIN_Pxn
- не Pxn
, а не PIN_xn
- эти означает разные вещи!
Когда одно число используется для обозначения PIN -кода - в документации или в вашем коде - это всегда «номер PIN -кода Arduino». Это номера PIN -код, показанные в оранжевых (для выводов, способных к анализару ()) и синим (для булавок, которых нет) на графиках распины. Все другие способы ссылки на выводы #определяются на соответствующий номер PIN -кода Arduino.
Ядро также обеспечивает константы An
(где PIN_An
n
число от 0 до 11). Как и в случае с официальным ядром, PIN_An
определяется как цифровой номер PIN -кода PIN, общий с аналоговым каналом N Они относятся к номерам каналов ADC0. Эта система именования похожа на то, что использовалось во многих классических ядрах AVR , но здесь они просто определены как соответствующий номер PIN -кода Arduino . Если вам нужно получить номер аналогового канала на цифровом выводе, используйте макрос digitalPinToAnalogInput(pin)
- но вам нужно, только если вы пишете расширенную библиотеку АЦП.
Эти части (ну, по крайней мере, серия 1/2-серия 0 предназначался как вариант бюджета, за исключением того, что они не смогли сократить бюджет, и они всего лишь на пару центов дешевле) обеспечивают отличный набор инструментов универсального и мощные периферийные устройства; Лучшие из них находятся на одном уровне или лучше, чем классические детали Megaavr - по цене TinyAVR. Одним из руководящих принципов дизайна мегатиникора, как и в случае с другими моими ядрами, является позволить поддерживаемым частям полностью раскрыть свой потенциал или как можно ближе к этому в пределах ограничений Arduino. Этот (очень большой) раздел охватывает особенности этих деталей и то, как они выставлены Megatinycore, а также особенности самого ядра. Этот (очень большой) секция пытается покрыть каждую из областей функций. Попробуйте найти функцию, с которой вы работаете, если пытаетесь использовать функцию чипа и у вас возникнут проблемы!
20 МГц внутренняя (4,5 В -5,5 В - Типично для систем 5 В)
16 МГц внутреннее (4,5 В -5,5 В - Типично для систем 5 В)
10 МГц внутренняя (2,7 В -5,5 В - Типично для систем 3,3 В)
8 МГц внутренняя (2,7 В -5,5 В - Типично для систем 3,3 В)
5 МГц внутренний (1,8 В-5,5 В)
4 МГц внутренний (1,8 В-5,5 В)
2 МГц внутренний (1,8 В-5,5 В, плохо протестированные)
1 МГц внутренний (1,8 В-5,5 В, плохо протестированные)
Внешние часы 20 МГц (4,5 В-5,5 В, плохо протестированные)
Внешние часы 16 МГц (4,5 В-5,5 В, плохо протестированные)
Внешние часы 12 МГц (2,7 В-5,5 В, плохо протестированные)
Внешние часы 10 МГц (2,7 В-5,5 В, плохо протестированные)
Внешние часы 8 МГц (2,7 В-5,5 В, плохо протестированные)
6 МГц внутренний (настроенный, непроверенный)
5 МГц внутренняя (настроенная, плохо протестированная)
4 МГц внутренняя (настроенная, плохо протестированная)
2 МГц внутренняя (настроенная, плохо протестированная)
1 МГц внутренний (настроенный, плохо протестирован))
7 МГц внутренний (настроенный, для мазохистов, непроверенные)
8 МГц внутренняя (настроенная, плохо протестированная)
10 МГц внутренняя (настроенная, плохо протестированная)
12 МГц внутренний (настроенный, непроверенный)
14 МГц внутренний (настроенный, для мазохистов, непроверенные)
16 МГц внутренний (настроенный)
20 МГц внутренний (настроенный)
24 МГц внутренняя (настроенная, разгоночная, плохо протестированная)
25 МГц внутренняя (настроенная, разгоночная, плохо протестированная)
30 МГц внутренний (настроенный, разгоночный, плохо протестированный) - 0/1 -серия требует настройки предохранителя «20 МГц»; Части 2 серии могут или не могут достичь 30 с выбранным «16 МГц».
32 МГц Внутренний (настроенный, разгоночный, плохо протестированный) - только 2 -й серии, очень оптимистичное разгоночное количество, может быть нестабильным.
Внешние часы 24 МГц (разгоночные, плохо протестированные)
Внешние часы на 25 МГц (разгоночные, плохо протестированные)
Внешние часы 30 МГц (разгоночные, плохо протестированные)
Внешние часы 32 МГц (разгоночные, плохо протестированные)
Мы не делаем никаких претензий о напряжении или диапазонах температуры для разгоночных деталей - все, что мы утверждаем, это то, что по крайней мере одна из чипов, которые мы работали с этой скоростью при комнатной температуре, работая определенным эскизом, при 5 В. Ожидается, что ваш пробег будет варьироваться, но, как правило, лучше со спецификацией F и N или U -спецификацией.
ВАЖНО - Читайте о настройке, прежде чем выбрать любой настроенный вариант!
Более подробную информацию об этих тактовых скоростях можно найти в ссылке на часы
Показаны напряжения, которые гарантированно будут работать по спецификациям производителя (. Если не раздвигает границы рабочего диапазона, эти детали обычно будут работать намного лучше (2-й серии обычно работают при 32 МГц и 5V @ комнатной температуры даже от внутреннего генератора; 0 /1-й сериал также обычно будет работать при 32 МГц с внешними часами, при условии, что источник питания представляет собой стабильный 5,0-5,5 В).
Не требуется никаких действий для установки предохранителя OSCCFG
, когда эскиз загружается через Updi. При загрузке через Optiboot предохранитель не может быть изменен, поэтому все, что было выбрано, когда загрузчик был сгорел, и это используется, и только «Burn Bootloader» или загрузка эскиза через Updi изменит это.
Все параметры тактовой скорости внутреннего генератора используют калибровку по умолчанию заводской по умолчанию, если не выбрана опция «настроенная», и в этом случае калибровка корректируется, как задокументировано в ссылке на настройку . Это может быть использовано для получения 16 МГц на чипе Optiboot, слитого за 20 МГц и наоборот.
См . Справочник по уровню скорости для получения дополнительной информации о скоростных оценках производителя. Обратите внимание, что это напряжения и тактовые скорости, с которыми он гарантированно будет работать. Эти детали предназначены для того, чтобы подходить для использования в приложениях, где неожиданный сбой некоторого описания может представлять опасность для людей или имущества (например, автомобили, промышленное оборудование, самолеты, ядерные реакторы - места, где люди могут умереть, если часть не работает) и я Поверьте и для военных приложений, которые имеют аналогичные требования к надежности, только по противоположной причине. Типичные пользователи хобби будут гораздо более расслаблены в отношении потенциала проблем с стабильностью, причем аварии будут чуть больше, чем неприятность, а крайности деталей расширенного температурного диапазона выходят далеко за рамки того, что нам когда -либо понадобится. Предполагая, что у платы было водонепроницаемое покрытие, термически, часть n класса должна быть в состоянии функционировать на уровне скорости в кастрюле с кипящей водой. И это просто n-spec. F-spec должен быть хорош до 125!
Было установлено, что расширенные температурные детали лучше разгоняются, что имеет смысл. Ожидается, что часть, которая должна работать при 20 МГц при 125 ° С, будет больше шансов работать при 32 МГц при комнатной температуре, чем один, чтобы работать только при 20 МГц только при 105c
На момент версии 2.4.0 мы теперь предоставляем опцию «Официальная доска для микрочипов». Это не делает ничего особенного, кроме определения LED_BUILTIN
, который является PIN -кодом, который имеет светодиод на этой плате, вместо A7, и определение Macro PIN_BUTTON_BUILTIN
определяемое как PIN -код с кнопкой пользователя и создает «загрузку» с не -Оптибут Версия всегда используйте бортовой программист/отладчик; Инструменты -> Программист будет использоваться только для «Burn Bootloader» и «Загрузку с использованием программиста». В случае attiny416 xplied Nano, он также выбирает версию загрузчика, которая использует альтернативные контакты для последовательного порта - он автоматически не использует альтернативные выводы для USART0, как если бы вы сделали Serial.Ssshap (1) - Функциональность для поддержки обмена последовательными выводами по умолчанию будет в будущем, наряду с некоторыми другими изменениями в механизме, лежащем в основе механизма PINSSWAP, который, как мы надеемся, также уменьшит использование вспышки.
Как отмечалось выше, они могут неправильно работать на 32-разрядных платформах Linux. Это за пределами моего контроля; Я не строю Avrdude Binary Amd, я тоже не принимаю на себя эту задачу. У меня уже слишком много.
blink()
принимает больше вспышки на Xplied Mini vs Xplied Pro?Оба имеют одинаковый Attiny817! Как они могут отличаться?
По той же причине, что Blink потребует больше вспышки, если вы измените его, чтобы использовать PIN_PC0
в отличие от PIN_PB4
: PC0, используемой на XPLAIN MINI, является штифтом PWM, в то время как PB4, используемый XPLADE PRO, нет. Поскольку это единственный вывод, на котором используется DigitalWrite (), компилятор может свободно оптимизировать все, что не нужно для DigitalWrite () на этом PIN -коде, включая функциональность, чтобы отключить вывод PWM на PIN -код, который поддерживает PWM . Разница исчезает, если DigitalWrite () также используется на выводе, который поддерживает PWM на обоих устройствах (что приводит к более высоким результатам использования вспышки), или если DigitalWrite () заменяется на DigitalWriteFast (), который будет использовать меньше вспышки (но предполагает, что вы выиграли Назовите это на штифте PWM).
Всякий раз, когда для загрузки кода используется программист updi, все предохранители, которые можно установить «безопасно» (как, без риска замыкания платы или замыкания платы, если у него нет доступа к программисту HV), и которые имеют какой -либо Встроенные параметры конфигурации будут установлены. Таким образом, за исключением случаев, когда отмечено, поведение всегда будет соответствовать выбранному меню инструментов. Таким образом, они обрабатываются следующим образом:
WDTCFG will not be changed - it is not configured by megaTinyCore except to reset it to the factory default when doing "burn bootloader".
BODCFG will not be changed - not safe, you could set the BOD level to 4.3 on a 3.3v system, and then it would need to get > 4.3v applied to reprogram it. If it is on the same circuit board as parts that would be damaged, this is a difficult situation to recover from.
OSCCFG will be set
TCD0CFG will not be changed - it is not configured by megaTinyCore except to reset it to the factory default when doing "burn bootloader".
SYSCFG0 will not be changed - not safe
SYSCFG1 will be set
APPEND will not be changed - it is not configured by megaTinyCore. There is insufficient demand to justify the development effort.to make use of this as DxCore does
BOOTEND will be set
LOCKBIT will not be changed - it is not configured by megaTinyCore; supporting the lockbits presents several additional complications, and commercial users with need of this facility are unlikely to be using the Arduino IDE to program production units.
BODCFG
не является безопасным, потому что установление его на более высокое напряжение, чем работает плата, и позволяя ему «забрать» плату, пока не будет предоставлено более высокое рабочее напряжение; Это может быть особенно неловко, если оно припаяно к той же печатной плате, что и устройства, которые не будут терпеть эти напряжения.
SYSCFG0
небезопасен, потому что именно здесь живет RSTPINCFG
; Изменение этого может оставить доску не программируемой, за исключением программирования HV Updi, и не у всех есть программист HV Uddi. В будущем, если/когда программист, который гарантирует возможности HV Updi, которая может быть выбрана в качестве программиста (т. Е. Становится возможным создание инструментов -> опция программиста, которая будет работать только с программистами HV). Этот предохранитель будет установлен автоматически при использовании этот программист.
В результате 2.2.0, а затем вам больше не нужно «сжигать загрузчик», чтобы переключаться между скоростями между 16 МГц и 20 МГц при загрузке с использованием updi
Это ядро всегда использует оптимизацию времени ссылки, чтобы уменьшить использование вспышки - все версии компилятора, которые поддерживают детали серии TinyAVR 0/1/2, также поддерживают LTO, поэтому нет необходимости делать его необязательным, как это было сделано с Attinycore. Это было огромное улучшение в коде при введении, как правило, по порядку 5-20%!
Все эти детали имеют большое количество аналоговых входов-серии DA и DB имеют до 22 аналоговых входов, в то время как DD-серия имеет аналоговый вход на каждом выводе, который не используется для управления кристаллом HF (хотя контакты на Portc являются Поддерживается только тогда, когда MVIO выключен). Их можно прочитать с помощью analogRead()
как на нормальном AVR, и мы по умолчанию в 10-битное разрешение; Вы можете измениться на полный 12-битный с analogReadResolution()
и использовать улучшенные функции анализа для автоматического восприятия, уничтоженные показания для более высокого разрешения и для проведения дифференциальных измерений. Существует 4 ссылки на внутреннее напряжение в 1.024, 2.048, 4.096 и 2,5 В, а также поддержка внешнего контрольного напряжения (и, конечно, VDD). Показания ADC принимаются в 3 раза быстрее, чем классический AVR, и эта скорость может быть удвоена, если то, что вы измеряете, является низким импедансом или увеличивает время выборки в значительной степени для чтения очень высоких источников импеданса. Это подробно описано в аналоговой ссылке.
Части серии DX имеют 10-битный ЦАП, который может генерировать реальное аналоговое напряжение (обратите внимание, что это обеспечивает низкий ток и может использоваться только в качестве эталона напряжения или управляющего напряжения, оно не может быть