ATtiny13 — низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny13 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.
Характеристики:
- Высококачественный низкопотребляющий 8- битный AVR микроконтроллер
- Передовая RISC архитектура
- 120 команд, большинство которых выполняется за один тактовый цикл
- 32 8 битных рабочих регистра общего применения
- Полностью статическая архитектура
- Энергонезависимая память программ и данных
- 1 КБ внутрисистемно программируемой Flash памяти программы, способной выдержать 10 000 циклов записи/стирания
- 64 байта внутрисистемно программируемой EEPROM памяти данных, способной выдержать 100 000 циклов записи/стирания
- 64 байта встроенной SRAM памяти (статическое ОЗУ)
- Программируемая защита от считывания самопрограммируемой Flash памяти программы и EEPROM памяти данных
- Характеристики периферии
- Один 8- разрядный таймер/счетчик с отдельным предделителем и два ШИМ канала
- 4 канальный 10 битный АЦП со встроенным ИОН
- Программируемый сторожевой таймер со встроенным генератором
- Встроенный аналоговый компаратор
- Специальные характеристики микроконтроллера
- Встроенный отладчик debugWIRE
- Внутрисистемное программирование через SPI порт
- Внешние и внутренние источники прерывания
- Режимы пониженного потребления Idle, ADC Noise Reduction и Power-down
- Усовершенствованная схема формирования сброса при включении
- Программируемая схема обнаружения кратковременных пропаданий питания
- Встроенный откалиброванный генератор
Микроконтроллер ATtiny13 отлично подходит для маленьких и дешевых проектов, а поддержка средой программирования Arduino IDE заметно упрощает работу с микроконтроллером.
Для поддержки ATtiny13 в Arduino IDE необходимо выполнить несколько простых операций:
- Добавление поддержки платы
Откройте в Arduino IDE вкладку Файл > Настройки и добавьте ссылку для менеджера плат
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
Далее перейдите во вкладку Инструменты > Плата > Менеджер плат
Выберите и установите новую плату MicroCore by MCUdude.
Далее в Инструменты > Плата выберите плату ATtiny13.
- Для прошивки скетча Вам понадобится программатор USBAsp
В моем случае я использую микроконтроллер который установлен на плату переходник, схема подключения достаточно простая:
Распиновка программатора USBAsp
В настройках платы нужно выбрать поддержку Attiny13 и установить частоту 9.6 MHz internal, остальные параметры менять не нужно. Далее необходимо выставить нужные фьюзы для микроконтроллера, чтобы он всегда работал на выбранной Вами частоте. Для этого в настройках Arduino IDE выберите программатор USBasb и нажмите Инструменты > Записать загрузчик. Эту операцию необходимо проводить всего один и снова повторить если Вы будете менять частоту работы микроконтроллера.
Для загрузки скетча в настройках Arduino IDE выберите программатор USBasb и во вкладке Скетч нажмите на Загрузить через программатор (или просто нажать кнопку — Загрузить)
Для примера, можно загрузить простой скетч мигания светодиода, к выводу 2 (PB3) контроллера подключите светодиод через резистор 200 Ом.
void setup() { DDRB |= (1 << 3); } void loop() { PORTB |= (1 << 3); delay(1000); PORTB &= ~(1 << 3); delay(1000); }
После загрузки скетча, светодиод начнет мигать.
Далее я подготовил несколько примеров использования ATtiny13:
- Простые часы на часах реального времени DS1307 (I2C) с семисегментным четырех разрядным индикатором на TM1637
Скетч — http://forum.rcl-radio.ru/viewtopic.php?pid=3377#p3377
- Вольтметр 0…5 В с семисегментным четырех разрядным индикатором на TM1637, ИОН = VCC
Скетч — http://forum.rcl-radio.ru/viewtopic.php?pid=3392#p3392
- Вольтметр 0…1,1 В с семисегментным четырех разрядным индикатором на TM1637, ИОН внутренний 1.1 В
Скетч — http://forum.rcl-radio.ru/viewtopic.php?pid=3393#p3393
- Цифровой термометр на датчике DS18B20 с семисегментным четырех разрядным индикатором на TM1637
Скетч — http://forum.rcl-radio.ru/viewtopic.php?pid=3394#p3394
- Автомат освещения
Автомат освещения отключает свет в дневное время и включает его в ночное время. В течении 10 секунд автомат освещения измеряет напряжение на фотодиоде (питание подается от внутреннего подтягивающего резистора), что дает возможность отфильтровать случайные засветки фотодиода.
#include <avr/io.h> #include <util/delay.h> #define POROG 100 int u_r,ur_sum; int main(){ DDRB |= (1 << PB2); PORTB &= ~(1 << PB2); ADCSRA = 0b10000100; PORTB |=(1 << PB4); while(1){ for(int i=0;i<10;i++){ ADMUX = 0b00000010; // input A2 (PB4) do{ADCSRA |= (1 << ADSC);} while ((ADCSRA & (1 << ADIF)) == 0); u_r = (ADCL|ADCH << 8); ur_sum=ur_sum+u_r; _delay_ms(1000); } u_r = ur_sum/10;ur_sum=0; if(u_r < POROG){PORTB &= ~(1 << PB2);} else{PORTB |=(1 << PB2);} }}
Скетч использует 156 байт (15%) памяти устройства. Всего доступно 1024 байт.
Глобальные переменные используют 2 байт (3%) динамической памяти, оставляя 62 байт для локальных переменных. Максимум: 64 байт.
Привет.
Повторил проект Цифровой термометр и у меня нет свечения точки.