ATtiny10. Самый маленький микроконтроллер AVR

17/11/2013 - 13:42 Pavel Bobkov

Введение

Давно хотел поработать с самыми крохотными микроконтроллерами AVR и наконец сподобился купить несколько ATtiny10. Что можно сказать про эту букашку? По сути, обычный AVR, только с небольшим количеством выводов, памяти и периферии. Однако, на нем вполне можно собрать какой-нибудь вольтметр или термометр, если приложить смекалку.

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

Имеет 1024 байта flash памяти и 32 байта ОЗУ. EEPROM памяти нет. 

Периферия включает в себя один 16-и разрядный таймер, четыре канала 8-и разрядного АЦП, один аналоговый компаратор и сторожевой таймер. "Довольно-таки неплохо."

В корпусе SOT-23 имеет 6 выводов: 2 для питания, 1 для вывода сброса и 3 для пользовательских нужд. Установкой FUSE бита RSTDISBL можно задействовать и вывод сброса, но тогда для перехода в режим программирования нужно будет подавать на этот вывод +12 вольт. 



Тактовая частота до 12 МГц. Может тактироваться от внутреннего генератора на 8 МГц, от внешнего тактового сигнала с вывода PB1 (CLKI) и от внутреннего генератора на 128 кГц. 


Источник тактового сигнала устанавливается программно с помощью регистра CLKMSR. Также есть регистр, определяющий коэффициент деления тактового сигнала, - CLKPSR. Это намного удобнее FUSE битов, которые устанавливаются только программатором. 

По умолчанию микроконтроллер тактируется от внутреннего генератора на 8 МГц с коэффициентом деления 8. 

FUSE битов всего три: 

CKOUT - вывод системного тактового сигнала на PB2,
WDTON - сторожевой таймер всегда включен,
RSTDISBL - запрет внешнего сброса.

Напряжение питания от 1.8 до 5 вольт.

Программирование ATtiny10

Программирование flash памяти осуществляется по интерфейсу TPI (Tiny Programming Interface). Для этого используется три вывода микроконтроллера:

RESET - для перехода в режим программирования,
TPICLK (PB1) - для тактового сигнала, 
TPIDATA(PB0) - для ввода/вывода данных.

Микроконтроллер поддерживается программатором AVRISP MKII и средой разработки Atmel Studio 6. Схема для подключения ATTiny10 к программатору AVRISP MKII такая:


Этот микроконтроллер можно программировать на Си, но из-за маленького размера ОЗУ особо не разгуляешься. Минимальная программа для проверки работоспособности:



/*

* Tiny10_test.c
*
* Created: 14.11.2013 4:01:57
* Author: Pashgan
*/

#define F_CPU 1000000UL

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
   DDRB = 0xff;
   PORTB = 0x00;

   while(1)
   {
      _delay_ms(500);
      PORTB ^= (1<<2);
   }
}



На выводе PB2 будет меандр с частотой 1 Гц.

Comments   

# Bonio 2013-11-17 21:02
А если отключить reset, то прошить можно этим же программатором, но подав 12в на reset? Правильно понимаю?
# Pashgan 2013-11-17 21:41
Да. Нужно отключить вывод RESET от программатора и подать на него +12В от отдельного источника питания (микроконтролле р должен быть запитан от +5 В), запрограммирова ть микроконтроллер программатором AVRISP MKII, затем отключить +12 В.
# axill 2013-12-16 10:18
если есть STK600 то там ничего отдельно подключать не нужно, STK600 сама шьет использую 12В, т.е. при отладке на этой плате установка фьюза на RSTDSBL ничего не меняет
# Yvan 2013-11-18 17:24
USBasp с последней прошивкой, говорят, тоже шьёт без проблем.
# Pyku_He_oTTyda 2013-11-20 19:55
Недавно авто чинил, нужно было восстановить работу индикатора контроля зарядки. Пришлось делать на восьминожке, а эта тинька пришлась бы как нельзя кстати.
# axill 2013-11-21 07:46
прикольный чип, привлекает своими малюсенькими размерами, хотя конечно задачу для него еще надо постараться найти ) мелкий и выводов мало. Но 4-ре порта можно совершенно спокойно использовать если использовать 12в на ресет как написано в статье. Я пока сделал три устройства на tiny9, она отличается от tiny10 только отсутствием ADC: http://forum.easyelectronics.ru/viewtopic.php?f=16&t=16886, http://forum.easyelectronics.ru/viewtopic.php?f=16&t=16887 и еще автомат освещения в шкаф http://forum.easyelectronics.ru/download/file.php?id=17331&t=1
# I-Van 2013-12-13 12:40
Хороший МК, жаль что в стаее не освещён момент отсутствия EEPROM, но присутствует возможность записи во Flash пользовательски х данных. С 1-м таймером тоже туго, но WDT можно вполне использовать как второй таймер. И АЦП 8-ми битный, что тоже не есть гут, но для своих применений покатит. К тому же никто не отменял программного оверсемплинга АЦП. Но всё же преимущественно пользую ATtiny13A-SU - 8 выводов, стандартный ISP-интерфейс программировани я (для всех программаторов) и 10-ти битный АЦП делают своё дело. Кстати у tiny13A тоже всего 1 таймер - обычно задействую и WDT как дополнительный таймер.
# Pashgan 2013-12-13 16:32
Про отсутствие EEPROM написано в самом начале.
# axill 2013-12-16 10:20
ADC 8 бит, но работает очень хорошо, все же атмел наверно не стоит на месте, а это семейство самое свежее в линейке AVR8. Только закончил устройство где задействованы два канала ADC http://radiokot.ru/circuit/digital/automat/76/
# Pashgan 2013-12-17 09:28
Классно сделано.
# Васьок 2014-09-22 13:08
EEPROM-а нет, но вроде бы внутри имеется регистр для доступа записи во Flash. И ещё, типа reset можно отключить, использовать как обычную лини порта ВВ. Ну а для программировани я нужно подать +12 В на reset , при поданном питании 5 В на МК. Но вот момент, а если в этот момент на reset программно установлен лог. 0, как я подам 12В? Насильно подам большой ток что-бы преодолеть сопротивление транзисторов выходного каскада лини порта?
# _Артём_ 2014-09-22 14:25
Quoting Васьок:
EEPROM-а нет, но вроде бы внутри имеется регистр для доступа записи во Flash.

Этот регистр для программатор может читать, а не программа.

Quoting Васьок:

И ещё, типа reset можно отключить, использовать как обычную лини порта ВВ.

После запрета reset уже нельзя будет перешивать flash (скорее всего).
# Васьок 2014-09-23 09:35
[quote name="_Артём_"
После запрета reset уже нельзя будет перешивать flash (скорее всего).

Можно. об этом четко сказано в ДШ. Но всё же меня смущает состояние пина на момент подачи +12В.
# _Артём_ 2014-09-23 09:58
Quoting Васьок:

Можно. об этом четко сказано в

Да, есть такое дело - можно. Незря я сомневался когда писал.
# Modest 2015-12-08 03:43
ATtiny4313 в корпусе VQFN20 тоже 3х3 мм,
а ног и периферии по больше будет так то
# Васьок 2015-12-08 09:14
2313/4313 увы МК без АЦП. Я уже не представляю такой МК. Это 90% по крайней мере моих задач. Если рассматривать современный Tiny-микроконтр оллер против старого тоже Tiny. То новый лучше по потреблениям, по возможности программного переключения тактовой частоты. К примеру новый ATtiny20-MMH тоже VQFN20 корпус кроме гибкого программного управления тактовой частотой имеет аппаратный QTouch, по 1 сенсору на 1 линию порта ВВ. А ATtiny20-CCU имеет шариковый корпус 1х1 мм, но как по мне, в домашних поделках это жесткий изврат. Хотя по факту, если нужен размер именно 3х3мм, и 2313/4313 вполне устраивает, то почему бы нет.
# Никита Потылицын 2016-09-18 16:44
А что за операция "^=" ?
PORTB ^= (1

У вас недостаточно прав для комментирования.