Таблица сравнения микроконтроллеров attiny — attiny microcontroller comparison chart

Советы начинающим программистам микроконтроллеров

Чтобы первый опыт в программировании МК не закончился неудачей и навсегда не отбил охоту заниматься этим делом, нужно следовать некоторым советам:

  • Начинать с изучения периферии и ее особенностей.
  • Каждую большую задачу надо разделять на максимально количество мелких.
  • В начале пути не стоит упрощать себе жизнь и пользоваться кодогенераторами, нестандартными фичами и т. п. вещами.
  • Обязательно нужно изучать языки программирования (Си и Ассемблера).
  • Читайте Даташит.
  • Соберите необходимый набор инструментов. Это стоит определенных денег, но окупит себя экономией времени и качеством работы.

Никогда не поздно стать радиолюбителем, будь вам 30 лет или 50. И необязательно иметь профильное высшее образование. Сейчас на просторах интернета много доступной информации, изучая которую можно разобраться в устройстве микроконтроллеров и научиться их программировать.

Питание микроконтроллера

Для работы микроконтроллеру, как и любому электронному устройству, необходима энергия. Напряжение МК Atmel AVR находится в диапазоне 1.8–5.5 Вольт и зависит от модели и серии. Большинство приборов работает от 5 Вольт. Но встречаются и низкочастотные модели (Attiny 2313), нижняя граница у которых от 1,8 В.

Кроме того, на работу МК влияет и частота поступающего тока. Низкое напряжение требует и низких пределов частот. Чем выше частота, тем быстрее работают определенные модели.

Так, чтобы обеспечить работу контроллеров серии AVR, на все плюсовые входы нужно подавать 5 В, а нулевой заземляют.

На аналогово-цифровой преобразователь питание подают через дополнительные фильтры. Это поможет избавиться от помех, которые могут изменять показания напряжения. При этом на плюсовой ввод подается напряжение через фильтрующий дроссель. А нулевые выводы разделяют на цифровые и аналоговые. Причем соединяться они могут только в одной точке.

Кроме того, необходимо установить и конденсаторы, лучше керамические, из расчета 1 на 100 нанофарад.

QFN корпус

Наиболее экзотическим с точки зрения любительской практики является корпус QFN (Quad Flat No—leads). Такой корпус имеет наименьшие габариты среди всех рассмотренных корпусов. В качестве выводов здесь используются контакты, расстояние между которыми в 6 раз меньше, чем в DIP корпусах. По этой причине они редко применяются радиолюбителями. Одна в промышленности такие корпуса находят широкое применение, поскольку габариты готового электронного устройства можно снизить в десятки раз. На рис.4 наглядно видно различия в габаритах одного и того же микроконтроллера (ATmega8) в DIP и QFN корпусах.

Рис. 4 – Микроконтроллер ATmega8 в DIP и QFN корпусах

Для сравнения микроконтроллеры в корпусах различных типов показаны на рис. 5. Мы же будем пользоваться микроконтроллерами исключительно в PID корпусах, по крайней мере, на начальных этапах программирования.

Рис. 5 – Микроконтроллеры в разных типах корпусов

Микроконтроллер Atmel Atmega328p

Параметр

Значение

Тип процессора

8-битный AVR

Флэш-память

32 КБ

SRAM

2 КБ

EEPROM

1 КБ

Количество контактов

28 или 32 контакта:

Максимальная рабочая частота

20 МГц

Внешние прерывания

2

Интерфейс USB

Технические характеристики

8-разрядный микроконтроллер Atmel AVR на базе RISC сочетает в себе 32 КБ флэш- памяти ISP с возможностями чтения во время записи, 1 КБ EEPROM , 2 КБ SRAM , 23 линии ввода-вывода общего назначения, 32 рабочих регистра общего назначения , три гибких таймера / счетчики с режимами сравнения, внутренними и внешними прерываниями , последовательным программируемым USART , байтовым 2-проводным последовательным интерфейсом, последовательным портом SPI , 6-канальным 10-битным аналого — цифровым преобразователем (8 каналов в пакетах TQFP и QFN / MLF ) , программируемый сторожевой таймер с внутренним генератором и пять программно выбираемых режимов энергосбережения. Устройство работает в диапазоне 1,8-5,5 вольт. Пропускная способность устройства приближается к 1 MIPS на МГц.

Микроконтроллер Atmega328p

Микроконтроллер состоит из нескольких вычислительных блоков:

Арифметико-логическое устройство (АЛУ) (англ. arithmetic logic unit, ALU) — блок процессора, который под управлением устройства управления служит для выполнения арифметических и логических преобразований над данными.

Блок управления процессором (УУ) (control unit, CU) — блок, устройство, компонент аппаратного обеспечения компьютеров. Представляет собой конечный дискретный автомат. Структурно устройство управления состоит из: дешифратора команд (операций), регистра команд, узла формирования (вычисления) текущего исполнительного адреса, счётчика команд. УУ современных процессоров обычно реализуются в виде микропрограммного автомата и в этом случае УУ включает в себя ПЗУ микрокоманд. УУ предназначено для формирования сигналов управления для всех блоков машины.

Сумматорами называют логические устройства, выполняющие арифметические суммирование кодов двоичного числа

Микроконтроллер Atmega328P и Arduino

В классической линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR. Следующие МК можно встретить на указанных распространённых платах:

  • ATmega2560 (16 МГц, 256к Flash, 8к RAM, 54 порта, из них до 15 с ШИМ и 16 АЦП). Платы Mega.

  • ATmega32U4 (16 МГц, 32к Flash, 2,5к RAM, 20 портов, из них до 7 с ШИМ и 12 АЦП). Платы Leonardo, Micro, Yun.

  • ATmega328 (16 МГц, 32к Flash, 2к RAM, 14 портов, из них до 6 с ШИМ и 8 АЦП). Платы UnoR3, Mini, NanoR2, Pro, Pro mini, различные варианты плат uno и nano, такие как Wifi Uno и nano + nrf42l01

  • ATtiny85 (20Мгц, 8к Flash, 512б RAM, 6 портов, из них 4 ШИМ и 4 аналоговых). Платы Digispark, также часто применяются вне плат.

  • ATmega168(16Мгц, 16к Flash, 1к RAM, порты и распиновка аналогично ATmega328) Платы Uno R1, Uno R2, Pro mini, NanoR1.

Метод определения частоты генератора

Сравнение частот калибровочной синхронизации и внутреннего RC-генератора выполняется с помощью 8-разрядного таймера-счетчика 0 (TC0). 8-разрядный таймер используется в связи с тем, что он присутствует во всех микроконтроллерах с регулируемыми RC-генераторами. Идея заключается в определении отсчета таймера за 40 тактов калибровочной синхронизации и сравнении полученного значения с предустановленными порогами. Частота калибровочной синхронизации в существующей реализации задается в файле-описании интерфейса. Метод определения частоты генератора показан в виде блок-схемы на рисунке 3.


Рисунок 3 – Блок-схема алгоритма определения соотношения между частотами калибровочной синхронизации и внутреннего генератора

В целях охвата полного диапазона частот генератора от 1 до 9,6 МГц выполняется проверка флага переполнения ТС0 (OVF) для увеличения разрядности таймера с 8 до 16. Флаг OVF проверяется каждый полупериод калибровочной синхронизации, чем гарантируется детекция всех переполнений таймера. Относительно 16-разрядного разрешения реализованного таймера следует заметить, что наихудший случай по переполнению таймера возникает при использовании генератора на 9,6МГц и загрузке в регистр OSCCAL значения 0xFF. В этом случае, генератор работает с вдвое большей частотой, а таймер дойдет до значения 23541, что с запасом охватывает 16-разрядный таймер.

Аналогичным образом необходимо рассмотреть случай минимальной частоты. Минимально возможная частота генерируется при записи в OSCCAL значения 0x00. В этом случае результирующая частота вдвое меньше от номинальной. Поскольку состояние флага OVF проверяется каждый полупериод, то потенциально потребуется не более 7 тактов ЦПУ на манипуляцию с флагом OVF и детекцию следующего фронта синхронизации (при заданной частоте 1 МГц). Данное временное ограничение выполняется, если флаг OVF не установлен, в случае же его установки потребуется 8 тактов. Это может привести к небольшой ошибке в детекции синхронизации, но не повлияет на конечный результат: генератор будет корректно определен как слишком медленный.

Благодаря использованию метода двоичного поиска вряд ли придется столкнуться с данными крайностями. Однако их рассмотрение может быть уместно при модифицировании калибровочного метода.

Программное обеспечение

Основной принцип

Для выполнения калибровки программа сначала загружается в целевой ATtiny с помощью встроенного последовательного программатора высокого напряжения. Кроме того, заводское значение калибровки генератора (OSCCAL) записывается в EEPROM.

Программа на целевой ATtiny читает EEPROM и записывает значение в регистр OSCCAL. Затем подается сигнал с половиной тактовой частоты на вывод PB0. Поскольку фьюзы ранее были установлены так, что целевой ATtiny работает с предварительным делителем 8, на PB0 подается сигнал с 1/16 частоты генератора.

Стенд для пайки со светодиодной подсветкой
Материал: АБС + металл + акриловые линзы. Светодиодная подсветка…

Подробнее

#include <avr/io.h>
#include <avr/eeprom.h>

int main(void) {
  OSCCAL = eeprom_read_byte(0);
  DDRB   = 0b00000001;
  TCCR0A = 0b01000010;
  TCCR0B = 0b00000001;
  while(1);
}

Эта частота измеряется калибратором и сравнивается с целевым значением. Затем значение калибровки генератора (OSCCAL) корректируется соответствующим образом и записывается в EEPROM целевой ATtiny. Этот процесс повторяется до тех пор, пока не будет найдено значение OSCCAL, которое приводит к наименьшему отклонению частоты.

Последовательный программатор высокого напряжения

Код для высоковольтного последовательного программатора (HVSP) совершенно прост. Проще говоря, для каждого действия по линиям данных в целевой ATtiny отправляется серия инструкций, и считывается соответствующий ответ.

Измерение частоты

Таймеры/счетчики ATtiny84 используются для измерения частоты. PB0 целевого ATtiny, который выводит сигнал с частотой 1/16 собственного генератора, подключен к входу T0 ATtiny84. Timer0 считает импульсы на T0, а timer1 останавливает измерение через 32 миллисекунды. Исходя из этого, можно рассчитать частоту генератора целевого ATtiny.

Характеристики генераторов

Частота внутреннего RC-генератора зависит от температуры и от рабочего напряжения. Пример такой зависимости представлен на рисунке 1, на котором показана частота RC-генератора на 8МГц микроконтроллера ATmega169. Как видно из данного рисунка частота увеличивается с увеличением температуры и слегка снижается при увеличении рабочего напряжения. Данные характеристики отличаются для разных типов микроконтроллеров. Подробности по интересующему типу микроконтроллера необходимо искать в документации на него.


Рисунок 1 – Зависимость частоты калиброванного RC-генератора на 8МГц микроконтроллера ATmega169 от рабочего напряжения и температуры.

Все микроконтроллеры с регулируемыми генераторами содержат регистр OSCCAL для настройки частоты генератора. Увеличение значения в OSCCAL приводит к «псевдомонотонному» увеличению частоты. Причиной употребления термина «псевдомонотонный» является то, что при некоторых единичных приращениях значения OSCCAL частота не будет увеличиваться или будет слегка снижаться. Но при следующем единичном увеличении рост частоты возобновится. Другими словами, увеличение значения регистра OSCCAL на 1 не увеличивает частоту, но увеличение значения OSCCAL на 2 будет всегда увеличивать частоту

Данную информацию важно учесть при поиске наилучшего калибровочного значения для достижения заданной частоты. Пример псевдомонотонности зависимости между значением OSCCAL и частотой RC-генератора на 8МГц микроконтроллера ATmega169 приведен на рисунке 2

Обратите внимание, что в микроконтроллере ATmega169 используется только 7 разрядов регистра OSCCAL. Таким образом, максимальной частоте соответствует значение OSCCAL = 128


Рисунок 2 – Зависимость частоты калиброванного RC-генератора микроконтроллера ATmega169 от значения OSCCAL.

Для всех регулируемых генераторов очень важно учесть, что не рекомендуется настраивать генератор на частоту, отличающуюся более чем на 10% от основной, приведенной в технических характеристиках на микроконтроллер в документации. Причиной этому является зависимость внутренней синхронизации микроконтроллера от частоты RC-генератора.. Зная фундаментальные характеристики RC-генераторов есть возможность создать эффективную калибровочную процедуру, которая калибрует RC-генератор на заданную частоту, которая отличается не более чем на 10% от основной, при любом рабочем напряжении и температуре с точностью +/-1%

Зная фундаментальные характеристики RC-генераторов есть возможность создать эффективную калибровочную процедуру, которая калибрует RC-генератор на заданную частоту, которая отличается не более чем на 10% от основной, при любом рабочем напряжении и температуре с точностью +/-1%.

Протокол калибровки

Протокол калибровки выполнен простым и быстрым, что позволяет его эффективно использовать в производственных условиях. Выводы, задействованные для программирования микроконтроллеров (интерфейс ISP или при наличии JTAG), используются для калибровки, поэтому они должны быть доступны в конечном изделии или на печатной плате.

Для калибровки используется два вывода: MOSI и MISO интерфейса ISP или TDI и TDO интерфейса JTAG. Для упрощения описания в дальнейшем указываются только MOSI и MISO, хотя вместо них можно использовать TDI и TDO.

Основная идея заключается в том, что программатор генерирует калибровочную синхронизацию и что микроконтроллер использует ее как эталон для калибровки внутреннего RC-генератора. После завершения калибровки микроконтроллер сигнализирует программатору «ОК» по линии MISO.

Программатор отвечает за включение подтягивающего резистора на линии MISO, а микроконтроллер отвечает за включение подтягивающего резистора на линии MOSI. Этим гарантируется маловероятность влияния шумов на калибровку.

Программатор может использовать 1024 такта синхронизации в качестве максимального времени калибровки, т.к. процедурой калибровки гарантируется завершение калибровки за указанное число тактов.

Процедура калибровки выполняет следующие шаги:

  1. Программатор записывает калибровочную программу в микроконтроллер, включает подтягивающий резистор на линии MISO и освобождает линию сброса микроконтроллера. Калибровочная синхронизация прикладывается к линии MOSI. Приемлемой считается частота, близкая к частоте часового кварцевого резонатора (32.768 кГц).
  2. Микроконтроллер разрешает внутренний подтягивающий резистор на линии MOSI и начинает опрос калибровочной синхронизации на MOSI.
  3. После детекции калибровочной синхронизации осуществляется двоичный поиск для нахождения значения OSCCAL, удовлетворяющего условию 1%-ой точности. Если двоичный поиск не дает желаемого результата, то тестируются несколько ближайших значений к результату двоичного поиска.
  4. Калибровочное значение запоминается в ЭСППЗУ (в случае неудачной калибровки данный шаг пропускается).
  5. После завершения калибровки линия MISO переключается 4 раза микроконтроллером. Переключение линии MISO выполняется 5…10 тактов ЦПУ после падающего фронта синхронизации на линии MOSI. В случае неудачной калибровки линия MISO не переключается.
  6. Если микроконтроллер не имеет конфигурационного бита EESAVE, то программатор должен считать калибровочный байт из ЭСППЗУ для дальнейшей перезаписи после стирания калибровочной программы во флэш-памяти. Если у микроконтроллера имеется конфигурационный бит EESAVE, то его необходимо установить, чтобы не нарушить содержимое ЭСППЗУ во время стирания флэш-памяти.

Необходимо скопировать калибровочный байт из ЭСППЗУ в регистр во время выполнения программы. Процедура, выполняющая это, должна быть предусмотрена в конечной программе для микроконтроллера.

Энергопотребление

Пришло время измерить энергопотребление получившегося устройства. Вводные следующие: данные передается каждые 120sec, если пришло прерывание от датчика освещения, то немедленно; событиями от датчика освещения можно пренебречь; ёмкость батареи 200mAh.

Частота 1MHz 8MHz
Радиомодуль (потребление) 15.7mA 18.3mA
Микроконтроллер (потребление) 1.1mA 4.3mA
Режим сна (потребление) 7μA 7μA
Радиомодуль (активен за цикл) 51ms 16ms
Микроконтроллер (активен за цикл) 15ms 4ms
Оценка времени работы (дней) 513 739

Как видно, тут было ради чего бороться. К сожалению, стабильности на 8MHz добиться не удалось. Видимо без внешнего осциллятора, это не реально.

Подготовка IDE и программатора

Arduino IDE наиболее доступное кроссплатформенное программное обеспечение для программирования AVR микроконтроллеров и вполне удобное для небольших проектов.

Значит нужно Arduino ядро для ATtiny85, его можно взять здесь arduino-tiny, версия для Arduino 1.5 подойдет. Доступны будут не все функции, но базовый набор, включая программный последовательный порт, для отладки, можно будет использовать. К сожалению в актуальной, на данный момент, Arduino IDE v1.6.6 что-то сломали, и c этим ядром необходимо использовать версию 1.6.5.

Осталось приготовить программатор. Для этого совсем не обязательно использовать специальное устройство, можно в ближайшую Arduino прошить скетч из File → Examples → ArduinoISP, затем соединить с сенсором, как указанно на принципиальной схеме, и не забыть про конденсатор 10μF, который необходимо установить между RST и GND выводами Arduino.

Программировать устройство нужно без установленных радиомодуля и перемычек. В меню Tools → Board нужно выбрать конфигурацию микроконтроллера, в данном случае: ATtiny85 @ 1 MHz (internal oscillator; BOD disabled), в меню Tools → Port выбрать USB порт программатора и в меню Tools → Programmer указать тип программатора, в данном случае: Arduino as ISP, затем воспользоваться кнопкой Upload.

Калибровочная программа

Калибровочный код написан на ассемблере для AVR Studio 4.11 с инсталлированным калибровочным пакетом.

Калибровочная программа структурирована таким образом, что она может быть легко изменена под использование любого микроконтроллера из таблицы 1. Кроме того, может быть изменен интерфейс калибровки. Все требуемые изменения выполняются в корневом файле “RC_Calibration.asm” при использовании для калибровки инструментальных средств для AVR.

Корневой файл ссылается на (включает) следующие фалы:

  1. Файл-описание микроконтроллера (выбирается один целевой микроконтроллер), например, “m16.asm” для Atmega16. В состав данного файла входит следующее:
    • Определения регистров и бит, совпадающие с AVR Studio.
    • Файл карты памяти, который определяет, где размещен код и какая ячейка ЭСППЗУ используется для хранения калибровочного байта.
    • Макро-файл, который управляет доступом к регистру OSCCAL. Путь доступа к регистру OSCCAL зависит от его положения в памяти ввода-вывода.
    • Файл версии генератора. Данный файл определяет величину начального шага, используемого в двоичном поиске, что позволяет учесть отличия в разрядности некоторых регистров OSCCAL (7 или 8).
    • Макро-файл инициализации стека возврата. Некоторые микроконтроллеры имеют аппаратный стек, при этом, у других стек совмещен со статическим ОЗУ и, таким образом, требует инициализации.
    • Макро-файл доступа к порту для определения как осуществлять доступ к регистрам, управляемых выводами, которые используются для калибровки. Это необходимо, поскольку, некоторые регистры размещены в верхней части памяти ввода-вывода, а другие – в нижней части памяти ввода-вывода.
    • Переопределения имен бит и регистров также может входить в этот файл.
  2. Файл-описание калибровочного интерфейса. Данный файл назначает, какой порт ISP или JTAG, а также какие выводы используются в основной программе. Частота калибровочной синхронизации задается в этом файле.
  3. Файл с определением используемых макросов — “macros.inc”
  4. Общий код калибровки “main.asm”

Структура кода калибровки разработана с учетом простоты его изменения под желаемый тип микроконтроллера и интерфейс. Кроме того, широкое использование макросов гарантирует минимальность размеров кода. Конечное решение также гарантирует, что для поддержки новых микроконтроллеров и интерфейсов понадобиться минимум усилий.

8-разрядный AVR-микроконтроллер с внутрисистемно программируемой флэш-памятью емкостью 128 кбайт

Перевод
технического паспорта ( даташита ) на русский язык.

  1. Общее описание

  2. Ядро центрального процессорного устройства AVR

  3. Память

  4. Интерфейс внешней памяти

  5. Системная синхронизация и тактовые источники

  6. Внешняя синхронизация

  7. Управление энергопотреблением и режимы сна

  8. Системное управление и сброс

  9. Прерывания

  10. Порты ввода-вывода

    Порты в качестве универсального цифрового ввода-вывода

    Альтернативные функции порта

    Описание регистров портов ввода-вывода

  11. Внешние прерывания

  12. Аналоговый компаратор

  13. 16-разр. таймеры-счетчики 1 и 3

    Доступ к 16-разрядным регистрам

    Тактовые источники таймера-счетчика 1/3

    Блок счетчика

    Блок захвата

    Блоки сравнения

    Блок формирования выходного сигнала

    Режимы работы

  14. Временные диаграммы 16-разрядных таймеров-счетчиков

  15. Описание регистров 16-разрядных таймеров-счетчиков

  16. Предделители таймеров-счетчиков 1, 2 и 3

  17. Аналогово-цифровой преобразователь

  18. Интерфейс JTAG и встроенная отладочная система

  19. Модулятор выходов таймеров (OCM1C2)

  20. Последовательный периферийный интерфейс — SPI

    Функционирование вывода SS

  21. 8-разр. таймер-счетчик 0 с функциями ШИМ и асинхронного
    тактирования

    Блок формирования выходного сигнала

    Временные диаграммы таймера-счетчика 0

    Описание регистров 8-разрядного таймера-счетчика 0

    Асинхронная работа таймера-счетчика 0

    Предделитель таймера-счетчика 0

  22. УСАПП

    Генерация тактовых импульсов

    Форматы посылки

    Инициализация УСАПП

    Передача данных — Передатчик УСАПП

    Прием данных — Приемник УСАПП

    Асинхронный прием данных

    Многопроцессорный режим связи

    Описание регистров УСАПП

    Примеры установок скоростей связи

  23. Двухпроводной последовательный интерфейс TWI

    Формат посылки и передаваемых данных

    Системы многомастерных шин, арбитраж и синхронизация

    Обзор модуля TWI

    Описание регистров TWI

    Рекомендации по использованию TWI

    Режимы передачи

  24. Программирование памяти

    Параллельное программирование

    Последовательное программирование

    Программирование через интерфейс JTAG

  25. Электрические характеристики

    Требования к характеристикам внешнего тактового сигнала

    Характеристики двухпроводного последовательного интерфейса

    Характеристики временной диаграммы SPI

    Предварительные данные по характеристикам АЦП

    Временная диаграмма внешней памяти данных

  26. Типовые характеристики ATmega128: предварительные данные

    Типовые характеристики ATmega128: предварительные данные
    (продолжение)

    Типовые характеристики ATmega128: предварительные данные
    (продолжение)

  27. Сводная таблица регистров

  28. Набор инструкций

  29. Информация для заказа

Редактирование файла boards.txt

Arduino_dir\hardware\arduino\avr\d:\Arduino\arduino-1.6.12\hardware\arduino\avr\.menu.clock=Тактирование

  1. скорость загрузки — uno.upload.speed;
  2. значения фьюзов — uno.bootloader.low_fuses, .high_fuses, .extended_fuses;
  3. имя файла загрузчика — uno.bootloader.file;
  4. частоту микроконтроллера — uno.build.f_cpu.

uno.menu.clock.external16=Внешний резонатор 16МГцuno.menu.clock.external16.upload.speed=115200uno.menu.clock.external16.bootloader.low_fuses=0xFFuno.menu.clock.external16.bootloader.high_fuses=0xDEuno.menu.clock.external16.bootloader.extended_fuses=0xFFuno.menu.clock.external16.bootloader.file=optiboot/optiboot_atmega328.hexuno.menu.clock.external16.build.f_cpu=16000000Luno.menu.clock.internal8=Внутренний RC-генератор 8МГцuno.menu.clock.internal8.upload.speed=57600uno.menu.clock.internal8.bootloader.low_fuses=0xE2uno.menu.clock.internal8.bootloader.high_fuses=0xDEuno.menu.clock.internal8.bootloader.extended_fuses=0xFFuno.menu.clock.internal8.bootloader.file=optiboot/optiboot_atmega328_8.hexuno.menu.clock.internal8.build.f_cpu=8000000Luno.menu.clock.internal1=Внутренний RC-генератор 1МГцuno.menu.clock.internal1.upload.speed=4800uno.menu.clock.internal1.bootloader.low_fuses=0x62uno.menu.clock.internal1.bootloader.high_fuses=0xDEuno.menu.clock.internal1.bootloader.extended_fuses=0xFFuno.menu.clock.internal1.bootloader.file=optiboot/optiboot_atmega328_1.hexuno.menu.clock.internal1.build.f_cpu=1000000L

онлайн калькулятораИнструменты->ТактированиеВнутренний RC-генератор 8МГцотсюдаArduino_dir\hardware\arduino\avr\bootloaders\optiboot\

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Электрик в доме
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector