[Из песочницы] Прошивка ATtiny13 при помощи Arduino
Всем привет. Уже давно появился способ программировать маленькие, дешёвые, экономичные к питанию и доступные микроконтроллеры ATtiny13A.Сегодня расскажу, как зашиваю Arduino’вские скетчи в ATtiny13A.
Итак, для начала нам нужно скачать вот этот архив (взято и совсем чуть-чуть доделано отсюда), положить файлы по адресу »\Documents\Arduino\hardware\». Должно получится что-то типа «C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13».
Перезапускаем Arduino IDE, чтобы среда добавила новый микроконтроллер в список плат.Обязательно проверяем, правильно ли у нас выбрано «расположение папки со скетчами» (посмотреть можно во вкладке «Файл/Настройки»):
Теперь прошьём в дуинку ArduinoISP из примеров Arduino IDE:
Потом подключим ATtiny13 к Arduino, как показано на картинке:
Потом нужно изменить тип программатора на Arduino as ISP, как показано на скриншоте:
Теперь мы можем выбрать, на какой частоте может работать микроконтроллер ATtiny13, с завода ATtiny13 работает на частоте в 1.2 мГц, то есть микроконтроллер тактируется от внутренней RC -цепочки на частоте в 9.6 мГц и включён делитель на 8, поэтому я указал частоту в 1.2 мГц как дефолтную:
Как видим, доступные частоты — 1.2 мГц, 4.8 мГц и 9.6 мГц. Для изменения частот нам нужно нажать на кнопку «Записать загрузчик», которая располагается в вкладке «Сервис».
Что же среда делает при нажатии на кнопку «Записать загрузчик»?
Arduino IDE в данном случае просто выставляет нужные фьюзы микроконтроллера. К примеру, мне нужно, чтобы ATtiny13 работал на частоте в 4.8 мГц, я выбираю нужную мне частоту и только один раз жму кнопку «Записать загрузчик» — всё. Теперь микроконтроллер будет всегда работать на заданной частоте, если будет нужно изменить частоту опять — проделываем описанную выше процедуру.
Сразу скажу, что рост частоты приведёт за собой рост потребления контроллера, для каких-то там мигалок выполнение 1.2 миллиона инструкций будет с лихвой, да и на такой частоте микроконтроллер потребляет около 1 миллиампера, вот скрин из даташита:
Минимальное рабочее напряжение, при котором ATtiny13 сохраняет работоспособность — 1.8 В, причем гарантировано будет работать, в данном случае, только на частоте в 1.2 мГц.
Итак, зашьем для начала пример blink, ну как же без него, работает?
Как вы уже заметили, скетч стал заметно легче, чем для Arduino Uno. Это связано с тем, что урезаны большинство Arduino’вских функций.
100% поддерживаются следующие:
pinMode ()digitalWrite ()digitalRead ()analogRead ()analogReference (INTERNAL) / (EXTERNAL)shiftOut ()pulseIn ()analogWrite ()millis ()micros ()delay ()delayMicroseconds ()
Итак, как мы только что увидели, нам доступно всего 1024 байта.
Мало ли это? Ну, смотря для каких задач. Если, например, для каких-то там мигалок, пищалок или индикаторов, думаю, будет вполне достаточно.
Распиновка из даташита:
К примеру, PB4 — это то же, что и pin 4, или просто 4.Аналоговые входы — все, на которых пишет ADC*, например PB4 — это ADC2. То есть для того, чтобы считать напряжение, пишем analogRead (A2); или просто analogRead (2);, аппаратный ШИМ поддерживают только порты 0 и 1.
Ветка на форуме Arduino.
Файлы ядра лежат здесь.