• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

 

ATmega32a в Arduino IDE





 

1. "Допиливаем" ArduinoIDE

Исходное условие: На компьютере установлена ArduinoIDE версии 1.6.1 (на сегодня самой свежей). Стоит она в папке .\Arduino. На самом деле не важно где она стоит - у каждого по своему. Исходная папка нужна для понимания где какие файлы править.

Первым делом ищем файл boards.txt по следующему пути .\Arduino\hardware\arduino\avr\. Открываем его в редакторе аля "Блокнот" и видим перечисление всех ардуин с кучей каких-то параметров. Идем в конец и добавляем следующий блок:

##############################################################

mega32-16.name=ATmega32-External 16mhz
mega32-16.build.mcu=atmega32
mega32-16.build.f_cpu=16000000L
mega32-16.build.core=arduino:arduino
mega32-16.build.variant=mega32

mega32-16.upload.tool=avrdude
mega32-16.upload.maximum_data_size=2048
mega32-16.upload.maximum_size=32000

mega32-16.bootloader.tool=avrdude
mega32-16.bootloader.low_fuses=0xEF
mega32-16.bootloader.high_fuses=0x89
mega32-16.bootloader.path=ATmega32          
mega32-16.bootloader.file=ATmegaBOOT_32.hex
mega32-16.bootloader.unlock_bits=0x3F
mega32-16.bootloader.lock_bits=0x0F
##############################################################

Что тут к чему:

mega32-16 - обзываем наш МК как угодно. Главное, чтоб буквы были латинские и никаких спецсимволов не применялось. Все параметры для нашей меги далее будут начинаться с этого имени.

mega32-16.name - то название, которое увидим в меню;

mega32-16.build.mcu=atmega32 - тип микроконтроллера

mega32-16.build.f_cpu=16000000L - тактовая частота

mega32-16.build.core=arduino:arduino - использовать функции и библиотеки ядра Arduino (никакой самопальщины).

mega32-16.build.variant=mega32 - это фактически путь к распиновке (переназначение GPIO меги на номера ардуины).

mega32-16.upload.tool=avrdude - сама IDE - это только редактор. Для компиляции и загрузки используются сторонние утилиты. Тут как раз и указываем, что использовать.

mega32-16.upload.maximum_size=32000 - максимальный размер прошивки.

mega32-16.bootloader - эти параметры нужны только для записи загрузчика ардуины. Загрузчик мы писать не будем, но без них не работает.

Теперь качаем файл mega32 и распаковываем его содержимое в .\Arduino\hardware\arduino\avr\variants\. В конечном итоге там должна появиться папка mega32.

На этом с IDE все.

2. Собираем схему

Я собрал ее на макетке. Но несложно развести плату и распаять под шилды UNO не составит труда.

 

 

 

 

Я же ограничился небольшой макеткой в правой части. На ней собран ISP и колодка для tiny13/85. Здесь она нужна для удобства - напрямую ISP в макетку воткнуть не получится.

Еще на фото установлен светодиод на PortB0. Его предназначение - тестовый скетч blink.

3. Прошиваем

Исходные данные: Имеем микроконтроллер на котором собрали выше означенную схему. Микроконтроллер девственный - чистый, не тронутый, свеже купленный...

По умолчанию он настроен на работу от внутреннего тактового генератора. По большому счету неизвестно на что он там настроен. Никакого Arduino-загрузчика в нем точно нет. Да он и не понадобится. План будет такой:

1. Подключаем МК через ISP и USBasp к компу.

2. Устанавливаем фьюзы.

3. Зашиваем скетч.

А теперь по-порядку:

USBasp

Программатор USBasp представляет собой небольшой "свисток".

Шнурок на его конце может иметь 6 или 10 контактов.

Распиновку можно найти на картинке ниже вместе с еще несколькими контроллерами

Драйвер для USBasp можно скачать здесь.

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

Фьюзы

Фьюзы - это несколько байт, которые определяют как в схеме включен микроконтроллер и как он будет работать. ArduinoIDE прошивает фьюзы вместе с загрузчиком. Сделать это у меня не получилось и я обратился к ранее проверенному способу. С интернета качаем и устанавливаем программу eXtreme Burner – AVR.

Сначала читаем текущую настройку из контроллера. Потом устанавливаем фьюзы, галки рядом с ними и пишем обратно в контроллер. Для внешнего кварца 16МГц настройки должны быть такими:

low fuses = 0xEF
high fuses = 0x89

Теперь МК работает как задумано и его можно прошивать из IDE.

Прошивка

Запускаем IDE, пишем скетч. Честно говоря не знаю, какие порты соответствуют каким номерам Arduino. Я предпочитаю обращаться к портам напрямую. Чего и Вам советую...

Тестовый скетч Blink будет выглядеть так:

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  DDRB |= 1;
}

// the loop function runs over and over again forever
void loop() {
  PORTB |=1;   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  PORTB &= 0xFE;   // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

В настройках среды выбираем в разделе "Плата" то, что мы понаписали в boards.txt в самом начале, а вместо выбора COM-порта выбираем USBasp в разделе "Программатор". Теперь вместо обычной кнопки загрузки скетча в меню "Файл" выбираем "Загрузить через программатор".

IDE выдаст как ошибку строки:

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: warning: cannot set sck period. please check for usbasp firmware update.

Не обращайте на них внимания - прошивка уже в контроллере.

Вот собственно и все!

По материалам rc-master,  автор Зайчиков Александр

 

В начало обзора



Купить радиодетали для ремонта




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 380



          

Радио для всех© 2024