Ничего не найдено :(
    В гостях у Самоделкина! » Темы » Советы » Записываем программу в Attiny85

    Записываем программу в Attiny85

    Записываем программу в Attiny85

    Май 2020 года. Самоизоляция. Свободное время. Вспомнил старое увлечение.

    Очень давно хотел освоить микроконтроллеры Atmel Attiny 85. Мастерил программатор на основе этого же микроконтроллера, но что-то не получалось. На самоизоляции почитал статьи на эту тему. Ребята не сидели без дела. Развитие бесплатной системы разработки программного обеспечения, технических средств для работы с микроконтроллерами фирмы Atmel не остановилось. Бойцы этого фронта приходят и уходят, а результаты остаются в сети. Применение этих знаний осложняется отсутствием стандартизации. Поэтому постараюсь подробнее рассказать о своем опыте.

    В сети есть проекты, разрабатываемые радиолюбителями. Они делятся с нами своими идеями, технической документацией, файлами для прошивки (записи) микроконтроллеров, которые они используют в своих проектах. Для повторения (изготовления) этих проектов (изделий) необходимо записать в микроконтроллер программу, которая будет управлять его работой в изделии.

    Давайте разберёмся, что нужно записать в микроконтроллер для его правильной работы в изделии. Сделать это необходимо до момента принятия решения на повторение проекта, так как иногда авторы забывают важные моменты конфигурирования (настройки) микроконтроллера. У них все работает, а мы начинаем повторять, но у нас не получается. Автор занялся другими проектами, с ним нет связи, ему уже трудно вспомнить о своем старом проекте. Ситуация трудная, фактически тупиковая.

    Итак, для правильной работы изделия микроконтроллер необходимо подготовить (настроить).
    Для настройки микроконтроллера для конкретного проекта требуется:

    1. Записать в память программ (flash) программу, она присутствует в технической документации в виде файла с расширением hex (например, такой timer.hex).

    2. Записать в энергонезависимую память (EEPROM) данные (постоянные величины, которые программа будет считывать при необходимости), они присутствуют в технической документации в виде файла с расширением eep (например, такой timer.eep). В простых проектах часто в энергонезависимую память ничего не записывают.

    3. Включить, выключить или изменить режим работы электронных устройств, находящихся в микроконтроллере. Решается эта задача изменением специальных ячеек памяти (Fuse) программ, которые нельзя изменить при записи файла с расширением hex.

    4. Разрешить или запретить считывание, изменение памяти программ. Решается эта задача изменением специальных ячеек памяти (Lock Bits) программ, которые нельзя изменить при записи файла с расширением hex.

    5. Система разработки программ для плат семейства Arduino - Arduino IDE.

    6. Программатор – электронную схему (Hard). Я буду использовать плату Arduino China (CH340). На сайте - https://github.com/AndrewBiz/avr-programmer-info/blob/master/docs/test-AVR-programmers-RU.md опубликовано следующее заявление: «Замечательно прошивает, не требует особых телодвиждений, работает в режиме моста UART-Host. В качестве USB-UART переходника используется китайский чип CH340G. Работает он вполне надежно, при этом на порядок дешевле варианта m16u2 (Arduino Original (m16u2))». Для его работы в качестве программатора, скомпилируем скетч ArduinoISP (входит в примеры Arduino IDE) автора Randall Bohn и запишем результат в микроконтроллер atmega328 платы Arduino China (CH340). Как записано в самом скетче: «Этот скетч превращает Arduino в AVRISP». У нас есть программатор AVRISP (В статьях в сети его называют иногда не так).

    Перевод заголовка скетча ArduinoISP.
    ArduinoISP
    // Copyright (c) 2008-2011 Randall Bohn
    // If you require a license, see
    // http://www.opensource.org/licenses/bsd-license.php
    //
    // This sketch turns the Arduino into a AVRISP using the following Arduino pins:
    //
    // Pin 10 is used to reset the target microcontroller.
    //
    // By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate
    // with the target. On all Arduinos, these pins can be found
    // on the ICSP/SPI header:
    //
    //               MISO °. . 5V (!) Avoid this pin on Due, Zero...
    //               SCK   . . MOSI
    //                     . . GND
    //
    	ArduinoISP
    // Copyright (c) 2008-2011 Randall Bohn
    // Если вам требуется лицензия, см. раздел
    // http://www.opensource.org/licenses/bsd-license.php
    //
    // Этот скетч превращает Arduino в AVRISP, используя следующие контакты Arduino:
    //
    // Pin 10 используется для сброса целевого микроконтроллера.
    //
    // По умолчанию для связи используются аппаратные контакты SPI MISO, MOSI и SCK
    // с целью. На всех Ардуино можно найти эти выводы
    // на заголовке ICSP/SPI:
    //
    // MISO °. . 5В (!) Избегайте этого вывода на Due, Zero...
    //               SCK   . . MOSI
    //                     . . GND
    //


    7. Программа, которая будет управлять нашим программатором AVRISP.
    Я выбрал программу SinaProg 2.1.1 SinaProg - это графическая оболочка для программы AVRdude, с простым и функциональным AVR fuse-калькулятором. SinaProg является бесплатным и свободно распространяется. Данная утилита портативная, то есть работает с любого места без установки. Помимо собственных файлов она включает в себя программу AVRdude. SinaProg создана иранскими ребятами, которые занимаются сейчас другими делами. Если SinaProg не запускается, то возможно у вас в системе не установлена программа NET Framework для windows от Microsoft, поэтому потребуется установить его.

    6. Соединительные провода.

    7. Макетная плата.

    8. Кабель USB.

    Используя, Фото 0_1 собираю схему программирования микроконтроллера ATtiny85 с помощью платы Arduino China (CH340) превращенной с помощью скетча ArduinoISP в программатором AVRISP, макетной платы и соединительных проводов с наконечниками.


    Фото 0_1

    Фото 0_2

    Приступаем к освоению программы управления программаторами SinaProg и записи управляющей программы в микроконтроллер Attiny85. При первом запуске SinaProg выставляю параметры программатора – AVRISP, COM16 (моя плата Arduino China (CH340) на моем ПК с операционной системой Windows XP определяется на Сom16), BR 19200. На вкладке Device стоял микроконтроллер ATtiny84, я нажал на кнопку Searh (поиск). Все прошло хорошо, программа правильно определила микроконтроллер ATtiny85 и на вкладке Device выставила ATtiny85. SinaProg сообщила так же: «У микросхемы, которую я определяю, персональный идентификационный номер равен 0x1e930b, а у микроконтроллера ATtiny84, который был выставлен в окне Device, номер равен 0x1e930C. Для автоматического определения микроконтроллеров нажимайте на кнопку Searh два раза». Перевод смысловой, не дословный.


    Проблемы нарисовались при нажатии на кнопку Advanced. Окна программы lock Bits, Calibration (калибровочный коэффициент), High Fuse, Low Fuse, Ext. Fuse прозрачные (неактивные), то есть программа не может работать с этими объектами.


    После долгих поисков, чтений статей пришлось дописывать файл avrdude.conf из состава SinaProg 2.1.1 для полной поддержки микроконтроллера ATtiny85.

    Скачать файл avrdude.conf с поддержкой ATtiny85
    avrdude_conf.rar [18,93 Kb] (скачиваний: 18)



    После замены файла avrdude.conf, SinaProg 2.1.1 считала lock Bits, Calibration (калибровочный коэффициент), High Fuse, Low Fuse, Ext. Fuse.


    Работу SinaProg 2.1.1 в Windows XP (32bit) c микроконтроллера ATtiny85 я проверил.
    У меня есть ПК с операционной системой Windows 7 (32bit). Я читал о том, что SinaProg 2.1.1 не работает на системах с Windows 7.
    Я все же решил проверить работу SinaProg 2.1.1 на системе с Windows 7. А также заодно проверить работу Arduino China (CH340) как программатора AVRISP на системе, где не установлена Arduino IDE.

    Я подключил кабелем USB Arduino China (CH340) - программатор AVRISP к ПК с операционной системой Windows 7 (32bit), и в диспетчере устройств появилось устройство USB2.0-Serial cо знаком !. Система требует установить драйвер.



    Устанавливаем драйвер: разархивируем файл CH341SER.rar, запускаем setup, затем install. Скачать файл CH341SER.rar
    ch341ser.rar [134,19 Kb] (скачиваний: 10)





    Установка драйвера прошла успешно, и в диспетчере устройств появилось новое рабочее устройство USB-SERIAL CH340 (COM5) - Arduino China (CH340) - программатор AVRISP).


    Далее я настроил в свойствах устройства SERIAL CH340 (COM5), скорость передачи данных – 19200 бит в секунду.


    К моему удивлению SinaProg 2.1.1 запустилась, но я не смог выставить COM5. Его не было в выпадающем списке. Там были только COM1, COM2, COM3, COM4, LTP, USB. При установке USB не заработало. Но тут я решил посмотреть каталог программы SinaProg 2.1.1 и обнаружил там файл Port.txt


    Посмотрев содержимое файла Port.txt, я дописал в него строку COM5 com5 и сохранил его.


    И случилось чудо. Я смог настроить SinaProg 2.1.1 (см Фото 13 окно Programmer). SinaProg 2.1.1 определила микроконтроллер ATtiny85 после двойного нажатия кнопки Search,


    Фото 13

    SinaProg 2.1.1 считала lock Bits, Calibration (калибровочный коэффициент), High Fuse, Low Fuse, Ext. Fuse.


    Для полной уверенности я записал в микроконтроллер ATtiny85 файл timer.hex, списал данные с ATtiny85 в файл timer2.hex , а затем переключился к ПК с операционной системой Windows XP и считал данные с ATtiny85 в файл timer3.hex. Сравнил файлы timer2.hex и timer3.hex - они оказались одинаковые.


    Затем я переключился к ПК с операционной системой Windows 7 и стер программу (Chip Erase) и считал память Flash в файл timer3.hex, он оказался чистым.


    Скачать файл архива файл timer.rar с файлами timer.hex, timer2.hex, timer3.hex
    timer.rar [15,83 Kb] (скачиваний: 14)


    В итоге я получил возможность работать с микроконтроллером ATtiny85 на ПК с операционными системами Windows XP и Windows 7. И могу утверждать, что программа SinaProg 2.1.1 работает на ПК с операционной системой Windows 7 (32bit). Также хочется сказать спасибо создателям хорошей программы SinaProg 2.1.1.

    Теперь я задумался, а не сделать ли мне платку (шильд) типа такой, кtimerак на Фото 0_3, которая будет сверху устанавливаться на мою Arduino China (CH340) и подключаться к ее разъёмам.


    Фото 0_3

    Пример применения.
    Предположим, я хочу собрать Программатор vusbtiny.
    В технической документации я нахожу файл - vusbtiny85.hex, файла vusbtiny85.eep нет. Информация по фьюзам оказалась в виде графического файла. Скачать файл vusbtiny85.rar с файлом vusbtiny85.hex
    vusbtiny85.rar [3,11 Kb] (скачиваний: 14)



    Записываем файл - vusbtiny85.hex в микроконтроллер ATtiny85.


    Теперь попробуем поработать с фьюзами. На вкладке Advanced в окне Low Fuse меняем 62 на E1 и нажимаем кнопку Write, а затем Read. Значение фьюза E1 не меняется, а значит, Low Fuse прописался.

    Теперь при изменении Hign Fuse c DF на 5D я потеряю возможность моего программатора к работе с этим микроконтроллёром, т.к. мы изменим назначения выводов микроконтроллёра. Так и произошло. Теперь с этим микроконтроллёром можно будет работать только в режиме High Voltage Serial Programming.

    Но об этом в следующей статье. А в технической документации на программатор vusbtiny указано: «Далее необходимо поменять фьюзы так, чтобы firmware могло использовать вывод 1 микроконтроллера (который пока по умолчанию используется для сброса). Для этого выполните команду:

    avrdude -c usbtiny -p t45 -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m


    Внимание! Эта команда запретит дальнейшую перепрошивку запрограммированного чипа, так как вывод 1 перестанет работать как вход сброса. Чтобы стереть/перепрограммировать микроконтроллер, нужно использовать специальный высоковольтный программатор HVSP. Только им можно восстановить фьюзы, чтобы чип снова программировался по ISP».



    Но теперь у меня есть микроконтроллер ATtiny85, подготовленный для работы в программаторе vusbtiny.



    Скачать файл с SinaProg 2.1.1. rar с программой SinaProg 2.1.1
    sinaprog-2_1_1.rar [3,32 Mb] (скачиваний: 19)


    Удачи!

    Восстанавливаем работоспособность ATtiny85 после неудачной прошивки. Шильд для изменения фьюзов ATtiny85

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

    8 комментариев
    Мальнесса
    R555,
    Не хотели, но им пришлось dance2
    R555
    Мальнесса,
    А мне нужно было всего лишь перекрасить некоторые регионы России в другой цвет, и чтоб они продолжали менять цвет при наведении мыши.
    А если они не захотят менять свой цвет по одному велению вашего курсора? blum3
    Кто не ошибается, тот не делает ничего.
    Мальнесса
    feonor12,
    Ну вот почему подразумевается? Зачем? Как это помогает продвигать свои труды тем, кто сведущ в электронике? Писать исключительно для таких же сведущих? А как же интересующиеся, но пока не сведущие?

    Я недавно простейшую вещь не могла сделать с плагином на WordPress. Его авторы наверно подразумевали, что их плагин вставки векторной карты России будут только сведущие в веб-программировании использовать. Хотя действительно сведущие наверно сами себе плагин запилят и не только.

    А мне нужно было всего лишь перекрасить некоторые регионы России в другой цвет, и чтоб они продолжали менять цвет при наведении мыши.

    Так я почти неделю убила на то, чтоб разобраться. Нет, я конечно безумно горда собой, что сумела. Но издателям плагина всё-таки нужно подумать, для кого их плагин полезен прежде всего. Для несведущих же, правильно?)

    Так и тут, это же обучалка? Или все-таки нет? Мне интересна конечная цель проекта всегда)
    feonor12
    Мальнесса,
    Подразумевается, что человек собравшийся прошивать МК хоть как-то сведущ в электронике и знает, зачем ему это нужно.
    Цитата: Мальнесса
    Смогу я, например, сделать штучку, которая поливает цветы в мое отсутствие, с измерителем влажности почвы?

    Как два пальца обо...да, легко, в интернете полно таких проектов, в том числе на ардуино, для прошивки которой достаточно пару кнопок на компьютере нажать. Ищите "автополив растений на ардуино".
    Мальнесса
    И на небольшой микросхемке с десятком дополнительных деталей можно замутить крутейший девайс, который не купишь в магазине.


    Вот, крутого описания потенциального конечного продукта не хватает в таких обучалках.

    Не спорю, это огромный труд. Но он понятен только тем, кто и так разбирается.

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

    Ну по крайней мере меня это бы смотивировало разобраться) я не совсем глупа и могу разобраться, когда захочу)

    Я не программист и не техник, не могу представить, какое это крутое устройство, которое не купишь в магазине)

    Смогу я, например, сделать штучку, которая поливает цветы в мое отсутствие, с измерителем влажности почвы? Или это из области фантастики?
    R555
    Мальнесса,
    Написано интересное начало, я даже внимательно прочитала где-то 25%)) но дальше пошла такая техническая заумь, что я сдалась)
    А я, хоть и не являюсь поклонником Arduino и AVR, но прочитал статью внимательно полностью. Автор очень подробно всё пояснил, сопровождая скриншотами, а это требует определённых усилий, что заслуживает внимания и уважения. Сам я приверженец микроконтроллеров PIC, совсем недавно показывал свой самодельный, "простенький" xaxa (состоящий, ну так, деталей из 500 good ))) программатор.
    И написал, что программирование, в целом, очень схоже с другими микроконтроллерами. И на небольшой микросхемке с десятком дополнительных деталей можно замутить крутейший девайс, который не купишь в магазине. И работать будет, в большинстве случаев, быстрее и экономичней, чем смартфон с его операционкой или комп. 1 мильён простых операций в секунду-легко! smoke
    Кто не ошибается, тот не делает ничего.
    tot.gnom Автор
    Это реальная возможность записать программу в микроконтроллер. И сделать электронное устройство, которого не купишь в магазине. А оно тебе очень помогло бы. Например устройство с несколькими точными термометрами и оно записывает данные температуры на CD карту и оно ещё может управлять вентиляторами, задвижками для воздуха. А еще есть дом у которого есть устройство которое преобразует солнечное излучение в тепло и аккумулятор тепла. Солнце греет вентиляторы гонят теплый воздух в аккумулятор тепла, солнце село, термометры показали устройство переключило вентиляторы, они забирают аккумулятора тепла и в доме тепло. Система умный дом. Теплый пол. Суточный таймер мне приглянулся на этой микросхеме. Что бы сделать, надо прошить программу. Несколько лет назад я мучился с программатором vusbtiny, сейчас повозился понял, что полуживая идея, но для этого надо было знать, что я правильно (вернее программатор) прошиваю программу.
    То что описано в статье - это инструмент, хороший.
    Удачи!
    Мальнесса
    Написано интересное начало, я даже внимательно прочитала где-то 25%)) но дальше пошла такая техническая заумь, что я сдалась)

    Очень понравилось про дописывание компорта в документ, остроумно)

    Только я не поняла, зачем все это, какая конечная цель?

    Если ее знать, интереснее читать;) может это устройство какое-то полезное?

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Опрос
    А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

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

    Все комментарии