Прошиваем ATTiny13 c помощью Arduino v1 50

Как прошить 13 с помощью v1

Качаем файлы для Arduino отсюда https://github.com/tekstop/attiny/archive/Arduino1.zip
Распаковываем все в папку «hardware»

Открываем файл boards.txt ищем и меняем в нем

attiny13.name=ATtiny13 (internal 9.6 1 MHz clock)
attiny13..low_fuses=0x7a
attiny13.bootloader.high_fuses=0xff
attiny13.upload.maximum_size=1024
attiny13.build.mcu=attiny13
attiny13.build.f_cpu=9600000L 1000000L
attiny13.build.core=arduino:arduino
attiny13.build.variant=tiny8

Открываем наш Arduino и в примерах выбираем

aruinoasisp1.jpg

Заливаем .

Далее Выбираем в меню Arduino as ISP

aruinoasisp2.jpg

В меню выбора платы выбираем наш ATTiny13

aruinoasisp3.jpg

Подключаем ATTiny13 согласно выводам

Также необходимо установить конденсатор  на 10 микрофарад между GND и Reset на ардуино, минусом на землю, чтобы избежать перезагрузки нашего ардуино во время заливки скетча в ATTiny.

На 3 пин  ATTiny подключаем светодиод  и заливаем скетч

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int led = 3;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
 
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
int led = 3;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

Все готово!

PS. Если после прошивки у Вас не совпадают времена задержки с реальными то измените файл hardware/arduino/cores/arduino/wiring.c
вместо

1
2
3
4
5
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
ISR(TIM0_OVF_vect)
#else
ISR(TIMER0_OVF_vect)
#endif
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
ISR(TIM0_OVF_vect)
#else
ISR(TIMER0_OVF_vect)
#endif

напишите

1
2
3
4
5
6
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny13__)
 
ISR(TIM0_OVF_vect)
#else
ISR(TIMER0_OVF_vect)
#endif
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny13__)

ISR(TIM0_OVF_vect)
#else
ISR(TIMER0_OVF_vect)
#endif

Источник

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

Артём писал:
Предлагаю файл boards.txt поправить следующим образом:
attiny13.name=ATtiny13 (internal 1.2 MHz clock)
attiny13.bootloader.low_fuses=0x6a
attiny13.bootloader.high_fuses=0xff
attiny13.upload.maximum_size=1024
attiny13.build.mcu=attiny13
attiny13.build.f_cpu=1200000L
attiny13.build.core=arduino:arduino
attiny13.build.variant=tiny8

attiny13-10.name=ATtiny13 (internal 9.6 MHz clock)
attiny13-10.bootloader.low_fuses=0x7a
attiny13-10.bootloader.high_fuses=0xff
attiny13-10.upload.maximum_size=1024
attiny13-10.build.mcu=attiny13
attiny13-10.build.f_cpu=9600000L
attiny13-10.build.core=arduino:arduino
attiny13-10.build.variant=tiny8

После чего при выборе платы будут два пункта:
ATtiny13 (internal 1.2 MHz clock)
ATtiny13 (internal 9.6 MHz clock)

После выбора нужной конфигурации чипа, нужно нажать «записать загрузчик», чтобы очистить чип и правильно переписать фьюзы.

50 комментс для “Прошиваем ATTiny13 c помощью Arduino v1

  1. Ответить KazakOFF Авг 17, 2013 16:05

    Все сделал как у вас но диод не мигает а просто горит.

    лог прошивки.

    Размер скетча в двоичном коде: 638 байт (из 1 024 байт максимум)
    avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13
    avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13

  2. Ответить Slava Авг 18, 2013 11:18

    в файле hardware\tools\avr\etc\avrdude.conf
    найдите секцию # ATtiny13
    и после

    signature = 0x1e 0x90 0x07;

    добавьте

    pagel = 0x01;
    bs2 = 0x01;

    стандартная ошибка, може возникнуть при прошивке любого контроллера

  3. Ответить KazakOFF Авг 18, 2013 14:05

    Это не решает главную проблему.
    Диод не мигает а просто горит

  4. Ответить Slava Авг 18, 2013 14:15

    Странно, попробуйте изменить delay на более большое значение.
    Есть возможность сделать осциллограмму?

  5. Ответить KazakOFF Авг 18, 2013 14:23

    void loop() {
    digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
    delay(1); // wait for a second
    digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
    delay(1000); // wait for a second
    }

    Если так то он горит о тускло, очень странно.

  6. Ответить KazakOFF Авг 18, 2013 14:36

    Есть предположение что — то с средой потому что если загружаю голый С то все отлично работает.

  7. Ответить KazakOFF Авг 18, 2013 14:53

    Разобрался спасибо)

  8. Ответить Slava Авг 18, 2013 20:36

    Так в чем была причина?

  9. Ответить KazakOFF Авг 18, 2013 20:37

    Сделал что автор написал в PS.

  10. Ответить Slava Авг 18, 2013 20:44

    хорошо, что все получилось.

  11. Ответить Андрей Окт 30, 2013 05:03

    Очень полезная статья! Спасибо за детальные объяснения! А обязательно ли перед прошивкой выбирать пункт «Прошить бутлоадер»??? С его помощью, как я понял, записываются только значения FUSE битов?
    А по размеру программа, скомпилированный в Arduino, будет больше, обычного C кода?
    Подскажите пожалуйста, как будет выглядеть на C такой вот простенький код для Arduino:

    #define IN 0
    #define OUT 1

    void setup()
    {
    pinMode(OUT, OUTPUT);
    }

    void loop()
    {
    bool state = digitalRead(IN);
    static bool state_prev;
    if(state != state_prev)
    {
    digitalWrite(OUT, HIGH);
    delay(500);
    digitalWrite(OUT, LOW);
    state_prev = state;
    }
    }

    Заренее спасибо.

  12. Ответить Slava Окт 30, 2013 09:11

    «А обязательно ли перед прошивкой выбирать пункт «Прошить бутлоадер»»
    Хороший вопрос ))
    Если у вас Тинька с «коробки» то ничего больше делать не нужно. Если изменены фьюзы, то лучше воспользоваться данным пунктом.

    «А по размеру программа, скомпилированный в Arduino, будет больше, обычного C кода?»
    В некоторых случаях да.
    Например, для Arduino UNO:
    DDRB = B00111111
    Устанавливает ноги порта В с 0 по 5 как выход.
    На Ардуино выглядит так
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(12, OUTPUT);
    pinMode(13, OUTPUT);

  13. Ответить Konstantin Ноя 5, 2013 18:20

    Помогите, всё по инструкции, нет в выборе плат Attiny. может есть какой нюанс.

  14. Ответить Slava Ноя 5, 2013 20:48

    После распаковки Ардуино перезапускали?
    Проверьте путь к файлу «boards.txt» — «hardware\attiny\boards.txt»
    И еще, в именах папок не должно быть знаков тире «-«

  15. Ответить александр Ноя 11, 2013 10:39

    прошивал атьюни 13 получилось что у меня тоже диод просто горит а не мигает потом пытался опять перепрошить компелятор выдаёт avrdude:stk500_getsync():not in sync:resp=0*00

    • Ответить Алексей Ноя 16, 2014 02:07

      прошивал атьюни 13 получилось что у меня тоже диод просто горит а не мигает потом пытался опять перепрошить компелятор выдаёт avrdude:stk500_getsync():not in sync:resp=0*00

      Как решили проблему с прошивкой если не секрет?

  16. Ответить александр Ноя 11, 2013 11:16

    проблему с перепрошивкой решил. не решил проблему с диодом он всёровно горит.автор написал решение проблемы в PS.не могу понять где мне найти этот файл.

  17. Ответить александр Ноя 11, 2013 12:00

    я нашёл где находиться этот файл теперь не могу изменить его. говорит отказано в доступе

    • Ответить Slava Ноя 11, 2013 13:04

      закройте ардуино, и посмотрите свойства файла. Может у вас он только для чтения или прав нет на изменения файла.

  18. Ответить kuru Июн 6, 2014 12:45

    Автор, поправь в шапке в ПС не верно немного:
    Нужно так:

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

    ISR(TIM0_OVF_vect)
    #else
    ISR(TIMER0_OVF_vect)
    #endif

    После этого всё заработало

  19. Ответить Артём Июн 8, 2014 18:00

    Спасибо за Вашу статью, очень помогает!
    Есть один вопрос… Светодиод мигает, но задержка явно не секунда, моргает значительно быстрее? На Вашем видео собственно тоже самое. Так, где подвох?

  20. Ответить Артём Июн 8, 2014 18:24

    А загрузчик вообще не загружается в контроллер или он загружается вместе со скетчем? Что делает пункт «Записать загрузчик» — это влияет только на фьюз биты?

    • Ответить Slava Июн 8, 2014 19:10

      загрузчик загружается только когда выбираем «Записать загрузчик», при этом загрузчик загружается для мк выбранного в платах

  21. Ответить Артём Июн 9, 2014 16:02

    Я несколько раз все проверил, скопировал все как в PS, светодиод мигает раза в два быстрее чем нужно. Приблизительно как в первом видео. (

  22. Ответить Артём Июн 9, 2014 16:41

    В общем, поборол так… Вставил чип в программатор и выставил фьюз CKDIV8=0. Теперь светодиод мигает как надо.

  23. Ответить Артём Июн 9, 2014 16:49

    Это фьюз бит (деление частоты 9,6 МГц на 8) «стоял» на микроконтроллере из коробки по умолчанию. А когда в Arduino нажимаешь «записать загрузчик» это фьюз бит сбрасывается.

    • Ответить Slava Июн 9, 2014 19:59

      А зачем в Ардуино нажимать «Записать загрузчик» )))?
      В статье ни слова про это 😉

      • Ответить Артём Июн 10, 2014 02:24

        Ну, теперь то я это знаю. 🙂
        А до этого думал, что для работы микроконтроллера с Ардуино нужно обязательно записать Ардуиновский загрузчик.
        Но этот пункт все же может понадобиться если нужно очистить чип или переписать фьюзы: так для частоты 1,2 Мгц — нужно записать low_fuses=0x6a, а для частоты 9,6 Мгц — нужно записать low_fuses=0x7a!

  24. Ответить Артём Июн 9, 2014 16:59

    Нужно поправить:
    Открываем файл boards.txt ищем и меняем в нем
    attiny13.bootloader.low_fuses=0x6a

  25. Ответить Артём Июн 9, 2014 17:23

    А зачем нужна строчка «attiny13.build.f_cpu=1000000L»? Если быть точным, то сейчас мы имеем не 1МГц, а 9,6/8=1,2МГц (1200000L).

  26. Ответить Артём Июн 10, 2014 02:32

    Предлагаю файл boards.txt поправить следующим образом:
    attiny13.name=ATtiny13 (internal 1.2 MHz clock)
    attiny13.bootloader.low_fuses=0x6a
    attiny13.bootloader.high_fuses=0xff
    attiny13.upload.maximum_size=1024
    attiny13.build.mcu=attiny13
    attiny13.build.f_cpu=1200000L
    attiny13.build.core=arduino:arduino
    attiny13.build.variant=tiny8

    attiny13-10.name=ATtiny13 (internal 9.6 MHz clock)
    attiny13-10.bootloader.low_fuses=0x7a
    attiny13-10.bootloader.high_fuses=0xff
    attiny13-10.upload.maximum_size=1024
    attiny13-10.build.mcu=attiny13
    attiny13-10.build.f_cpu=9600000L
    attiny13-10.build.core=arduino:arduino
    attiny13-10.build.variant=tiny8

    После чего при выборе платы будут два пункта:
    ATtiny13 (internal 1.2 MHz clock)
    ATtiny13 (internal 9.6 MHz clock)

    После выбора нужной конфигурации чипа, нужно нажать «записать загрузчик», чтобы очистить чип и правильно переписать фьюзы.

  27. Ответить Тарас Мар 1, 2015 21:33

    Если правильно сделал, надо сначала залить скетч с Arduino ISP а потом выбрать плату Attiny 13, снова выбрать скетч blink и нажать кнопку залить?
    Все так сделал, платы пишет
    Selected board depends on ‘arduino’ core (not installed).

  28. Ответить Тарас Мар 1, 2015 22:31

    Кажется все сделал правильно, почему сообщает ошибку при прошивке tiny13
    Selected board depends on ‘arduino’ core (not installed).

  29. Ответить Тарас Мар 7, 2015 09:53

    После долгих попыток ак ничего и не получилось. Получал самые разные ошибки которые говорят что ардуино не связывается с контроллером. (типа stk500v1 receive message timeout или stk500 resp=0x00 resp=0x01 resp=0x15 not in sync)
    После чего решил копать к глубже и прочел инструкцию по avrdude.
    Подбором скорости и других параметров выяснил что надо правильно указать порт и скорость а также тип програматора. В avrdude есть програматоры arduino и stk500.
    Сначала у меня заработало с програматором arduino
    Atmega8 заработал со строкой (avrdude — p m8 -c arduino -P com4 -b 57600 -v -F)
    (Извините что не attiny, сделал shield ,потому что на макетной плате очень неудобно и меняю контроллеры один за другим.)
    Контроллер читался и писался и что-то отвечал. Но! … Позже выяснилось что это отвечает контроллер ардуинa atmega328p

  30. Ответить Тарас Мар 7, 2015 10:18

    так как он отвечал что прочитанный signature не такой как у atmega84 0x1e9307 а 0x1e950f. Вот оказывается что можно еще читать и контроллер программатора а не программируемый ) Вот как с этим бороться и читать то что нужно я еще не знаю, подскажите как его ткнуть куда надо.
    Но позже я еще начитавшись статей подключит к ресету адруно резистор на 120ом к +5В и конденсатор 10uf к земле. Ардуино перестал отвечать на скорости 57600 а ответил на 19200 со строкой avrdude -p m8 -c stk500v1 -p com4 -b 19200 -v -F.
    Контроллер правильно отвелил что его signature 0x1e9307
    Кстати можно указывать arduino, stk500, stk500v1 работает одинаково.
    Вот вопрос к занокам, как правильно делать, потому что как видимо еще не со всем разобрался, чтобы читать контроллер не ардуины а именно программируемый, какую скорость указывать, может быть надо битрейт, как подключать итд. почему так происходило ? Хочется добится стабильного прогнозируемого результата.

  31. Ответить Slava Мар 7, 2015 20:57

    Суть использования скетча Arduino ISP — это создание из ардуино программатора.

    Но для того чтобы при последующей заливкой скетча не перезаписать Arduino ISP обязательно необходимо изменить тип программатора на Arduino ISP и уже после выбирать тип платы прошиваемого контроллера.

  32. Ответить Виталий Дек 26, 2015 11:23

    Подскажите плиз, версия arduino 1.6.6 залил ISP, скачал архив распаковал в Documents\Arduino\hardware\own\attiny
    выбрал програматор arduino isp, выбрал плату attiny 13
    после чего пытаюсь зашить блинк, компилятор отвечает

    Плата own:attiny:attiny13-10 не устанавливает свойство ‘build.board’. Автоматически выбрано: ATTINY_ATTINY13-10
    Плата own:attiny:attiny13 не устанавливает свойство ‘build.board’. Автоматически выбрано: ATTINY_ATTINY13
    exec: «-w»: executable file not found in %PATH%
    Ошибка компиляции.

    Что делаю не так?

  33. Ответить Виталий Дек 29, 2015 09:22

    Спасибо, действительно проблема оказалась с версией 1.6.6

  34. Ответить фдучун Сен 28, 2016 23:33

    а как hex файлик через ардуино в атини?

  35. Ответить Илья Янв 21, 2017 02:02

    Доброго времени суток.
    Спасибо за очень интересную статью.
    С ардуино я на «вы».
    У меня такой вопрос, после того как мк прошит, и ардуина(у меня нано версии 3)
    больше не нужна как програматор, что нужно сделать, чтобы снова пользоватся ей как «исполняющим» уст-вом?
    Просто залить нужный скетч?
    И если, что то сделать не так( по невнимательности или в целях научного тыка), каков шанс окерпичить саму ардуино?
    Простите за глупые вопросы.

    • Ответить Slava Янв 21, 2017 11:22

      1. Самой Ардуино ничего не будет.
      2. Чтобы Ардуиной пользоваться — просто залейте в нее скетч

      Здесь версия — это версия Среды разработки.

  36. Ответить Евгений Май 13, 2017 18:35

    Прочитал всю статью и коменты к ним. все получилось после плясок с бубном.
    Кто то писал что время не совпадает. Я так же столкнулся с этой проблемой. Замерил 1000 мс = 1380 мс.
    Так и не получилось ее решить что б 1000мс=1000мс.

Добавить комментарий