Sketch из примеров ArduinoISP превращает ваш Arduino во внутрисхемный программатор для перепрограммирования микроконтроллеров Atmega. Это Вам будет полезно если есть необходимость повторно загрузить bootloader в Arduino, если Вы собираетесь загрузить sketch в отдельную микросхему микроконтроллера или Вы создаете свою собственную Arduino-совместимую плату.

Обновите Arduino IDE или установите самую последнюю версию Arduino.

Комментарии из sketch ArduinoISP Файл / Примеры / ArduinoISP содержат некоторые инструкции по подключению Arduino в качестве ISP программатора:

Используйте на Arduino следующие контакты:

pin name:    not-mega:        mega(1280 and 2560)
slave reset:   10:              53 
MOSI:          11:              51 
MISO:          12:              50 
SCK:           13:              52 

Поставьте светодиод (с резистором) на следующих выводах:
9: Heartbeat    - начало программирования
8: Error        - загорается в случае неполадок
7: Programming  - связь с ведомым

Микроконтроллеры ATtiny в среде разработки Arduino

Микроконтроллеры ATtiny фирмы Atmel не поддерживаются средой Arduino из коробки. По крайней мере, так обстоят дела в Arduino v. 1.0.6. Но, добавить поддержку микроконтроллеров ATtiny в среду Arduino не сложно.

Скачайте файлы поддержки ATtiny для Arduino. Распакуйте архив Arduino1.zip. Из этого архива перенесите папку attiny в папку «hardware» Arduino IDE.

В списке поддерживаемых устройств дополнительно появится следующий набор:

  • ATtiny45 (internal 1 MHz clock)
  • ATtiny45 (internal 8 MHz clock)
  • ATtiny45 (external 20 MHz clock)
  • ATtiny85 (internal 1 MHz clock)
  • ATtiny85 (internal 8 MHz clock)
  • ATtiny85 (external 20 MHz clock)
  • ATtiny44 (internal 1 MHz clock)
  • ATtiny44 (internal 8 MHz clock)
  • ATtiny44 (external 20 MHz clock)
  • ATtiny84 (internal 1 MHz clock)
  • ATtiny84 (internal 8 MHz clock)
  • ATtiny84 (external 20 MHz clock)
  • ATtiny13 (internal 9.6 MHz clock)

Еще одна библиотека поддержки микроконтроллеров ATtiny в Arduino. Из этого архива перенесите папку tiny в папку hardware Arduino. В папке hardware/tiny сделайте копию файла Prospective Boards.txt и переименуйте копию в boards.txt. Теперь список поддерживаемых Arduino устройств пополнится следующими:

  • ATtiny84 @ 16 MHz (external crystal; 4.3 V BOD)
  • ATtiny84 @ 8 MHz (internal oscillator; BOD disabled)
  • ATtiny84 @ 1 MHz (internal oscillator; BOD disabled)
  • ATtiny44 @ 8 MHz (internal oscillator; BOD disabled)
  • ATtiny44 @ 1 MHz (internal oscillator; BOD disabled)
  • ATtiny24 @ 16 MHz (external crystal; BOD disabled)
  • ATtiny85 @ 16 MHz (external crystal; 4.3 V BOD)
  • ATtiny85 @ 16 MHz (internal PLL; 4.3 V BOD)
  • ATtiny85 @ 8 MHz (internal oscillator; BOD disabled)
  • ATtiny85 @ 1 MHz (internal oscillator; BOD disabled)
  • ATtiny45 @ 8 MHz
  • ATtiny45 @ 1 MHz
  • ATtiny85 @ 128 KHz (watchdog oscillator; 1.8 V BOD)
  • ATtiny25 @ 8 MHz
  • ATtiny25 @ 1 MHz
  • ATtiny4313 @ 8 MHz
  • ATtiny4313 @ 1 MHz
  • ATtiny2313 @ 8 MHz
  • ATtiny2313 @ 1 MHz
  • Optiboot ATtiny85 @ 8 MHz (internal osc)

Так же, библиотеки поддержки не стандартных для Arduino микроконтроллеров можно устанавливать в папку со скетчами, предварительно создав в ней папку hardware. Это может быть полезно если у Вас нет доступа к системной папке в которую инсталлирован Arduino.

Откройте файл hardware/arduino/cores/arduino/wiring.c найдите в нем строку 44 и добавьте в конце строки:

 || defined(__AVR_ATtiny13__)

Так, чтобы получилось:

#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny13__)

Чтобы при программировании не появлялось предупреждение "avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13", откройте файл hardware/tools/avrdude.conf и в секцию для ATtiny13 добавьте две строки:

pagel = 0x01;
bs2 = 0x01;

Например, так:

#------------------------------------------------------------
# ATtiny13
#------------------------------------------------------------

part
    id                  = "t13";
    desc                = "ATtiny13";
     has_debugwire = yes;
     flash_instr   = 0xB4, 0x0E, 0x1E;
     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
	             0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,
	             0x99, 0xE1, 0xBB, 0xAC;
    stk500_devcode      = 0x14;
    signature           = 0x1e 0x90 0x07;
    pagel = 0x01;
    bs2 = 0x01;
    chip_erase_delay    = 4000;

И в секцию для ATtiny45 добавьте эти же две строки:

#------------------------------------------------------------
# ATtiny45
#------------------------------------------------------------

part
     id            = "t45";
     desc          = "ATtiny45";
     pagel = 0x01;
     bs2 = 0x01;
     has_debugwire = yes;

И в секцию для ATtiny84 добавьте эти же две строки:

#------------------------------------------------------------
# ATtiny84
#------------------------------------------------------------

part
     id            = "t84";
     desc          = "ATtiny84";
     pagel = 0x01;
     bs2 = 0x01;
     has_debugwire = yes;

Программирование ATtiny13 с помощью Arduino

  • Загрузите в плату Arduino sketch ArduinoISP из примеров: Файл / Примеры / ArduinoISP
  • Установите в меню Сервис / Программатор / Arduino as ISP.
  • Установите в меню Сервис / Плата / ATtiny13 (internal 1.2 MHz clock)
  • Отключите питание (USB) платы Arduino и соберите схему программатора используя описание выводов контроллеров Atmel ATTiny25/45/85/13

Принципиальная электрическая схема ISP программатора на Arduino UNO

Загрузите в ATtiny13 скетч:

int led = 3;
void setup() {
  pinMode(led, OUTPUT);
}
void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}

Если Вы все сделали правильно, светодиод должен мигать.