Работа с микроконтроллерами: прошивка с помощью arduino

Содержание

Программный код

Код программногоUART для Attiny13 написан на C. Скомпилировать его можно с помощью avr-gcc. Более подробная информация о том, как скомпилировать этот проект, находится здесь.

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

#define    UART_RX_ENABLED        (1) // Enable UART RX
#define    UART_TX_ENABLED        (1) // Enable UART TX

#ifndef F_CPU
# define        F_CPU           (1200000UL) // 1.2 MHz
#endif  /* !F_CPU */

#if defined(UART_TX_ENABLED) && !defined(UART_TX)
# define        UART_TX         PB3 // Use PB3 as TX pin
#endif  /* !UART_TX */

#if defined(UART_RX_ENABLED) && !defined(UART_RX)
# define        UART_RX         PB4 // Use PB4 as RX pin
#endif  /* !UART_RX */

#if (defined(UART_TX_ENABLED) || defined(UART_RX_ENABLED)) && !defined(UART_BAUDRATE)
# define        UART_BAUDRATE   (19200)
#endif  /* !UART_BAUDRATE */

#define    TXDELAY             (int)(((F_CPU/UART_BAUDRATE)-7 +1.5)/3)
#define RXDELAY             (int)(((F_CPU/UART_BAUDRATE)-5 +1.5)/3)
#define RXDELAY2            (int)((RXDELAY*1.5)-2.5)
#define RXROUNDED           (((F_CPU/UART_BAUDRATE)-5 +2)/3)
#if RXROUNDED > 127
# error Low baud rates unsupported - use higher UART_BAUDRATE
#endif

static char uart_getc();
static void uart_putc(char c);
static void uart_puts(const char *s);

int
main(void)
{
    char c, *p, buff;

    uart_puts("Hello World!\n");

    /* loop */
    while (1) {
        p = buff;
        while((c = uart_getc()) != '\n' && (p - buff) < 16) {
            *(p++) = c;
        }
        *p = 0;
        _delay_ms(10);
        uart_puts(buff);
    }
}

char
uart_getc(void)
{
#ifdef    UART_RX_ENABLED
    char c;
    uint8_t sreg;

    sreg = SREG;
    cli();
    PORTB &= ~(1 << UART_RX);
    DDRB &= ~(1 << UART_RX);
    __asm volatile(
        " ldi r18, % \n\t" // 1.5 bit delay
        " ldi %0, 0x80 \n\t" // bit shift counter
        "WaitStart: \n\t"
        " sbic %-2, % \n\t" // wait for start edge
        " rjmp WaitStart \n\t"
        "RxBit: \n\t"
        // 6 cycle loop + delay - total = 5 + 3*r22
        // delay (3 cycle * r18) -1 and clear carry with subi
        " subi r18, 1 \n\t"
        " brne RxBit \n\t"
        " ldi r18, % \n\t"
        " sbic %-2, % \n\t" // check UART PIN
        " sec \n\t"
        " ror %0 \n\t"
        " brcc RxBit \n\t"
        "StopBit: \n\t"
        " dec r18 \n\t"
        " brne StopBit \n\t"
        : "=r" (c)
        :  "I" (_SFR_IO_ADDR(PORTB)),
         "I" (UART_RX),
         "I" (RXDELAY),
         "I" (RXDELAY2)
        : "r0","r18","r19"
    );
    SREG = sreg;
    return c;
#else
    return (-1);
#endif /* !UART_RX_ENABLED */
}

void
uart_putc(char c)
{
#ifdef    UART_TX_ENABLED
    uint8_t sreg;

    sreg = SREG;
    cli();
    PORTB |= 1 << UART_TX;
    DDRB |= 1 << UART_TX;
    __asm volatile(
        " cbi %, % \n\t" // start bit
        " in r0, % \n\t"
        " ldi r30, 3 \n\t" // stop bit + idle state
        " ldi r28, % \n\t"
        "TxLoop: \n\t"
        // 8 cycle loop + delay - total = 7 + 3*r22
        " mov r29, r28 \n\t"
        "TxDelay: \n\t"
        // delay (3 cycle * delayCount) - 1
        " dec r29 \n\t"
        " brne TxDelay \n\t"
        " bst %, 0 \n\t"
        " bld r0, % \n\t"
        " lsr r30 \n\t"
        " ror % \n\t"
        " out %, r0 \n\t"
        " brne TxLoop \n\t"
        :
        :  "I" (_SFR_IO_ADDR(PORTB)),
         "I" (UART_TX),
         "I" (TXDELAY),
         "r" (c)
        : "r0","r28","r29","r30"
    );
    SREG = sreg;
#endif /* !UART_TX_ENABLED */
}

void
uart_puts(const char *s)
{
         while (*s) uart_putc(*(s++));
}

Цифровой мультиметр AN8009
Большой ЖК-дисплей с подсветкой, 9999 отсчетов, измерение TrueRMS…

Подробнее

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.

Пример Blink

Для проверки программатора загрузим в МК скетч мигания светодиодом (Blink). Для этого подключите светодиод и резистор к выводу 2 (порт PA4) МК ATtiny1614, как показано на  Рисунке 7. На схеме также изображен программатор на плате Arduino Nano.

Рисунок 7. Принципиальная схема подключения светодиода к МК ATtiny1614 для проверочного
скетча Blink.

Откройте в Arduino IDE файл Blink_ATTiny1614.ino и загрузите его в МК с помощью команды «Upload using programmer» в меню «Sketch». В процессе загрузки скетча проигнорируйте сообщения об ошибке программатора «avrdude: jtagmkII_initialize(): Cannot locate «flash» and «boot» memories in description». После загрузки скетча подключенный к МК светодиод начнет мигать (Рисунок 8).

Рисунок 8. Пример подключения светодиода к МК Attiny1614 на монтажной плате.

Обратите внимание, что физический вывод 2 (PA4) МК в Arduino IDE является портом D0 (см. карту портов ввода/вывода на Рисунке 6)

Скетчи на ATtiny84

Итак, у нас Arduino Uno. Как же нам запрограммировать нашу «тиньку»? Для этого используется такое устройство, как программатор. Он необходим для того, чтобы залить в контроллер прошивку.
Мы можем превратить в него нашу Arduino. И делается это элементарно, путем заливки скетча ArduinoISP.

Делаем программатор и собираем схему

Открываем соответствующий скетч «Файл → Примеры → ArduinoISP» и заливаем его. Все, превращение завершено. Теперь необходимо правильно собрать схему, чтобы прошить «тиньку». Обратимся к коду скетча, который был только что залит. Даже не к коду, а к комментарию перед ним.

Сначала подключим светодиоды таким образом, как описано в комментарии, не забывая резисторы. После сборки схемы и подачи питания, светодиод, подключенный к пину 9 «Heartbeat» будет моргать, обозначая нормальное функционирование. Если этого не произошло, то ищите ошибки в подключении.

Теперь надо подключить пины 10-13 к ATtiny. Чтобы узнать распиновку последней, обратимся к даташиту, который можно скачать с сайта Atmel , производителя этих контроллеров. На второй странице расположена картинка, описывающая распиновку.
Основываясь на даташите и комментарии из скетча, можем составить следующую таблицу подключения:

Arduino UNO ATtiny84
Reset 10 4
MOSI 11 7
MISO 12 8
SCK 13 9

Теперь подключим светодиод и переменный резистор.
Резистор необходимо подключить в пину №6 (PA7), поскольку этот пин может быть входом для аналого-цифрового преобразователя, а светодиод — к любому другому, например, к 10 (PA3).

О нумерации пинов

Стоит немного рассказать о различии нумерации пинов в Arduino и при использовании «чистого» С. В Arduino пины нумеруются последовательно и исключаются системные (питание, земля и т.д.), а в реальности все немного иначе. Все выводы контроллера можно охарактеризовать двумя парметрами: номер порта (порт А, порт В и т.д.) и номер вывода (1..8).

На сайте Arduino можно найти карту пинов. Она выглядит следующим образом:

Для используемой нами ATtiny84 нумерация будет аналогична. В библиотеке Arduino-tiny, о которой речь пойдёт далее, можно найти следующую таблицу соответствия:

// ATMEL ATTINY84 / ARDUINO
//
// +-\/-+
// VCC 1| |14 GND
// (D 0) PB0 2| |13 AREF (D 10)
// (D 1) PB1 3| |12 PA1 (D 9)
// PB3 4| |11 PA2 (D 8)
// PWM INT0 (D 2) PB2 5| |10 PA3 (D 7)
// PWM (D 3) PA7 6| |9 PA4 (D 6)
// PWM (D 4) PA6 7| |8 PA5 (D 5) PWM
// +—-+

В соответсвии с назначением каждой ножки контроллера, аналоговые пины (те, у которых есть вход АЦП) нумеруются в скетче по каналу АЦП.
Напримем, пин сфизическим номером 11 может быть входом для второго канала АЦП (ADC2), поэтому в скетче он будет называться A2.

Теперь необходимо научить среду программирования Arduino понимать тот факт, что мы используем другой контроллер.

Учим среду разработки

Первым делом необходимо скачать библиотеку arduino-tiny , содержащую в себе все необходимое.
Далее заходим в настройки Arduino и смотрим расположение папки со скетчами.

Переходим в эту папку и создаем там новую с названием «hardware». А в ней еще одну, «tiny». Копируем содержимое скачанного ранее архива в эту папку.
И последнее действие — переименовываем файл «Prospective Boards.txt» в «boards.txt». Теперь перезагружем среду разработки и идем в меню «Сервис → Плата».

Можно видеть, то добавилось много новых пунктов.

Программируем ATtiny84

Выбираем в качестве нужного устройства «Сервис → Плата → ATtiny84 @ 8 MHz (internal oscillator; BOD disabled)» поскольку у нас нету внешнего кварца, который задает частоту работы контроллера. В качестве программатора выберем — «Сервис → Программатор → Arduino as ISP».

В качестве кода берем уже написанный нами код для светодиода и подстроечного резистора и изменяем там номера пинов.

// Номер пина для светодиода
// Номер аналогового пина
// В эту переменную считываем значение с аналогового входа
// Настраиваем пин светодиода на выход
// Считываем значение
// val содержит значение из диапазона 0..1023, а диапазон значений для analogWrite
// 0..255. Для этого делим val на 4

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

Одна из проблем при экспериментировании с этими новыми МК заключается в том, что они поставляются только в корпусах для поверхностного монтажа (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.

Step 2: Setting Up the IDE

  • Open the arduino IDE and connect your Arduino
  • Go to file > Examples > ArduinoISP
  • Check you have the correct board & port selected (Tools > Board/Serial Port)
  • Press the upload button

This will program your arduino board to be used as an ISP (in system programmer)
We now need to set up the IDE to recognise our ATTiny13A as an arduino compatible chip

  • Download and extract this file: https://github.com/tekstop/attiny/tree/Arduino1
  • Copy the folder «attiny» from the extracted ZIP to the /hardware/ folder in your arduino IDE installation directory

We then need to offset the clock speed (not a very elegant solution, but i’m working on it!):

  • Open Hardware/attiny/boards.txt
  • Scroll to the bottom of the file, this last few lines contains the data relevant to our chip
  • Change «attiny13.build.f_cpu=9600000L» to «attiny13.build.f_cpu=1000000L»

This will correct delay times etc.

  • Open the Arduino IDE again
  • Go to Tools>Board and select «ATtiny13 (internal 9.6 MHz clock)»

Programming attiny13a using Arduino uno as Isp

Attiny13a can be programmed using arduino uno. Code can be uploaded using the following simple steps.

  • Connect arduino to PC. 
  • Select the right Port and arduino board, in our case “Arduino Uno”.
  • On arduino upload the sketch “ArduinoISP” given in the examples. Wait for sketch to be uploaded. Once uploaded move to next step.
  • Select “Arduino as ISP” from the Programmer drop down menu.
  • Select the right Port.
  • Select the “ATtiny13A standalone 4.8Mhz” from the Board drop down menu.
  • Open the sketch you want to upload to the attiny13a and upload the code by pressing the upload button. 

Attiny13a programmed with Arduino uno

Download the project code and simulation. Simulation is made in proteaus. The code folder contains the arduino code file and .hex file that can be burned to microcontroller directly for blink led program. Please give us your feed back on the project.

Начинаем с простого скетча

Собирать мы будем устройство с потенциометром и светодиодом. В зависимости от угла поворота потенциометра будет изменяться яркость светодиода.
Подключаем к Arduino ледующим образом: светодиод подключаем к цифровому пину №6 (поскольку на нем есть возможность генерации ШИМ-сигнала, за счет которого будет регулироваться яркость светодиода), а потенциометр — к аналоговому пину №0.
Скетч содержит следующий код:

pwm-adc.ino
// Номер пина для светодиода
int ledPin = 6;   
 
// Номер аналогового пина   
int analogPin = A0;   
 
// В эту переменную считываем значение с аналогового входа
int val = ;         
 
void setup()
{
  // Настраиваем пин светодиода на выход
  pinMode(ledPin, OUTPUT);   
}
 
 
 
void loop()
{
  // Считываем значение
  val = analogRead(analogPin);   
 
  // val содержит значение из диапазона 0..1023, а диапазон значений для analogWrite
  // 0..255. Для этого делим значение на 4
  analogWrite(ledPin, val  4);  
}

Способ программирования новых МК серии ATtiny

Одним из самых больших изменений в этих МК подвергся интерфейс программирования. В новой серии МК ATtiny применен интерфейс, получивший название Unified Program and Debug Interface (UPDI), – универсальный интерфейс программирования и отладки. В этом интерфейсе задействован вывод МК Reset/UPDI. Для программирования МК по интерфейсу UPDI и подачи корректных сигналов на вывод Reset/UPDI мы будем использовать плату Arduino Nano. После программирования МК плата Arduino Nano больше не понадобиться. Схема подключения платы Arduino Nano к МК изображена на Рисунке 4.

Рисунок 4. Схема подключения Arduino Nano в качестве UPDI программатора к МК ATtiny1614.

Шаг 1. Настраиваем плату Arduino Nano в качестве программатора

В секции загрузок доступен для скачивания архив SpenceKonde — jtag2updi.zip. Распакуйте архив в папку со скетчами Arduino и запрограммируйте плату Arduino Nano. Этот архив содержит скетч, который превращает Arduino Nano в UPDI программатор.

Примечание:
не пугайтесь, что файл jtag2updi.ino пустой, фактически, весь код находится в других файлах.

Чтобы предотвратить запись Arduino скетчей в плату Arduino Nano при программировании МК ATtiny1614, необходимо отключить линию Reset на Arduino. Сделать это можно, добавив конденсатор емкостью 10 мкФ между линией Reset Arduino и GND (см. Рисунок 4). Короткий импульс сброса будет сбрасывать только МК ATtiny1614, а не  Arduino. Плату Arduino можоно сбросить нажатием кнопки сброса в течение более длительного времени.

Между выводами D6 Arduino и Reset/UPDI МК ATtiny1614 необходимо включить резистор 4.7 кОм. Также необходимо подключить МК к питанию +5 В и GND (на плате Arduino Nano).

Шаг 2. Установка поддержки плат megaTinyCore в Arduino IDE

Пакет поддержки плат в Arduino IDE устанавливается с помощью менеджера плат. Для этого необходимо:

  • В меню «Настройки» (Preferences) добавить ссылку  http://drazzy.com/package_drazzy.com_index.json в менеджер дополнительных плат;
  • Запустить менеджер плат (Tools – Boards — Board Manager);
  • Найти в списке платы «megaTinyCore by Spence Konde» и нажать кнопку «Установить» (Install).

Шаг 3. Выбор программатора

После того как пакет дополнительных плат «megaTinyCore by Spence Konde» был установлен в Arduino IDE, в меню «Инструменты» (Tools) выбираем (Рисунок 5):

  • Плату «ATtiny1614/ATtiny1604/ATtiny814/ATtiny804/ATtiny414/ATtiny404/ATtiny214/ATtiny204»;
  • Тактовая частота: 16 МГц;
  • COM-порт, к которому подключен наш программатор на плате Arduino Nano;
  • Программатор: — «jtag2updi(megaTinyCore)».
Рисунок 5. Выбор типа платы и программатора для работы с МК ATtiny1614 в Arduino IDE.

При выполнении этих настроек убедитесь, что вы выбрали МК, который собираетесь запрограммировать. Кроме того, слеудет учитывать, что некоторые библиотеки не буду работать на тактовой частоте 20 МГц (например, Adafruit Neopixel), поэтому тактовую частоту нужно выбирать ниже – 16 МГц, а если МК питается от напряжения 3.3 В, то 8 МГц.

Плата 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 своими руками мы расскажем немного позже.

Step 3: Programming

You are now all set to upload your sketch to the attiny13a, make good use of its 1024 bytes of internal memory! 😉

  • Open the IDE
  • Click File>Examples>Basic>Blink
  • Change line 11 from «pinMode(13, OUTPUT);» to «pinMode(4, OUTPUT);»
  • Change line 15 from «digitalWrite(13, HIGH);» to «digitalWrite(4, HIGH);»
  • Change line 17 from «digitalWrite(13, LOW);» to «digitalWrite(4, LOW);»
  • Click File>Upload using programmer

The IDE should now upload the sketch to your chip via your ArduinoISP programmer!
Once this is complete (~5 seconds) your LED should start blinking with a 1 second interval
To address pins in the Arduino IDE you should use their PB number from the diagram below (EG Pin1 = PB1 etc..)
If all you wanted to do was learn to program your chip, then congratulations! You are done!
If you would like to build a RC Servo Interpreter then keep reading.

Blink led with Atmel Attiny13A, Arduino Ide and Proteaus Simulation

To prove that the upper configuration works i made a simple blink led project/program. Led toggles at very half a second. I connected the led to pin#PB4 of attiny13a. I used an internal 4.8Mhz crystal as clock source. On reset pin i connected a push button for resenting the microcontroller to run over again. Whole of the circuit is powered using a CR2032 cell. Cr2032 is a 3.3v coin cell. Attiny consumes very little power during operation. Atmel attiny series microcontrollers are considered to be the master’s of hibernation. They can remain in hibernation for years with very minute amount of power supply. Circuit diagram of the project is given below.

Project Circuit diagram Attiny13A Blink example.

How to install

Boards Manager Installation

MicroCore requires Arduino IDE version 1.6.13 or greater.

  • Open the Arduino IDE.
  • Open the File > Preferences menu item.
  • Enter the following URL in Additional Boards Manager URLs:
  • Open the Tools > Board > Boards Manager… menu item.
  • Wait for the platform indexes to finish downloading.
  • Scroll down until you see the MicroCore entry and click on it.
  • Click Install.
  • After installation is complete close the Boards Manager window.

Manual Installation

Click on the «Clone or download» button in the upper right corner. Extract the ZIP file, and move the extracted folder to the location «~/Documents/Arduino/hardware». Create the «hardware» folder if it doesn’t exist.
Open Arduino IDE, and a new category in the boards menu called «MicroCore» will show up.

8 битный AVR микроконтроллер с 1 КБ внутрисистемно программируемой Flash памяти

Документация:

  1158 Kb Engl Описание микросхемы ATtiny2313 Предварительная информация
  Rus Система команд и архитектура
  Програмное обеспечение
  Инструментальные средства для 8-разрядных AVR-микроконтроллеров
  Примеры применения микроконтроллеров AVR в устройствах управления 3-фазными бесколлекторными электродвигателями постоянного тока

Отличительные особенности:

  • Высококачественный низкопотребляющий 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
        — Усовершенствованная схема формирования сброса при включении
        — Программируемая схема обнаружения кратковременных пропаданий питания
        — Встроенный откалиброванный генератор
  • Порты ввода — вывода и корпусное исполнение
        — 8 выводные PDIP и SOIC корпуса: 6 программируемых линий ввода-вывода
  • Диапазон напряжения питания
        — от 1.8 до 5.5 В
  • Индустриальный рабочий температурный диапазон
  • Потребление
        — Активный режим:
          290 мкА при частоте 1 МГц и напряжении питания 1.8 В
        — Режим пониженного потребления
          0.5 мкА при напряжении питания 1.8 В

Блок- схема ATtiny13:

Расположение выводов ATtiny13:

Общее описание:

ATATtiny13 — низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny13 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.

AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.

ATtiny13 имеет следующие характеристики: 1 КБ внутрисистемно программируемой Flash память программы, 64 байтную EEPROM память данных, 64 байтное SRAM (статическое ОЗУ), 6 линий ввода — вывода общего применения, 32 рабочих регистра общего назначения, 8 битный таймер/счетчик со схемой сравнения, внутренние и внешние источники прерывания, 4 канальный 10 битный АЦП, программируемый сторожевой таймер со встроенным генератором и три программно инициализируемых режима пониженного потребления. В режиме Idle останавливается ядро, но ОЗУ, таймер/счетчик, АЦП, аналоговый компаратор и система прерываний продолжают функционировать. В режиме Power-down регистры сохраняют свое значение, но генератор останавливается, блокируя все функции прибора до следующего прерывания или аппаратного сброса. В режиме ADC Noise Reduction останавливается вычислительное ядро и все модули ввода-вывода за исключением АЦП, что позволяет минимизировать шумы при выполнении преобразования.

Прибор изготовлен по высокоплотной энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать память программы в системе через последовательный SPI интерфейс программой-загрузчиком, выполняемой в AVR ядре, или обычным программатором энергонезависимой памяти.

ATtiny13 поддерживается различными программными средствами и интегрированными средствами разработки, такими как компиляторы C, макроассемблеры, программные отладчики/симуляторы, внутрисхемные эмуляторы и ознакомительные наборы.

Главная —
Микросхемы —
DOC —
ЖКИ —
Источники питания —
Электромеханика —
Интерфейсы —
Программы —
Применения —
Статьи

Как прошить плату Digispark на базе микроконтроллера ATtiny 85. Обзор платы.

Ниже представлены 4 самых часто встречаемых варианта плат, всех их объединяет наличие AVR
микроконтроллера ATtiny 85 с 8 битным процессором способным работать на частоте от 1 до 20 МГц.
Ее характеристики как и цена довольно скромные – всего 8 Кб памяти для хранения программ, 512 байт
оперативной памяти, 512 байт энергонезависимой памяти, 6 — цифровых входов/выходов, 4 — аналоговых входа,
3 — ШИМ выхода, 1 — I2C, 1 — SPI.

Зато у этой малышки имеется USB интерфейс, благодаря которому она может работать как джойстик,
клавиатура или мышь.

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

Так же на плате имеется стабилизатор напряжения для подключения от внешних источников питания (контакт
VIN) от 6 до 16 вольт (разработчики утверждают что стабилизатор выдерживает до 35 вольт). Плата отличается
особой экономностью, может потреблять всего 0,1 мкА.

О возможностях среды разработки

Arduino IDE имеет встроенный набор плат и микроконтроллеров, с которыми можно работать; в её основе лежит классический программатор AVR, кстати, благодаря ему и можно обращаться к устройству командами на Си.

Однако не всегда удобно и рационально использовать предложенные микроконтроллеры. Согласитесь, что глупо брать плату с парой десятков выводов для работы с 1 датчиком и 1 исполнительным механизмом, в роли которого может быть:

  • сервопривод;
  • транзистор;
  • светодиод;
  • соленоид и т. д.

Поэтому сторонние разработчики создали целый ряд совместимых плат. Работать с ними можно через Arduino IDE, используя простые команды встроенного языка. Для этого были переписаны загрузчики и библиотеки команд.