- PVSM.RU - https://www.pvsm.ru -

Прошивка ATtiny13 при помощи Arduino

Всем привет. Уже давно появился способ программировать маленькие, дешёвые, экономичные к питанию и доступные микроконтроллеры ATtiny13A [1].

Сегодня расскажу, как зашиваю Arduino'вские скетчи в ATtiny13A [1].

Итак, для начала нам нужно скачать вот этот архив [2] (взято и совсем чуть-чуть доделано отсюда [3]), положить файлы по адресу "DocumentsArduinohardware". Должно получится что-то типа «C:UsersАдминистраторDocumentsArduinohardwareattiny13corescore13».

Перезапускаем Arduino IDE, чтобы среда добавила новый микроконтроллер в список плат.

Обязательно проверяем, правильно ли у нас выбрано «расположение папки со скетчами» (посмотреть можно во вкладке «Файл/Настройки»):

image

Теперь прошьём в дуинку ArduinoISP из примеров Arduino IDE:

image

Потом подключим ATtiny13 к Arduino, как показано на картинке:

image

Потом нужно изменить тип программатора на Arduino as ISP, как показано на скриншоте:

image

Теперь мы можем выбрать, на какой частоте может работать микроконтроллер ATtiny13, с завода ATtiny13 работает на частоте в 1.2 мГц, то есть микроконтроллер тактируется от внутренней RC -цепочки на частоте в 9.6 мГц и включён делитель на 8, поэтому я указал частоту в 1.2 мГц как дефолтную:

image

Как видим, доступные частоты — 1.2 мГц, 4.8 мГц и 9.6 мГц. Для изменения частот нам нужно нажать на кнопку «Записать загрузчик», которая располагается в вкладке «Сервис».

Что же среда делает при нажатии на кнопку «Записать загрузчик»?

Arduino IDE в данном случае просто выставляет нужные фьюзы микроконтроллера [4]. К примеру, мне нужно, чтобы ATtiny13 работал на частоте в 4.8 мГц, я выбираю нужную мне частоту и только один раз жму кнопку «Записать загрузчик» — всё. Теперь микроконтроллер будет всегда работать на заданной частоте, если будет нужно изменить частоту опять — проделываем описанную выше процедуру.

Сразу скажу, что рост частоты приведёт за собой рост потребления контроллера, для каких-то там мигалок выполнение 1.2 миллиона инструкций будет с лихвой, да и на такой частоте микроконтроллер потребляет около 1 миллиампера, вот скрин из даташита [1]:

image

Минимальное рабочее напряжение, при котором ATtiny13 сохраняет работоспособность — 1.8 В, причем гарантировано будет работать, в данном случае, только на частоте в 1.2 мГц.

Итак, зашьем для начала пример blink, ну как же без него, работает?

image

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

100% поддерживаются следующие:

pinMode()
digitalWrite()
digitalRead()
analogRead()
analogReference(INTERNAL) / (EXTERNAL)
shiftOut()
pulseIn()
analogWrite()
millis()
micros()
delay()
delayMicroseconds()

Итак, как мы только что увидели, нам доступно всего 1024 байта.

Мало ли это? Ну, смотря для каких задач. Если, например, для каких-то там мигалок, пищалок или индикаторов, думаю, будет вполне достаточно.

Распиновка из даташита [1]:

image

К примеру, PB4 — это то же, что и pin 4, или просто 4.
Аналоговые входы — все, на которых пишет ADC*, например PB4 — это ADC2. То есть для того, чтобы считать напряжение, пишем analogRead(A2); или просто analogRead(2);, аппаратный ШИМ поддерживают только порты 0 и 1.

Ветка [5] на форуме Arduino.

Файлы ядра лежат здесь [2].

Автор: HWman

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/arduino/68438

Ссылки в тексте:

[1] ATtiny13A: http://www.atmel.com/Images/doc8126.pdf

[2] архив : https://vk.com/doc256435878_311506198

[3] отсюда: http://forum.arduino.cc/index.php?PHPSESSID=7436795e835c1c8ab3ec9bda717b8b6f&topic=89781.msg1169233#msg1169233

[4] фьюзы микроконтроллера: https://www.google.com.ua/search?q=%D1%84%D1%8C%D1%8E%D0%B7%D1%8B&oq=%D1%84%D1%8C%D1%8E%D0%B7%D1%8B&aqs=chrome..69i57&sourceid=chrome&es_sm=93&ie=UTF-8#q=%D1%84%D1%8C%D1%8E%D0%B7%D1%8B+%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0

[5] Ветка: http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie

[6] Источник: http://habrahabr.ru/post/234477/