цифровая электроника
вычислительная техника
встраиваемые системы

 

Как запрограммировать микроконтроллер ATmega1284 через Arduino IDE

Автор: Mike(admin) от 24-10-2016, 21:02

Микроконтроллер ATmega1284 является одним из наиболее желанных чипов из линейки ATmega, с которым хочется работать благодаря его ресурсам. Он оснащен 128 КБ flash-памяти, 4 КБ EEPROM, 16 КБ ОЗУ (это в два раза больше, чем у ATmega2560). Плюсом также является то, что он расположен в DIP-корпусе, а значит с ним удобно работать обычному радиолюбителю. Кроме того, он стоит почти вдвое меньше, чем ATmega2560. Удивительно, но в настоящее время нет официальных плат Arduino с микроконтроллером ATmega1284.


Как запрограммировать микроконтроллер ATmega1284 через Arduino IDE

Но можно сделать свою плату с ATmega1284, программируемую через Arduino IDE, Можно даже не делать плату, а собрать все на макетной плате для прототипирования. В данном материале будет показано, как можно будет сделать так, чтобы микроконтроллер ATmega1284 можно было бы программировать через Arduino IDE.


Во-первых, если вы не нуждаетесь в функциях типа millis() и digitalWrite(), то можете программировать ATmega1284 через Arduino IDE на пустое ядро с использованием внутрисхемного программатора (ISP). Для этого сначала поместите следующий текст в файл boards.txt, находящийся в папке Arduino AVR.



##############################################################
atmega1284e8.name=ATmega1284 @ 8 MHz (internal oscillator; BOD disabled)
atmega1284e8.upload.tool=arduinoisp

atmega1284e8.upload.maximum_size=131072
atmega1284e8.upload.maximum_data_size=16384

atmega1284e8.bootloader.tool=avrdude
atmega1284e8.bootloader.low_fuses=0xE2
atmega1284e8.bootloader.high_fuses=0x99
atmega1284e8.bootloader.extended_fuses=0xFF
atmega1284e8.bootloader.unlock_bits=0x3F
atmega1284e8.bootloader.lock_bits=0x3F
atmega1284e8.bootloader.file=empty.hex

atmega1284e8.build.mcu=atmega1284p
atmega1284e8.build.f_cpu=8000000L
atmega1284e8.build.board=AVR_ATMEGA1284E8
atmega1284e8.build.core=empty
atmega1284e8.build.variant=standard
##############################################################
atmega1284e1.name=ATmega1284 @ 1 MHz (internal oscillator; BOD disabled)
atmega1284e1.upload.tool=arduinoisp

atmega1284e1.upload.maximum_size=131072
atmega1284e1.upload.maximum_data_size=16384

atmega1284e1.bootloader.tool=avrdude
atmega1284e1.bootloader.low_fuses=0x62
atmega1284e1.bootloader.high_fuses=0x99
atmega1284e1.bootloader.extended_fuses=0xFF
atmega1284e1.bootloader.unlock_bits=0x3F
atmega1284e1.bootloader.lock_bits=0x3F
atmega1284e1.bootloader.file=empty.hex

atmega1284e1.build.mcu=atmega1284p
atmega1284e1.build.f_cpu=1000000L
atmega1284e1.build.board=AVR_ATMEGA1284E1
atmega1284e1.build.core=empty
atmega1284e1.build.variant=standard
##############################################################

Это добавит две новые опции в меню выбора плат: ATmega1284 с внутренним тактовым генератором 1 МГц и с внутренним тактовым генератором 8 МГц. Ниже приведен пример программы для мигания светодиодом (Blink), подключаемым к линии PD5 (вывод 19 микроконтроллера). Подключив внутрисхемный программатор, можно без труда загрузить этот код в микроконтроллер.



#include <avr/io.h>
#include <stdint.h>

int led = PORTD5;

void setup() {                
 DDRD = DDRD | 1<<led;         // Определяем PD5 как выход
}

volatile long Counter;

void delay (long n) {          // Задержка в n милисекунд
 Counter = 29 * n;
  do Counter--; while (Counter != 0);
}

void loop() {
  PORTD = PORTD | 1<<led;      // Устанавливаем PD5 в высокий логический уровень
  delay(1000);                 // Ждем секунду
  PORTD = PORTD & ~(1<<led);   // Устанавливаем PD5 в низкий логический уровень
  delay(1000);                 // Ждем секунду
}

int main() {
  setup();
  for(;;) loop();
}

Если же вы хотите запрограммировать ATmega1284 с использованием функций Arduino, то вам потребуется скачать Mighty 1284P core. Установите папку mighty-1284p в директорию Arduino\hardware и перезапустите Arduino IDE. После этого в меню Платы (Boards) добавится секция Mighty-1284p Boards. Рекомендуется выбирать вариант "maniacbug" Mighty 1284p 16MHz using Optiboot, в котором будет следующее соответствие портов Arduino и выводов микроконтроллера ATmega1284.


Как запрограммировать микроконтроллер ATmega1284 через Arduino IDE

Есть еще один вариант – использовать загрузчик (bootloader). Это позволит программировать ATmega1284 через последовательный порт и вести отладку с помощью монитора последовательного порта. Для обеспечения работы с функциями Arduino в данном случае используется все то же ядро Mighty-1284p core. Бутлоадер можно записать в микроконтроллер с помощью внутрисхемного программатора. Но если у вас простой программатор типа Tiny AVR Programmer, который не поддерживает память программ объемом 128 КБ, то можно воспользоваться программатором, встроенным в Arduino Uno. Схема подключения показана ниже.


Как запрограммировать микроконтроллер ATmega1284 через Arduino IDE

Чтобы установить загрузчик и программировать ATmega1284 с применением функций Arduino, во-первых, установите Mighty 1284P core. Далее в меню списка плат (Tools – Board) выберите "maniacbug" Mighty 1284p 16MHz using Optiboot. Затем откройте пример ArduinoISP (File - Examples - 11.ArduinoISP – ArduinoISP) и загрузите его в Arduino Uno. Сделайте Arduino внутрисхемным программатором (Tools - Programmer - Arduino as ISP). Загрузите бутлоадер (Tools - Burn Bootloader).


После этого вы можете отсоединить Arduino Uno и подключить обычный адаптер USB-UART, чтобы программировать ATmega1284 через USB-порт компьютера.




© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий