Вторник, 21.11.2017, 07:08
RC - Мастерская
Главная | Каталог статей | Регистрация | Вход
Меню
Статистика
Главная » Статьи » Чертежи и проекты » Микроконтроллеры

ATmega32a в Arduino IDE

ATmega32a в Arduino IDE

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

 

 

 

 

 

 

 

 

Мой интерес вызвало в первую очередь большее число цифровых выводов. Остальные характеристики примерно схожи. Раскурив даташит осознал, что и внутри они имеют много общего. Далее мной был проведен ряд экспериментов. Изрядная их часть сопровождалась русской народной нецензурной лексикой. Итогом стала загрузка скетча из ArduinoIDE в указанную выше атмегу, которая меня устроила. Описание экспериментов я опущу и изложу здесь некое конечное "how to...".

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 представляет собой небольшой "свисток". Купить его можно менее чем за 300р на любом китайском углу.

Шнурок на его конце может иметь 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.

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

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

 

P.S.

Калькулятор фьюзов

Дока на USBasp. По ней можно собрать такой самому.

Категория: Микроконтроллеры | Добавил: Mactep (21.03.2015)
Просмотров: 3999 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск