...

среда, 27 августа 2014 г.

[Из песочницы] Прошивка ATtiny13 при помощи Arduino

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

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


Итак, для начала нам нужно скачать вот этот архив (взято и совсем чуть-чуть доделано отсюда), положить файлы по адресу "\Documents\Arduino\hardware\". Должно получится что-то типа «C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13».


Перезапускаем 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 в данном случае просто выставляет нужные фьюзы микроконтроллера. К примеру, мне нужно, чтобы ATtiny13 работал на частоте в 4.8 мГц, я выбираю нужную мне частоту и только один раз жму кнопку «Записать загрузчик» — всё. Теперь микроконтроллер будет всегда работать на заданной частоте, если будет нужно изменить частоту опять — проделываем описанную выше процедуру.


Сразу скажу, что рост частоты приведёт за собой рост потребления контроллера, для каких-то там мигалок выполнение 1.2 миллиона инструкций будет с лихвой, да и на такой частоте микроконтроллер потребляет около 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 байта.


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


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


image


К примеру, PB4 — это то же, что и pin 4, или просто 4.

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


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


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий