Datasheet microchip attiny13a

Libraries

  1. attiny13-software-uart-library – ATtiny13 Software UART library.
  2. attiny-random-library – ATtiny13/25/45/85 16-bit PRNG (Pseudo Random Number Generator) library based on Galois LFSR algorithm.
  3. attiny-max7219-led-tube-display-library – ATtiny13/25/45/85 7-segment LED tube display (MAX7219/MAX7221) library.
  4. attiny-max7219-matrix-8×8-led-display-library – ATtiny13/25/45/85 8×8 matrix LED display driver (MAX7219/MAX7221) library.
  5. attiny-74hc595-library – ATtiny13/25/45/85 74hc595 shift register library.
  6. attiny-tm1638-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, and other) library for LED controller modules based on TM1638 chip.
  7. attiny-tm1637-library – TinyAVR – ATtiny13, ATtiny25, ATtiny45, ATtiny85 – library for 7-segment display modules based on TM1637.
  8. attiny-ds18b20-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, etc.) library for DS18B20 temperature sensor.
  9. attiny-onewire-library – This is tinyAVR (ATtiny13, ATtiny25, ATtiny45, ATtiny85, etc.) library to access devices using OneWire (1-Wire) protocol.

Datasheets

Appendix A — ATtiny13A Specification at 105°C
This document contains information specific to devices operating at temperatures up
to 105°C. Only deviations are covered in this appendix, all other information can be
found in the complete datasheet. The complete datasheet can be found at
www.atmel.com. 8-bit
Microcontroller
with 1K Bytes
In-System
Programmable
Flash
ATtiny13A
Appendix A Rev. 8126E-Appendix A-AVR-08/11 1. Electrical Characteristics
1.1 Absolute Maximum Ratings* Operating Temperature. -55°C to +125°C *NOTICE: Storage Temperature . -65°C to +150°C
Voltage on any Pin except RESET
with respect to Ground .-0.5V to VCC+0.5V
Voltage on RESET with respect to Ground.-0.5V to +13.0V Stresses beyond those listed under «Absolute
Maximum Ratings» may cause permanent damage to the device. This is a stress rating only and
functional operation of the device at these or
other conditions beyond those indicated in the
operational sections of this specification is not
implied. Exposure to absolute maximum rating
conditions for extended periods may affect
device reliability. Maximum Operating Voltage . 6.0V

Appendix B — ATtiny13A Specification at 125°C
This document contains information specific to devices operating at temperatures up
to 125°C. Only deviations are covered in this appendix, all other information can be
found in the complete datasheet. The complete datasheet can be found at
www.atmel.com. 8-bit
Microcontroller
with 1K Bytes
In-System
Programmable
Flash
ATtiny13A
Appendix B Rev. 8126F-Appendix B-AVR-05/12 1. Electrical Characteristics
1.1 Absolute Maximum Ratings* Operating Temperature. -55°C to +125°C *NOTICE: Storage Temperature . -65°C to +150°C
Voltage on any Pin except RESET
with respect to Ground .-0.5V to VCC+0.5V
Voltage on RESET with respect to Ground.-0.5V to +13.0V Stresses beyond those listed under «Absolute
Maximum Ratings» may cause permanent damage to the device. This is a stress rating only and
functional operation of the device at these or
other conditions beyond those indicated in the
operational sections of this specification is not
implied. Exposure to absolute maximum rating
conditions for extended periods may affect
device reliability. Maximum Operating Voltage . 6.0V

Features
• High Performance, Low Power AVR 8-Bit Microcontroller
• Advanced RISC Architecture • • • • •
• •
• — 120 Powerful Instructions — Most Single Clock Cycle Execution
— 32 x 8 General Purpose Working Registers
— Fully Static Operation
— Up to 20 MIPS Througput at 20 MHz
High Endurance Non-volatile Memory segments
— 1K Bytes of In-System Self-programmable Flash program memory
— 64 Bytes EEPROM
— 64 Bytes Internal SRAM
— Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
— Data retention: 20 Years at 85°C/100 Years at 25°C (see page 6)
— Programming Lock for Self-Programming Flash & EEPROM Data Security
Peripheral Features
— One 8-bit Timer/Counter with Prescaler and Two PWM Channels
— 4-channel, 10-bit ADC with Internal Voltage Reference
— Programmable Watchdog Timer with Separate On-chip Oscillator
— On-chip Analog Comparator
Special Microcontroller Features
— debugWIRE On-chip Debug System
— In-System Programmable via SPI Port

Просмотр и загрузка
Datasheet ATtiny13A. Summary

PDF, 591 Кб, Файл опубликован: 1 май 2012, Страниц: 208-bit AVR Microcontroller with 1K Bytes In-System Programmable Flash

Выписка из документа

Features
• High Performance, Low Power AVR 8-Bit Microcontroller
• Advanced RISC Architecture • • • • •
• •
• — 120 Powerful Instructions — Most Single Clock Cycle Execution
— 32 x 8 General Purpose Working Registers
— Fully Static Operation
— Up to 20 MIPS Througput at 20 MHz
High Endurance Non-volatile Memory segments
— 1K Bytes of In-System Self-programmable Flash program memory
— 64 Bytes EEPROM
— 64 Bytes Internal SRAM
— Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
— Data retention: 20 Years at 85°C/100 Years at 25°C (see page 6)
— Programming Lock for Self-Programming Flash & EEPROM Data Security
Peripheral Features
— One 8-bit Timer/Counter with Prescaler and Two PWM Channels
— 4-channel, 10-bit ADC with Internal Voltage Reference
— Programmable Watchdog Timer with Separate On-chip Oscillator
— On-chip Analog Comparator
Special Microcontroller Features
— debugWIRE On-chip Debug System
— In-System Programmable via SPI Port

Плата Digispark с Arduino Attiny85

Совместимые платы могут как превосходить по характеристикам и размерам стандартные ардуино, так и быть меньше их, как было сказано выше. Отличным примером такой платы будет Digispark.

Характеристики платы довольно скромные, она поставляется с микроконтроллером, подготовленным для работы, arduino attiny85 – он представлен в восьминогом корпусе SOIC или более крупных размеров – DIP8. Характеристики весьма непритязательные:

  • постоянной памяти – 8 Кб, для программного кода и 512 для исполняемого;
  • так как доступно всего 8 выводов (ножек), вычтем две плюс и минус питания – получится 6 цифровых пинов, из которых 4 – это ADC и 2 PWM (ШИМ);
  • доступно только аппаратное прерывание;
  • контроллер работает на частотах от 1 до 20 МГц;
  • в зависимости от конкретного чипа напряжения питания различны от 1.8 до 5.5 Вольт;
  • в режиме энергосбережения потребляет мизерный ток в 0.1 мкА, при самом низком напряжении питания в 1.8 Вольт.

У оригинального digispark интересная конструкция, для его прошивки не нужно использовать micro USB кабель или USB-UART. Плата разведена таким образом, что, просто вставив ее в USB порт вашего компьютера, вы получите возможность программировать микроконтроллер.

Плата не только маленькая, но и очень простая – её сборка не займет много времени, и совершенно не составит труда для начинающих. Как собрать клон digispark своими руками мы расскажем немного позже.

История создания архитектуры AVR

Идея разработки нового RISC-ядра принадлежит двум студентам Norwegian University of Science and Technology (NTNU) из норвежского города Тронхейма — Альфу Богену (Alf-Egil Bogen) и Вегарду Воллену (Vegard Wollen). В 1995 году Боген и Воллен решили предложить американской корпорации Atmel, которая была известна своими чипами с Flash-памятью, выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flash-памятью для программ на одном кристалле с вычислительным ядром.

Идея была одобрена Atmel Corp., и было принято решение незамедлительно инвестировать в данную разработку. В конце 1996 года был выпущен опытный микроконтроллер AT90S1200, а во второй половине 1997 г. корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров, к их рекламной и технической поддержке.

Новое ядро было запатентовано и получило название AVR. Существует несколько трактовок данной аббревиатуры. Кто-то утверждает, что это Advanced Virtual RISC, другие полагают, что не обошлось здесь без Alf Egil Bogen Vegard Wollan RISC.

Используем переходную плату

Одна из проблем при экспериментировании с этими новыми МК заключается в том, что они поставляются только в корпусах для поверхностного монтажа (SMD). Это затрудняет их использование на макетных платах. Для этой цели была разработана плата-адаптер, которая позволит использовать МК ATtiny1614 как стандартный элемент в форм-факторе DIL (Dual-In-Line). Принципиальная схема платы-адаптера изображена на Рисунке 2.

Рисунок 2.Принципиальная схема платы адаптера (SOIC-DIL) для МК ATtiny1614.

Плата была разработана в САПР Eagle, и проектные файлы доступны для скачивания в разделе загрузок (Рисунок 3). Стоит заметить, что расположение выводов переходной платы DIL форм-фактора отличается от расположения выводов МК в SMD корпусе. Сделано это было специально, чтобы плата адаптера получилась односторонней и ее можно было изготовить в домашних условиях по ЛУТ-технологии, сохранив стандартную ширину 0.3 дюйма. Выводы UPDI/Reset, VCC и GND выведены на отдельную планку, поэтому программатор можно подключить к МК, даже когда плата-адаптер уже запаяна на другую плату (в устройстве).

Рисунок 3.Проект платы адаптера (SOIC-DIL) для МК ATtiny1614 в САПР Eagle.

Средства разработки

Аппаратные средства разработки

Плата разработчика Atmel STK500

AVR Dragon с интерфейсом внутрисхемного программирования, а также добавленной ZIF-панелькой под ИМС.

AVRISP mkII-ISP-Programmer от Atmel

Официальные средства разработки для AVR от Atmel:

  • STK600 starter kit
  • STK500 starter kit
  • STK200 starter kit
  • AVRISP and AVRISP mkII
  • AVR Dragon
  • USBasp — USB
  • JTAGICE mkI
  • JTAGICE mkII
  • JTAGICE3
  • ATMEL-ICE
  • AVR ONE!
  • Butterfly demonstration board
  • AT90USBKey
  • Raven wireless kit

Также существует много сторонних средств, особенно любительских.

Свободные

  • Algorithm Builder — алгоритмическая среда разработки программного обеспечения для микроконтроллеров с архитектурой AVR (последнее обновление в 2010 г).
  • AVR-Eclipse — плагин для среды разработки Eclipse, позволяющий разрабатывать программы на С/С++ и ассемблере, программировать и отлаживать контроллеры, используя внешний набор инструментов (Atmel AVR Toolchain, WinAVR)
  • Avrdude — средство для прошивки микроконтроллеров.
  • AVRDUDE_PROG 3.1 — визуальный редактор.
  • Code::Blocks — кроссплатформенная среда разработки.
  • DDD — графический интерфейс к avr-gdb.
  • eXtreme Burner — AVR — графический интерфейс для USBasp-based USB AVR программаторов.
  • Khazama AVR Programmer — графический интерфейс в Windows для USBasp и avrdude.
  • PonyProg — универсальный программатор через LPT-порт, COM-порт (поддерживается и USB-эмулятор COM-порта).
  • V-USB — программная реализация протокола USB для микроконтроллеров AVR.
  • WinAVR — программный пакет под Windows, включающий в себя компилятор, ассемблер, компоновщик и другие инструменты.
  • Zadig 2.3

Проприетарные

  • Atmel Studio — бесплатная IDE от самой Atmel
  • IAR AVR — коммерческая среда разработки для микроконтроллеров AVR
  • Bascom-avr — среда разработки, основанная на Basic-подобном языке программирования.
  • CodeVisionAVR — компилятор C и программатор — CVAVR, генератор начального кода.
  • Proteus — симулятор электрических цепей, компонентов, включая различные МК и другое периферийное оборудование.

Также архитектура AVR позволяет применять операционные системы при разработке приложений, например, FreeRTOS, uOS, ChibiOS/RT, scmRTOS(C++), TinyOS, Femto OS и др, а также Linux на AVR32.

Модельный ряд

Серия: ATtiny13

ATTINY13-20MMU ATTINY13-20MMUR ATTINY13-20MU ATTINY13-20MUR ATTINY13-20PU ATTINY13-20SQ ATTINY13-20SQR ATTINY13-20SSQ ATTINY13-20SSQR ATTINY13-20SSU ATTINY13-20SSUR ATTINY13-20SU ATTINY13-20SUR ATTINY13V-10MMU ATTINY13V-10MMUR ATTINY13V-10MU ATTINY13V-10MUR ATTINY13V-10PQ ATTINY13V-10PU ATTINY13V-10SSU ATTINY13V-10SSUR ATTINY13V-10SU ATTINY13V-10SUR

(23)

На английском языке: Datasheet Microchip ATtiny13

Публикации по теме

  • Datasheets Datasheet Atmel ATtiny13
  • Форум Датчик утечки газа на микроконтроллере ATtiny13
  • Форум «Расставить» элементы в схеме реанимации ATtiny13
  • Схемы Цифровая паяльная станция на ATtiny13
  • Схемы Мультиметр на HD44780 и Attiny13

Как залить скетч для программирования через Arduino

Сам же скетч для того, чтобы Ардуино стала нашим программатором, залит прямо уже в оболочке программы Arduino. То есть подключаем Ардуино и заливаем скетч-программатора. Для наглядности тоже картинка. Именно кликнув по этому пути и можно будет залить скетч для программирования Attiny

Если выдает ошибку, то заливаем загрузчик через примеры вот так… (тоже самое, но другим путем)

Появляется (открывается новое окно) скетч из примера, его и льем в Ардуинку.

* — почитайте в скетче комментарии на английском, там могут быть ограничения по частоте работы для различных микроконтроллеров. Это надо учитывать при последующей заливке.

Теперь Ардуинка это уже не Ардуинко, а ISP программатор, который как раз работает через CH340, именно через эту микросхему все программируется и она встречается в других программаторах ISP. Осталось лишь вместо встроенного 328 контроллера подключить Attiny 13.

Datasheets

Features
• High Performance, Low Power AVR 8-Bit Microcontroller
• Advanced RISC Architecture • • • • • • •
• — 120 Powerful Instructions — Most Single Clock Cycle Execution
— 32 x 8 General Purpose Working Registers
— Fully Static Operation
— Up to 20 MIPS Througput at 20 MHz
High Endurance Non-volatile Memory segments
— 1K Bytes of In-System Self-programmable Flash program memory
— 64 Bytes EEPROM
— 64 Bytes Internal SRAM
— Write/Erase cyles: 10,000 Flash/100,000 EEPROM
— Data retention: 20 years at 85°C/100 years at 25°C (see page 6)
— Programming Lock for Self-Programming Flash & EEPROM Data Security
Peripheral Features
— One 8-bit Timer/Counter with Prescaler and Two PWM Channels
— 4-channel, 10-bit ADC with Internal Voltage Reference
— Programmable Watchdog Timer with Separate On-chip Oscillator
— On-chip Analog Comparator
Special Microcontroller Features
— debugWIRE On-chip Debug System
— In-System Programmable via SPI Port
— External and Internal Interrupt Sources

ATtiny13 — Summary Datasheet

PDF, 574 Кб, Версия: 08-01-2010

Выписка из документа

Features High Performance, Low Power AVRВ 8-Bit Microcontroller Advanced RISC Architecture – 120 Powerful Instructions – Most Single Clock Cycle Execution– 32 x 8 General Purpose Working Registers– Fully Static Operation– Up to 20 MIPS Througput at 20 MHzHigh Endurance Non-volatile Memory segments– 1K Bytes of In-System Self-programmable Flash program memory– 64 Bytes EEPROM– 64 Bytes Internal SRAM– Write/Erase cyles: 10,000 Flash/100,000 EEPROM– Data retention: 20 years at 85В°C/100 years at 25В°C (see page 6)– Programming Lock for Self-Programming Flash & EEPROM Data SecurityPeripheral Features– One 8-bit Timer/Counter with Prescaler and Two PWM Channels– 4-channel, 10-bit ADC with Internal Voltage Reference– Programmable Watchdog Timer with Separate On-chip Oscillator– On-chip Analog ComparatorSpecial Microcontroller Features– debugWIRE On-chip Debug System– In-System Programmable via SPI Port– External and Internal Interrupt Sources– Low Power Idle, ADC Noise Reduction, and Power-down Modes– Enhanced Power-on Reset Circuit– Programmable Brown-out Detection Circuit …

Programmers

When the ATtiny13 is running from the internal 600 or 128 kHz oscillator, it may be too slow to interact with the programming tool. That’s why this core adds some additional programmers to the list, with the suffix (slow). These options makes the programmers run at a lower clock speed, so the microcontroller can keep up.

Select your microcontroller in the boards menu, then select the clock frequency. You’ll have to hit «Burn bootloader» in order to set the correct fuses and upload the correct bootloader.
Make sure you connect an ISP programmer, and select the correct one in the «Programmers» menu.

Энергопотребление

Пришло время измерить энергопотребление получившегося устройства. Вводные следующие: данные передается каждые 120sec, если пришло прерывание от датчика освещения, то немедленно; событиями от датчика освещения можно пренебречь; ёмкость батареи 200mAh.

Частота1MHz8MHz
Радиомодуль (потребление)15.7mA18.3mA
Микроконтроллер (потребление)1.1mA4.3mA
Режим сна (потребление)7μA7μA
Радиомодуль (активен за цикл)51ms16ms
Микроконтроллер (активен за цикл)15ms4ms
Оценка времени работы (дней)513739

Как видно, тут было ради чего бороться. К сожалению, стабильности на 8MHz добиться не удалось. Видимо без внешнего осциллятора, это не реально.

Все исходные коды проекта доступны на GitHub

Serial support

MicroCore features a brilliant, ultra-lightweight software UART library called picoUART, wrapped by . This means you can use regular if you need to. Note that the baud rate has to be defined at compile-time and cannot be defined in the sketch. The table below shows a list of which clock frequencies use which baud rates by default. If you need a different baud rate for a specific clock frequency, you may modify the .

If you want to use the UART functionality you will have to have the right hardware connected to the right pins on the ATtiny13. See the for more information. Also, please have a look at the provided serial example sketches.

ClockBaud rate
(External) 20 MHz115200
(External) 16 MHz115200
(External) 12 MHz115200
(External) 8 MHz115200
(External) 1 MHz19200
(Internal) 9.6 MHz115200
(Internal) 4.8 MHz57600
(Internal) 1.2 MHz19200
(Internal) 600 kHz9600
(Internal) 128 kHzNot supported

Internal oscillator calibration

The internal 9.6 and 4.8 MHz internal oscillators (yes, these are separate in some silicon revisions) in the ATtiny13 are usually not very accurate. This is acceptable for many applications, but when you’re using an asynchronous protocol like UART, ±3-4% off simply won’t work. To solve this problem MicroCore provides a user-friendly Oscillator calibration sketch that calculate a new OSCCAL value based on a received character over UART. All you need to do is to load the sketch, select the correct baud rate in the serial monitor, select No line ending and send the character many times ( , …). After a few tries, you should gradually see readable text in the serial monitor. After the calibration value has stabilized it’s automatically stored in EEPROM address 0 for future use. This value is not loaded by default, but has to be loaded «manually» in your sketch like so:

  // Check if there exist any OSCCAL value in EEPROM addr. 0
  // If not, run the oscillator tuner sketch first
  uint8_t cal = EEPROM.read();
  if (cal < 0x80)
    OSCCAL = cal;

The reason why it checks if the calibration value is less than 0x80 is that the OSCCAL value can only be 0x7F or less, and the default value when the EEPROM is erased and empty is 0xFF. The code snippet above is just a primitive way to check if a value that could be loaded into the OSCCAL register is present.

Huge thanks to Ralph Doncaster for providing his excellent picoUART library and his oscillator calibration code. None of this would be close to possible if it weren’t for his brilliant work!

Экологический статус

ATTINY13-20MMUATTINY13-20MMURATTINY13-20MUATTINY13-20MURATTINY13-20PUATTINY13-20SQATTINY13-20SQRATTINY13-20SSQATTINY13-20SSQRATTINY13-20SSUATTINY13-20SSURATTINY13-20SUATTINY13-20SURATTINY13V-10MMUATTINY13V-10MMURATTINY13V-10MUATTINY13V-10MURATTINY13V-10PQATTINY13V-10PUATTINY13V-10SSUATTINY13V-10SSURATTINY13V-10SUATTINY13V-10SUR
RoHSСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместимСовместим

Параметры

Parameters / ModelsATTINY13A-MMFATTINY13A-MMFRATTINY13A-MMUATTINY13A-MMURATTINY13A-MUATTINY13A-MURATTINY13A-PUATTINY13A-SFATTINY13A-SFRATTINY13A-SHATTINY13A-SHRATTINY13A-SNATTINY13A-SNRATTINY13A-SS7ATTINY13A-SS7RATTINY13A-SSHATTINY13A-SSHRATTINY13A-SSUATTINY13A-SSURATTINY13A-SUATTINY13A-SUR
ADC Input444444444444444444444
ADC with ComputationNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
Angular TimerNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
Архитектура888888888888888888888
CPU Type8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR8-bit AVR
CRCNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
Class B HardwareNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
Emulated EEPROM in Flash646464646464646464646464646464646464646464
High Voltage CapableNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
Internal OscillatorYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYes
Internal Voltage Reference, BandgapYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYes
Lead Count101010102020888888888888888
Math AcceleratorNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
Max 8-Bit Digital Timers111111111111111111111
Max ADC Resolution, Bits101010101010101010101010101010101010101010
Max CPU Speed, МГц202020202020202020202020202020202020202020
Max PWM outputs, including complementary222222222222222222222
Количество компараторов111111111111111111111
Operation Voltage Max, В5.55.55.55.55.55.55.55.55.55.55.55.55.55.55.55.55.55.55.55.55.5
Operation Voltage Min, В1.81.81.81.81.81.81.81.81.81.81.81.81.81.81.81.81.81.81.81.81.8
Package Width3x3x1mm3x3x1mm3x3x1mm3x3x1mm4x4x0.8mm4x4x0.8mm.300in.208in.208in.208in.208in.208in.208in3.90mm(.150in)3.90mm(.150in)3.90mm(.150in)3.90mm(.150in).150In(3.90mm).150In(3.90mm).208in.208in
Peripheral Pin Select / Pin MuxingNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
Pin count888888888888888888888
Размер памяти программ, KB111111111111111111111
SRAM, Bytes646464646464646464646464646464646464646464
Temp Range Max125125125125125125125125125125125125125125125125125125125125125
Temp Range Min-40-40-40-40-40-40-40-40-40-40-40-40-40-40-40-40-40-40-40-40-40
Zero Cross detectNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo

Программное обеспечение

Тестовый скетч для работы с сенсором получился довольно интересным, в нем можно найти широкий набор примеров, а именно:

  • Работа с радиомодулем NRF24L01+;
  • Измерение напряжения питания средствами микроконтроллера;
  • Перевод микроконтроллера в режим сна;
  • Пробуждение по таймеру WDT (WatchDog Timer);
  • Пробуждение по Pin Change прерыванию PCINT;
  • Работа с аналоговыми и цифровыми портами.

Чтобы скомпилировать скетч необходимы сторонние библиотеки:

  • TMRh20/RF24
  • TMRh20/RF24Network

Это оптимизированные версии библиотек для работы с радиомодулем NRF24L01+, которые подходят для микроконтроллера ATtiny85. Их необходимо скачать и распаковать в папку libraries в директории со скетчами Arduino.

Ниже будут приведены наиболее интересные куски кода с подробными комментариями. Полностью скетч можно найти на GitHub в папке attwlight_sensor, также в папке attwlight_rx находится скетч для приёмника.

Перевод микроконтроллера в режим сна

Функция void sleep() вызывается в главном цикле void loop() и останавливает его до тех пор пока не сработает одно из прерываний PCINIT3 либо WDT. Затем выполняется полезная работа и снова вызывается данная функция.

Функция содержит обращения к регистрам микроконтроллера, и что при этом происходит не всегда очевидно. Чтобы с этим разобраться нужно заглянуть в документацию на микроконтроллер ATtiny85 datasheet раздел «23. Register Summary», в нем приведен полный список регистров с прямой ссылкой на страницу с подробным описанием для чего предназначен тот или иной бит.

Опрос датчика освещения

Особенности работы с данным датчиком уже были разобраны в разделе «Принципиальная схема». Отмечу только, что параметры здесь выбраны так, чтобы потребление микроконтроллера в режиме сна не превышало 20μA.

Измерение напряжения питания

Если не использовать вывод AREF микроконтроллера, который предназначен для задания опорного напряжения, все измерения на аналоговом порту будут привязаны к напряжению питания. Батарея не стабилизированный источник, следовательно для корректного считывания показаний датчика температуры, необходим способ измерять напряжение питания в процессе работы. Напряжение питания также является хорошим индикатором состояния батареи.

Ниже приведен код, который позволяет произвести требуемые измерения полагаясь на стабильность внутреннего опорного напряжения Vbg (Bandgap reference voltage) равного 1.1V. Согласно спецификации Vbg может находится в пределах 1.0-1.2V, поэтому необходимо убедиться в точности измерений и при необходимости скорректировать константу 1125300.

Измерение температуры

Получив напряжение питания, легко вычислить точное напряжение на аналоговом входе микроконтроллера и перевести его в температуру.

Остальная часть скетча нужна, чтобы собрать данные вместе и отправить их наиболее оптимальным образом, с точки зрения энергопотребления. Ничего интересного там нет, обычная логика, надеюсь, комментариев в коде достаточно, чтобы разобраться как всё работает.

Если скомпилировать данный код, можно увидеть, что он свободно умещается в 8KiB и даже есть куда развернуться:

Осталось проверить, что всё работает как было задумано, и можно прошивать Fuses переключающие RESET в порт ввода/вывода. Готовой конфигурации в Arduino IDE для этого нет, поэтому нужно воспользоваться командной строкой:

  • avrdude — команда из пакета Arduino IDE находящаяся в папке hardware/tools/avr/bin/;
  • /dev/ttyUSB0 — устройство программатора;
  • /etc/avrdude.conf — ссылка на файл находящийся в директории с Arduino IDE по адресу hardware/tools/avr/etc/avrdude.conf.

Что из себя представляют данные Fuses, можно посмотреть в калькуляторе Engbedded Atmel AVR Fuse Calculator.

Если кратко, то эти настройки предписывают: использовать встроенный осциллятор с делителем частоты на 8 (итоговая частота 1MHz); использовать стандартные задержки при старте, необходимые для стабилизации осциллятора; отключить BOD (Brown-out Detector) — перезагрузка при низком напряжении питания для защиты памяти от записи мусора; включить возможность считывать прошивку; и собственно отключить RESET.

Оцените статью:
Оставить комментарий
Adblock
detector