Всё началось с микросхемы ATtiny13, очень захотелось её освоить и самостоятельно запрограммировать собственноручно написанной программой. В статье будут упомянуты разные способы оживить ATtiny13.
Речь пойдёт о моём начинающем освоении программировании микроконтроллеров, в первый раз всё таки, статья написана только для новичков! Опытных программистов прошу меня не ругать, а делать комментарии и пояснения к моим ошибкам. Тут будут все мои неудачи и исправления их, которые я совершил в программировании. Все фото и файлы взяты из интернета, прошу проверять всё на зловредный код. Все платы и микросхемы были заказаны с Алиэкспресс, куда ж без него то. И самое главное: работать будем только с портами USB, в Windows XP3.
Способ №1
Программируем микросхему ATtiny13 с помощью Arduino UNO.
Пробуем запрограммировать Arduino UNO R3 CH340G
С начало устанавливаем программу Arduino ID v1.8.9, или любую другую версию.
Затем устанавливаем драйвер CH341SER для Arduino UNO
Настройки программы Arduino ID v1.8.9
Инструменты -->> Плата -->> "Arduino/Genuino UNO"
Инструменты -->> Порт: "ваш порт"
Инструменты -->> Программатор: "AVRISP mkll"
Файл -->> новый -->> и вставляем код ниже.
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
delay(500);
digitalWrite(1, HIGH);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(0, LOW);
delay(500);
digitalWrite(1, LOW);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
Загрузка прошла без ошибок, в результате на плате Arduino UNO заработали 3 встроенные красных светодиода.
Как видим в плате присутствуют 13 выходов, если не ошибаюсь, подробнее в даташит, честное слово, я только мельком взглянул даташит, очень уж хотелось побыстрей начать программировать.
Прошивка микросхемы ATtiny13
Превращаем Arduino UNO в программатор.
- Запускаем Arduino ID v1.8.9, или любую другую версию.
- Убеждаемся, что:
Инструменты => Плата => Arduino UNO,
Инструменты => Потр => что-то там,
Инструменты => Программатор => AVRISP mkll
- Открываем скетч программатора:
Файл => Примеры => ArduinoISP
- Загружаем ArduinoISP в Arduino UNO.
- Всё!! Arduino UNO стал ISP программатором.
Пробовал сделать программатор в других версиях программы Arduino ID, результат действий.
Arduino_ID_v1.0.4
В версии Arduino_ID_v1.0.4 ArduinoISP отсутствует!!!
Нужно загрузить библиотеку ArduinoISP.
Arduino_ID_v1.0.5-r2
Файл -->> примеры -->> ArduinoISP
Инструменты -->> Плата -->> Arduino UNO
Инструменты -->> Порт: "ваш порт"
Инструменты -->> Программатор: "AVRISP mkll"
Версия ArduinoISP version 04m3, 23 July 2011 Randall Bohn
Ошибка при загрузке программы: avrdude: stk500_getsync(): not in sync: resp=0x00
Отключил всё от выходов и входов Arduino UNO, ошибка пропала, программа загрузилась хорошо.
Arduino_ID_v1.6.5-r5
Файл -->> образцы -->> ArduinoISP
Инструменты -->> Плата -->> "Arduino/Genuino UNO"
Инструменты -->> Порт: "ваш порт"
Инструменты -->> Программатор: "AVRISP mkll"
Версия ArduinoISP version 04m3, 23 July 2011 Randall Bohn
Загрузка прошла без ошибок.
Arduino_ID_v1.6.8
Файл -->> примеры -->> ArduinoISP
Инструменты -->> Плата -->> "Arduino/Genuino UNO"
Инструменты -->> Порт: "ваш порт"
Инструменты -->> Программатор: "AVRISP mkll"
Загрузка прошла без ошибок.
Arduino_ID_v1.8.5
Файл -->> примеры -->> ArduinoISP
Инструменты -->> Плата -->> "Arduino/Genuino UNO"
Инструменты -->> Порт: "ваш порт"
Инструменты -->> Программатор: "AVRISP mkll"
Выскочила красная надпись:
Archiving built core (caching) in: C:\DOCUME~1\23A4~1\LOCALS~1\Temp\
Но это не ошибка, а информационное сообщение "Сохранение скомпилированного ядра (кэширование) в....(здесь директория)
Arduino_ID_v1.8.8
Файл -->> примеры -->> ArduinoISP
Инструменты -->> Плата -->> "Arduino/Genuino UNO"
Инструменты -->> Порт: "ваш порт"
Инструменты -->> Программатор: "AVRISP mkll"
Загрузка прошла без ошибок.
Пробуем прошить ATtiny13
Микросхему ATtiny13 подключаем вот по такой схеме к Arduino UNO
Программа Arduino_ID_v1.8.9
Программатор Arduino UNO
Файл -->> Настройки -->> Дополнительные ссылки для менеджера плат:
Вставляем в поле ссылку ниже.
https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.jso n
Нажать кнопку "ОК"
Инструменты -->> Плата -->> Менеджер плат -->>
И в самом низу листа выбрал:
DIY ATtiny by James Sleeman, http://spat4cs.gogo.co.nz/ версия 2018.9.9
Платы в данном пакете:
ATtiny4, ATtiny5, ATtiny9, ATtiny10, ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, and variants thereof
Платы загрузились с интернета в папку:
C:\Documents and Settings\пользователь\Local Settings\Application Data\Arduino15
Если что, то папку с платами ATtiny13 можно распаковать туда же, без установки, все платы будут работать так-же, архив лежит ниже по ссылке.
Разные версии cores13, для прошивки микросхемы ATtiny13 и не только.
Настройки для ATtiny13:
Инструменты -->> Плата: ATtiny13
Инструменты -->> Processor Version: "ATtiny13a"
Инструменты -->> Порт: "ваш порт"
Инструменты -->> Программатор: "Arduino as ISP"
Загрузил пробный скетч:
int led = 4;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(5);
digitalWrite(led, LOW);
delay(5); // wait for a second
}
Такой скетч тоже работает:
void setup() {
pinMode(4, OUTPUT);
}
void loop() {
digitalWrite(4, HIGH);
delay(555);
digitalWrite(4, LOW);
delay(555);
}
Загрузка прошла сразу и без ошибок.
Что же среда делает при нажатии на кнопку «Записать загрузчик»?
Arduino IDE в данном случае просто выставляет нужные фьюзы микроконтроллера.
К примеру, мне нужно, чтобы ATtiny13 работал на частоте в 4.8 мГц, я выбираю нужную мне частоту и только один раз жму кнопку «Записать загрузчик» — всё. Теперь микроконтроллер будет всегда работать на заданной частоте, если будет нужно изменить частоту опять — проделываем описанную выше процедуру.
Сразу скажу, что рост частоты приведёт за собой рост потребления контроллера, чем чаще переключаются транзисторы в микроконтроллере тем больше он потребляет.
Для каких-то там мигалок, я считаю, выполнение 1.2 миллиона инструкций будет с лихвой, да и на такой частоте микроконтроллер потребляет около 1 миллиампера.
Прошиваем ATtiny13 с помощью программатора USBASP
Подключаем ATtiny13 к программатору вот по такой схеме.
Настройки для прошивки ATtiny13 программатором USBASP в программе Arduino ID v1.8.9
Инструменты -->> Плата: ATtiny13
Инструменты -->> Порт: "COM3"
Инструменты -->> Программатор: "USBasp"
Все версии программы Arduino ID успешно прошивают ATtiny13, при установке нужных библиотек в программу Arduino ID,
в нашем случае для ATtiny13.
Однако нужно помнить, что должны быть установлены свежие драйверы для программатора USBASP
А если программатор новый(только пришёл с али), то нужно его ещё прошить новой прошивкой для корректной работы.
Прошивка находится в архиве, имя usbasp.atmega8.2011-05-28.hex
Если хотите знать как обновить прошивку USBasp, пишите в комментариях, добавлю по мере возможности.
Не забываем ещё про перемычку в программаторе USBasp.
Перемычка JP1: питание программируемой микросхемы.
Перемычка JP3: Обязательно поставить, с этой перемычкой работают частоты - 9.6/4.3/1.2/
скриншот настроек в программе Arduino ID.
Без всего этого удачных прошивок может и не быть.
Прошиваем ATtiny13 с помощью программы SinaProg v2.1.1.Rus
Программатор USBASP.
Перемычка JP3: Обязательно поставить.
Скриншот настроек программы.
Фьюзы ни какие не трогаем, всё по умолчанию
Прекрасно зашиваются файлы *.hex
Прошиваем ATtiny13 с помощью программы AVRDude Prog v3.3
Программатор USBASP.
Перемычка JP3: Обязательно поставить.
Скриншот настроек программы.
Фьюзы ни какие не трогаем, всё по умолчанию
Прекрасно зашиваются файлы *.hex
Ну и фото, где какие перемычки находятся.
------------------------------------------------------------------------------
Осталось за малым, изучить по возможности код программирования :)