AvrStudio 4. Библиотека для AVR. Модуль для I2C или TWI
Введение
Для Arduino написано много библиотек бери да пользуйся, не исключение и шина I 2 C. А если посмотреть в сторону тех кто пишет на AvrStudio, то будет голое поле. Библиотеку писал на основе открытой библиотеки которую я скачал с сайта http://www.procyonengineering.com.
Информации про интерфейс в интернете много, а библиотек для работы с ним нет. Только GitHub в помощь.
Несколько слов про интерфейс. Интерфейс, по-философии, чем-то похож на интерфейс 1-wire. Только для 1-wire синхронизация идет по времени и сигналам, а тут только по отдельной линии. Привожу таблицу сравнения
I2C | 1-Wire | |
сброс линии | нет | есть |
стартовый бит | есть | есть |
адрес устройства | есть | есть |
Сигнал присутствия | есть | есть |
стоповый бит | есть | нет |
Лично для меня реализация интерфейса показалась достаточно сложной, объемной. Плюс данного интерфейса высокая скорость и возможность коммуникации между многими устройствами, что является не маловажным. Своего рода TCP/IP для мира микроконтроллеров. Можете посмотреть ради интереса фолианты по TCP/IP.
Подключение библиотеки
Перейдем к цели, а именно рассказать про использование библиотеки. Библиотека состоит из 2 файлов: i2c.h и i2c.c.
1. В начале необходимо скинуть эти 2 файла в папку с проектом.
2. Подключить в главном си-файле заголовочный файл: #include
3. Затем необходимо открыть опции конфигурирования проекта: Project—>Configuration Option
3.2. Затем необходимо Включить корневую папку проекта в поиск Стандартных библиотек. Для этого во вкладке Include Directories нажимают кнопку New(Insert) и выбирают папку проекта.
3.3. Последний этап это включение файла i2c.c в проект. Для этого в дереве проекта на папке Source File кликают 2 раза ПКМ и выбирают пункт Add Existing File(s) и добавляют файл i2c.c. После этого проект должен собраться.
Библиотека может работать в режиме Мастер или Slave. В библиотеке можно подключить/отключить любой режим.
По-умолчанию библиотека собирается в режиме Master.
Описание концепции работы библиотеки
Иногда скачаешь библиотеку, и думаешь как ей пользоваться? А потом решаешь свою написать. Поэтому опишу почему пришел к такой структуре библиотеки. Библиотеку начал писать для работы с LCD2004 по I 2 C. Разных чипов работающих по I 2 C навалом, но все они работают по принципу EEPROM памяти. В начале Мастер посылает пакет в котором записывает в один или два байта адрес ячейки с которой хочет начать чтение данных в памяти, а затем Начинает их читать. Интерфейс я бы сказал ОЧЕНЬ ВЕЖЛИВЫЙ, это тебе не UART. Хочу передаю, хочу не передаю и ответственности за приемник никакой. Тут же Мастер интересуется кому посылает, готов сам откликнуться на чужую нужду и бросить свое дело. Ведомый же всегда скажет если дома, если есть место честно об этом скажет, а если не может больше принять данных, то тоже сообщит.
Рассмотрим запись и чтение данных из EEPROM памяти at24c512. Схема подключения представлена на рисунке.
В данном случае at24c512 имеет адрес устройства 0b1010000. Дебаггер для I2C присоединил для удобства. В таблице привожу общение контроллера с памятью. Само общение можно посмотреть с помощью Дебаггера. Каждая строка в таблице коммуникации это попадание в прерывание для Master.
Вот так выглядит таблица ячеек памяти для at24c512 после записи.
Источник
Atmel Studio и программатор USBasp
В прошлой статье я уже писал, что совместно с программой Atmel Studio мы будем использовать простой и недорогой программатор USBasp и программу для прошивки микроконтроллеров AVRDUDE_Prog. Конечно, если у вас есть программатор, совместимый с Atmel Studio, вы сможете пользоваться и им.
Эта статья для тех, кто имеет только USBasp (хотя и не только для них).
Ближайший родственник USBasp программатора, который совместим с Atmel Studio — STK500. Есть программаторы несколько сложнее USBasp — USBisp, которые можно прошить прошивкой от STK500, но у нас такой возможности нет. Мы можем только, для удобства работы с программой AVRDUDE_Prog интегрировать ее в меню Atmel Studio (вставим в меню кнопку вызова программы). Так как Atmel Studio у нас уже имеет русский интерфейс, то картинок уже не будет.
Итак, вставляем кнопку вызова программы AVRDUDE_Prog в меню:
1. Выбираем меню «Сервис»
2. В открывшемся окне выбираем «Внешние инструменты»
3. В открывшемся окне, в графе «Название» прописываем USBasp, а в графе «Команда» указываем путь до файла запуска программы AVRDUDE_Prog и нажимаем ОК. Теперь, если снова открыть меню «Сервис», мы увидим перед «внешними инструментами» наш USBasp. Можно программу запускать и отсюда.
4. Выбираем меню «Сервис» а в нем «настройка»
5. В открывшемся окне будет два подраздела «Панели инструментов» и «Команды». В «панели инструментов» нажимаем «Создать». В появившемся окне прописываем имя панели инструментов — USBasp и ОК. Сразу увидите как, среди прочего, появилась новая панель USBasp.
6. Переходим в подраздел «Команды» и ставим галочку (точку) напротив надписи «Панель инструментов». В «панели инструментов» (в окне) выбираем USBasp и ОК. Далее нажимаем «Добавить команду». В открывшемся окне выбираем категорию «Сервис». В открывшемся окне «Команды» выбираем «Внешняя команда 1» и ОК. Закрываем окно «Настроить».
После столь долгого пути и многих манипуляций, в самом конце меню (в 1 или 2 строке) вы должны увидеть кнопку «USBasp». Но можете и не увидеть, все зависит от разрешения вашего экрана, она может быть спрятана внутри раскрывающегося меню
Ищем, где находится наша кнопка
И перетягиваем раскрывающееся меню на вторую строчку
Теперь мы можем запускать программу AVERDUDEProg из меню Atmel Studio.
Таким же образом можно прописать и любую другую программу
Предыдущие статьи
Проблемы, связанные с русификацией и русификация интерфейса программы Atmel Studio 7
Published by: Мир Микроконтроллеров
Date Published: 10/16/2016
____________________________________________________________________
Нам нужен бесконечный цикл. Помещаем наши строчки PORTC = 0; __delay_cycles(4000000); PORTC = 255; __delay_cycles(4000000);внутрь бесконечного цикла, и вот что в итоге должно получиться://первая прога на Си для AVR#include <ioavr.h>#include <intrinsics.h>int main(void){ DDRC = 255; while(1){ PORTC = 0; __delay_cycles(4000000); PORTC = 255; __delay_cycles(4000000); } return 0;} Если у вас другой результат – пройдитесь снова по тексту. Может, я что-то полохо объяснил, может, вы что-то плохо поняли. Кликаем Make на панели с кнопками (можно нажать F7). Если все сделано правильно, IAR откомпилирует и соберет проект, а внизу откроется окно Messages, в котором будет написано:…..Total number of errors: 0Total number of warnings: 1 Все прошло без ошибок, но компилер выдал warning — statement is unreachable. Ничего страшного – он просто сообщает нам, что функция main() никогда не возвратит значение. Просто у нас в программе бесконечный цикл и микроконтроллер при работе никогда не дойдет до строчки return 0. Ищем папку проекта на жестком диске. Там, в директории Release лежит файл прошивки led.hex. Грузим в микроконтроллер… Светодиод заморгал? Отлично. А теперь легко проверить правильно ли работает наша программа. Берем механические часы и смотрим, моргает ли светодиод в такт с секундной стрелкой. У меня моргает, а у вас?
Русификация Atmel Studio
Вы можете скачать бесплатный WINAVR, для этого после установки студии нужно проинсталлировать его.
Обратите внимание! Лучше это делать только после установки AVR studio 4 и других версий. Долгое время фигурировала AVR studio 4 (на фото выше)
Многие разработчики микроконтроллеров сталкивались с ней. Позже IDE модернизировали до AVR studio 5. Кроме интерфейса, особых изменений не было, а уже потом компания разработчик сделала ребрендинг продукта и изменила название на Atmel studio 6
Долгое время фигурировала AVR studio 4 (на фото выше). Многие разработчики микроконтроллеров сталкивались с ней. Позже IDE модернизировали до AVR studio 5. Кроме интерфейса, особых изменений не было, а уже потом компания разработчик сделала ребрендинг продукта и изменила название на Atmel studio 6.
Среда AVR studio 5 поддерживала следующие микроконтроллеры:
Atmel studio 6 отличалась от AVR studio 5 значительно, самые заметные нововведения версии:
- Microsoft Visual Studio 2010 стал работать с семейством AVR.
- Улучшенная, по сравнению с AVR studio 5, подсветка синтаксиса.
- Добавлены подсказки и автозавершение набора команд, что ускоряет процесс разработки.
- В целом, вся работа среды стала надежнее.
- Добавлена поддержка ARM Cortex-M.
- WinAVR не нужно больше устанавливать отдельно, GCC теперь устанавливается в процессе инсталляции, в отличие от младших версий.
В Atmel studio 6 произошел скачек в лучшую сторону для пользователя программы, что сказалось на популярности семейств Атмела. Однако адекватной поддержки русских символов в путях к файлам добиться так и не удалось.
__________________синтаксис цикла while_____________________________
while(condition){ statement1; statement2; statement3;}while – имеет условие выполнения (condition), оно записано в скобках () и тело цикла, оно заключено между фигурными скобками {}. В качестве условия цикла может выступать переменная, константа, выражение или функция, возвращающая значение. Перед каждым выполнением цикла происходит проверка условия, если условие истинно, цикл выполняется, если условие ложно, цикл не выполняется. Любое ненулевое значение в скобках оператор воспримет как истину, и цикл будет выполняться. while(1){ //этот цикл будет выполняться бесконечно statement1; statement2; statement3;}
С чего начать освоение?
Начинать стоит, конечно же, с покупки программатора; самый бюджетный – это – USBASP. Программатор USBASP не поддерживается в Atmel Studio 7.
Как выглядит USBASP
Скачивайте драйвера на программатор и программу AVRdude, а чтобы заставить это все работать вместе, можно через командную строку воспользоваться командой:
«avrdude -c usbasp -p atmega32 -U flash:w:название файла с прошивкой.hex -U lfuse:w:0x6a:m -U hfuse:w:0xff:m»
и подключить его поддержку, создав профиль в atmel studio 7 (title – external tools), а в пункт Arguments ввести «-c usbasp -p atmega32 -U flash:w:$(TargetName).hex» и так для каждого типа используемых вами микроконтроллеров.
Только таким образом можно связать студио и программатор USBASP. Будьте внимательны при перепрошивке – вы можете повредить сигнатуру микроконтроллера, а восстановить её можно будет только 12 В (высоковольтным) программатором.
Собираем всё вместе
Предположим, что программатор подключен к AVR на вашей макетной плате, как было описано выше, и вы почти готовы запрограммировать ваш AVR микроконтроллер. Для примера воспользуемся простым примером мигания светодиодом.
Теперь следуйте следующим инструкциям:
- Запустите Atmel Studio 7.
- В стартовом окне слева нажмите New Project. Откроется окно нового проекта.
Стартовое окно Atmel Studio 7 - В окне нового проекта нажмите GCC C Executable Project, назовите проект New Blink, как показано выше, и нажмите OK. Откроется окно выбора устройства Device Selection.
Окно выбора устройства Device Selection - В окне выбора устройства выберите AVR устройство, которое вы используете: ATmega328P или ATtiny45, как показано ниже. Нажмите OK. Будет создан новый проект, и будет открыто окно проекта New Blink.
Окно проекта New Blink - Нажмите на меню Tools, выберите External Tools…, и нажмите кнопку Add.
- В поле Title введите название инструмента, которой создаете; хорошо, если название описывает устройство. Например, вы можете ввести комбинацию названия программатора и названия устройства.
- В поле Comand введите путь к месту, куда установили AVRDude, плюс команду для запуска AVRDude.
-
В поле Arguments введите одну из двух следующих строк, в зависимости от AVR контроллера, который используете.
Для ATmega328P введите:Для ATtiny45 введите:
- В поле Initial directory введите путь к месту, куда установили AVRDude.
- Убедитесь, что поставлена галочка Use Output window, а в двух других чекбоксах галочки не стоят. Состояние окна должно быть похоже на скриншот ниже, но с учетом AVR контроллера, который вы используете.
Окно добавления внешнего инструмента - Нажмите Apply, а затем OK. Окно внешних инструментов должно закрыться.
- Скопируйте код программы, приведенный выше.
- Перейдите к окну New Blink.c в окне Atmel Studio 7 и вставьте в него код, приведенный выше.
Код программы - Если в правом верхнем углу Atmel Studio 7 не открыто окно менеджера проекта Solution Explorer, нажмите на выпадающее меню View и нажмите Solution Explorer. В правом верхнем углу должно появиться окно Solution Explorer.
- Кликните правой кнопкой на main.c и выберите «переименовать». Переименуйте файл main.c в New Blink.c.
- Нажмите на меню File и нажмите Save All.
- Нажмите на меню Build и нажмите Build Solution (собрать проект).
- Нажмите на меню Tools (инструменты) и нажмите на название инструмента, созданного в шагах с 5 по 11. Скомпилированный код New Blink должен будет быть загруже в AVR контроллер на вашей макетной плате, а светодиод LED1 должен начать мигать: ½ секунды включен, ½ секунды выключен, 60 раз в минуту.
Создание первого проекта
Следующая задача состоит в том, чтобы создать проект на основе AVR микроконтроллера и протестировать схему, компилятор и программатор.
Сначала перейдите в: Файл -> Создать -> Проект (англ. File -> New -> Project) и в открывшемся окне выберите: Исполняемый проект GCC C (англ. GCC C Executable Project), а в текстовом поле Имя (англ. Name) дайте любое название вашему проекту.
Следующее окно, которое должно появиться, — это окно выбора устройства. Из списка выберите Atmega168. Насколько мне известно, это окно не имеет никакого смысла, так как мы все равно передаем имя устройства в AVRDUDE вручную (пока я не могу найти способ заставить Atmel Studio 7 автоматически отправлять имя устройства в AVRDUDE через аргументы).
Результатом должен стать файл main.c, содержащий код нашей программы, который будет запускать AVR. Однако сгенерированный код ничего не делает, поэтому замените все содержимое файла main.c с помощью приведенной ниже программы (обязательно сохраните файл после ввода нового кода).
Теперь пришло время скомпилировать код и загрузить его на устройство AVR. Первый шаг — убедиться, что наш проект использует компилятор WINAVR. Щелкните правой кнопкой мыши проект и выберите «Дополнительно» (англ. — Advanced) в окне свойств.
В окне «Дополнительно» убедитесь, что в поле «Набор инструментов» (англ. — Toolchain Flavour) выбран WINAVR.
Сохраните проект и скомпилируйте его, нажав: Build -> Build Solution (или нажав F7). Если все идет по плану, в окне вывода должно появиться следующее сообщение:
Это означает, что наш проект успешно скомпилирован и готов к передаче на наш чип. Чтобы запрограммировать устройство, убедитесь, что USBASP подключен как к ПК, так и к цепи Atmega, к цепи подано питание и что к микросхеме подключен кристалл (в случае, если микросхема была настроена для использования внешнего кристалла).
Затем, после всего этого, нажмите: Инструменты -> USBASP (англ. Tools -> USBASP), и все будет работать автоматически.
Если все хорошо, светодиод в вашей цепи должен начать мигать. Ниже приведен вывод AVRDUDE в Atmel Studio 7, показывающий, как выглядит успешная программа.
Interesting tutorials
How to make an app with Android Studio
… with Android Studio:
Step 1 … new Android Studio project» … Microsoft Visual Studio. However,& …
How to set up OBS Studio
OBS Studio is … up OBS Studio so that … Launch OBS Studio on … up OBS Studio using this …
How to Convert STY to SMF with Awave Studio
… styles.
Awave Studio 11.0 (Shareware …
Conclusion
Awave Studio 11.0 (Shareware …
How to make a QR code
… QR-Code Studio. Here’s what … .
QR-Code Studio Main Screen … QR-Code Studio works flawlessly …
How to record your screen on Mac
… can.
Camtasia Studio — Shareware …
Camtasia Studio
Camtasia offers … Camtasia Studio puts …
How to make birthday cards
… Hallmark Card Studio, Fantasy CardMaker …
How to convert DivX to 3GP with ABC 3GP Converter
… ;ABC Media Studio, as it …
Компоновка и загрузка программного кода в Atmega16
1. Сохраните файл main.c.
2. Подсоедините светодиод к контакту PORTA0 микроконтроллера Atmega16 как было показано на вышеприведенном рисунке.
3. Выберите пункт меню “Build” и затем выберите “Build Blink”.
4. Если программа не содержит ошибок, то вы увидите сообщение как на представленном рисунке.
5. Теперь выберите пункт меню “Tools” и выберите в ней созданные внешние инструментальные средства. В нашем случае это будет “USBasp”. Кликните по нему.
6. Если после этого вы увидите сообщение об успешности операции (как показано на рисунке ниже), то значит вы успешно загрузили программу в микроконтроллер. Если вы получили сообщение об ошибке, то проверьте правильность выполнения всех предыдущих шагов, а также проверьте исправность соединительных проводов между USBASP и Atmega16.
7. Вы успешно загрузили тестовую программу с мигающим светодиодом в микроконтроллер используя USBASP v2.0 and Atmel Studio 7.0 и можете увидеть как мигает светодиод в собранной схеме. Теперь вы можете аналогичным образом загружать в микроконтроллер любые другие программы.
Источник
Ошибки в документации
ATmega32U4: в одном месте написано, что микросхемы поставляются с выключенным JTAG, в другом — что с включенным. Оказалось, с включенным (2010 год).
ATmega1284P. Stack pointer после reset: 0x10FF согласно надписи, но 0x20FF согласно картинке в Atmel-42719C-ATmega1284P_Datasheet_Complete-10/2016; 0x10FF согласно картинке в 8059D—AVR—11/09; 0x40FF в симуляторе Atmel Studio 7 (и этому же равна константа RAMEND), что соответствует размеру памяти.
——
SPI-программирование (МК — ведомый) in = MOSI (Master Out Slave In) = PDI (Programming Data Input) out = MISO (Master In Slave Out) = PDO (Programming Data Output)
404 Not Found
Тогда в свойствах компоновщика в SRAM segment добавляем: «.MySram=0x100», «.data=0x10a» (смещение 0x800000 тут добавлять не надо). И у всех своих переменных прописываем
И получается такая непонятность: во-первых, внутри секций порядок неочевидный. Во-вторых, секции могут перекрываться, но ошибки компиляции не возникает. В-третьих, я ещё не читал про malloc. В-четвёртых, надо ещё разобраться, что с секцией .bss.
Можно заводить свою секцию на каждую переменную. А можно завести структуру. Внутри структуры всё понятно. Но за размером всё равно придётся следить руками.
Выводы: получать адрес статической переменной из *.map-файла научились. А вот задавать свой адрес сложнее.
Установка WinAVR в Atmel Studio
1. В пункте меню “Tools (Инструменты)” выберите “External Tools (Внешние инструменты)”.
2. У вас откроется окно, где вы должны будете ввести имя вашего инструментального средства.
3. В пункте “Title (название)” введите имя вашего внешнего инструментального средства. Можно выбрать любое имя, но в рассматриваемом примере мы выбрали имя “USBasp”. Поставьте галочку в пункте ”Use Output Window” и снимите галочку с пункта “Prompt for arguments” как показано на нижеприведенном рисунке.
4. Теперь ведите “Command”. Там будет необходимо указать путь к “avrdude.exe” – его вы можете найти в папке где установлена WinAvr. Просто найдите “WinAVR-20100110” на диске “C” вашего компьютера – куда вы устанавливали WinAvr.
5. Введите аргументы. Это самый важный шаг в этой последовательности действий поскольку от них будет во многом зависеть корректность работы приложения. Поскольку в рассматриваемом нами случае мы используем внешние инструментальные средства, то можно ввести следующие аргументы:
6. Больше аргументов можно найти по этой ссылке.
7. Введите аргументы в поле для ввода аргументов. Оставьте поле “Initial directory (Начальный директорий)” без изменений.
8. После заполнения всех полей нажмите “Apply” и затем “Ok”.
В результате этих шагов вы сможете использовать внешние инструментальные средства чтобы загружать программы в микроконтроллер. Проверим это с помощью тестового проекта (программы) “blink.c”. Файл main.c вы можете найти в конце этой статьи. Теперь скопируйте main.c в Atmel studio.
Создание первого проекта
Следующая задача состоит в том, чтобы создать проект на основе AVR микроконтроллера и протестировать схему, компилятор и программатор.
Сначала перейдите в: Файл -> Создать -> Проект (англ. File -> New -> Project) и в открывшемся окне выберите: Исполняемый проект GCC C (англ. GCC C Executable Project), а в текстовом поле Имя (англ. Name) дайте любое название вашему проекту.
Следующее окно, которое должно появиться, — это окно выбора устройства. Из списка выберите Atmega168. Насколько мне известно, это окно не имеет никакого смысла, так как мы все равно передаем имя устройства в AVRDUDE вручную (пока я не могу найти способ заставить Atmel Studio 7 автоматически отправлять имя устройства в AVRDUDE через аргументы).
Результатом должен стать файл main.c, содержащий код нашей программы, который будет запускать AVR. Однако сгенерированный код ничего не делает, поэтому замените все содержимое файла main.c с помощью приведенной ниже программы (обязательно сохраните файл после ввода нового кода).
#define F_CPU 800000UL // Я использую кристалл 8 МГц #include <avr/io.h> #include <avr/delay.h> int main(void){ DDRD = 0xFF; // Сделать порт D портом выхода while(1){ PORTD = 0xFF; _delay_ms(1000); PORTD = 0x00; _delay_ms(1000); } }
Теперь пришло время скомпилировать код и загрузить его на устройство AVR. Первый шаг — убедиться, что наш проект использует компилятор WINAVR. Щелкните правой кнопкой мыши проект и выберите «Дополнительно» (англ. — Advanced) в окне свойств.
В окне «Дополнительно» убедитесь, что в поле «Набор инструментов» (англ. — Toolchain Flavour) выбран WINAVR.
Сохраните проект и скомпилируйте его, нажав: Build -> Build Solution (или нажав F7). Если все идет по плану, в окне вывода должно появиться следующее сообщение:
Build succeeded. ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
Это означает, что наш проект успешно скомпилирован и готов к передаче на наш чип. Чтобы запрограммировать устройство, убедитесь, что USBASP подключен как к ПК, так и к цепи Atmega, к цепи подано питание и что к микросхеме подключен кристалл (в случае, если микросхема была настроена для использования внешнего кристалла).
Затем, после всего этого, нажмите: Инструменты -> USBASP (англ. Tools -> USBASP), и все будет работать автоматически.
Если все хорошо, светодиод в вашей цепи должен начать мигать. Ниже приведен вывод AVRDUDE в Atmel Studio 7, показывающий, как выглядит успешная программа.
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update. avrdude.exe: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude.exe: Device signature = 0x1e9406 avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude.exe: erasing chip avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update. avrdude.exe: reading input file "0x26" avrdude.exe: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.00s avrdude.exe: 1 bytes of lfuse written avrdude.exe: verifying lfuse memory against 0x26: avrdude.exe: load data lfuse data from input file 0x26: avrdude.exe: input file 0x26 contains 1 bytes avrdude.exe: reading on-chip lfuse data: Reading | ################################################## | 100% 0.00s avrdude.exe: verifying ... avrdude.exe: 1 bytes of lfuse verified avrdude.exe: reading input file "c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex" avrdude.exe: writing flash (184 bytes): Writing | ################################################## | 100% 0.11s avrdude.exe: 184 bytes of flash written avrdude.exe: verifying flash memory against c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex: avrdude.exe: load data flash data from input file c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex: avrdude.exe: input file c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex contains 184 bytes avrdude.exe: reading on-chip flash data: Reading | ################################################## | 100% 0.10s avrdude.exe: verifying ... avrdude.exe: 184 bytes of flash verified avrdude.exe: safemode: Fuses OK avrdude.exe done. Thank you.
Установка WinAVR в Atmel Studio
1. В пункте меню “Tools (Инструменты)” выберите “External Tools (Внешние инструменты)”.
2. У вас откроется окно, где вы должны будете ввести имя вашего инструментального средства.
3. В пункте “Title (название)” введите имя вашего внешнего инструментального средства. Можно выбрать любое имя, но в рассматриваемом примере мы выбрали имя “USBasp”. Поставьте галочку в пункте ”Use Output Window” и снимите галочку с пункта “Prompt for arguments” как показано на нижеприведенном рисунке.
4. Теперь ведите “Command”. Там будет необходимо указать путь к “avrdude.exe” – его вы можете найти в папке где установлена WinAvr. Просто найдите “WinAVR-20100110” на диске “C” вашего компьютера – куда вы устанавливали WinAvr.
5. Введите аргументы. Это самый важный шаг в этой последовательности действий поскольку от них будет во многом зависеть корректность работы приложения. Поскольку в рассматриваемом нами случае мы используем внешние инструментальные средства, то можно ввести следующие аргументы:
6. Больше аргументов можно найти по этой ссылке.
7. Введите аргументы в поле для ввода аргументов. Оставьте поле “Initial directory (Начальный директорий)” без изменений.
8. После заполнения всех полей нажмите “Apply” и затем “Ok”.
В результате этих шагов вы сможете использовать внешние инструментальные средства чтобы загружать программы в микроконтроллер. Проверим это с помощью тестового проекта (программы) “blink.c”. Файл main.c вы можете найти в конце этой статьи. Теперь скопируйте main.c в Atmel studio.
Установка драйвера для USBASP в Windows 10
После скачивания драйвера выполните следующую последовательность действий:
1. Распакуйте из архива скачанные файлы и поместите их на рабочий стол.
2. Подсоедините модуль USBASP v2.0 к своему компьютеру.
3. Откройте в Windows диспетчер устройств (Device Manager).
4. Теперь вы можете увидеть подсоединенный USBASP в списке устройств.
5. Кликните правой кнопкой мыши по “USBasp” и выберите “Обновить драйвер (Update Driver)”.
6. Select “Произвести поиск драйвера на своем компьютере (Browse my computer for driver software)”.
7. Найдите в открывшемся окне распакованную папку с драйвером для USBASP и щелкните «Открыть».
8. Если установка драйвера прошла успешно, то вы увидите сообщение примерно такое же как на нижеприведенном рисунке – в этом случае вам уже не нужно выполнять дальнейшие инструкции в этом разделе статьи.
9. Если вы увидите сообщение об ошибке как на приведенном рисунке, то вы в этом случае должны отключить цифровую подпись драйвера.
Чтобы сделать выполните следующие шаги:
— нажмите кнопку Shift и удерживая ее нажатой перезагрузите свой компьютер (кликните Restart в меню Windows пока держите ее нажатой);
— когда ваш компьютер перезагрузится не отпускайте кнопку Shift до тех пор пока не увидите “Advanced Options (Расширенные настройки)” на синем экране;
— отпустите кнопку Shift и кликните на “Startup Settings”;
— кликните на “Troubleshoot (Устранение проблем)”;
— выберите “Advanced Options (Расширенные настройки)”;
— после этого вы увидите на экране список расширенных опций и кнопку “Restart” в правом нижнем углу – кликните на ней;
— подождите пока компьютер снова перезагрузится. После этого вы увидите на экране ряд настроек;
— в открывшемся списке настроек выберите пункт “Disable Driver Signature Enforcement (Отключить цифровую подпись драйвера)”. Чтобы ее выбрать просто нажмите кнопку «7» на вашей клавиатуре (не путать с кнопкой «F7»);
— после нажатия этой кнопки компьютер перезагрузится и цифровая подпись драйвера будет отключена;
— после этого снова выполните шаги 1-8 из данного раздела статьи и драйвер для программатора USBASP будет успешно установлен.
Features of Atmel Studio 7.0.1931 Free Download
Below are some amazing features you can experience after installation of Atmel Studio 7.0.1931 Free Download please keep in mind features may vary and totally depends if your system support them.
- Support for 300+ Atmel AVR and Atmel SMART ARM-based devices
- Vast source code library, including drivers, communication stacks, 1,600+ project examples with source code, graphic services and touch functionality through Atmel Software Framework (ASF)
- IDE extensions through Atmel Gallery, the online apps store, for development tools and embedded software from Atmel and third parties
- Tune capacitive touch designs, validate system performance, monitor power consumption, and real-time data and trace graphing with Atmel QTouch Composer
- Configure and test the performance of wireless designs with the Wireless Composer running on the target
- Write and debug C/C++ and assembly code with the integrated compiler
- Advanced debugging features include complex data breakpoints, nonintrusive trace support (SAM3 and SAM4 devices), statistical code profiling, interrupt trace/monitoring, polled data tracing (Cortex-M0+ devices), real-time variable tracking with optional timestamping, and integration of Percepio Tracealyzer for leading-edge debug data visualization and RTOS awareness
- Integrated editor with visual assist
- New project wizard allowing projects created from scratch or from a large library of design examples
- In-system programming and debugging provides interface to all Atmel in-circuit programmers and debuggers
- Create transparent debug views into CPU and peripherals for easy code development and debugging
- Full chip simulation for an accurate model of CPU, interrupts, peripherals, and external stimuli
Комплектующие
Микроконтроллеры AVR имеют некоторые преимущества по сравнению с другими аналогичными микросхемами, включая более высокую MIPS и более дружественную архитектуру. В этой статье мы узнаем, как использовать AVR IDE, как создать исполняемый проект, построить базовую схему AVR, а затем запрограммировать ее. Для этого нам понадобится набор компонентов, а также некоторое программное обеспечение.
Оборудование:
- ATMEGA168 DIP IC x 1
- Кварцевые резонаторы, кристалл (4−20 МГц) x 1
- 20 пФ конденсатор x 2
- 680 резистор x 1
- 5.6K резистор x 1
- Светодиод LED x 1
- Источник 5 В (цепь 7805, плавное регулирование и т.д.) x 1
- Провода
Программное обеспечение:
- USBASP
- WINAVR (20100110)
- Atmel Studio 7
Заключение
Начало работы с устройствами AVR может показаться несколько сложным, если вы не используете официальный программатор, который может работать «из коробки» с Atmel Studio 7. Однако в инструментах программирования требуется определить только одну командную строку (тип устройства, биты и т.п.). И все будущие проекты могут использовать один и тот же инструмент/компилятор, который нужно настроить только один раз.
Т.е. следующий проект ATMEGA168, который вы будете делать, сможет использовать тот же компилятор и внешний инструмент, что и в этом проекте и не потребуется никаких дополнительных настроек. Конечно, в более сложных проектах может потребоваться замена бит (англ. fuse), например, но в данном материале я хотел просто помочь вам освоить работу с устройствами AVR.