Atmega1281 8-разрядные микроконтроллеры с внутрисистемно-программируемой flash памятью

Общее описание

ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 — маломощный 8-разр. КМОП микроконтроллер, выполненный на основе AVR-ядра с RISC-архитектурой. За счет выполнения большинства инструкций за один машинный цикл ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 достигает производительности 1 млн. операций в секунду при тактовой частоте 1 МГц.

AVR ядро объединяет богатый набор инструкций с 32 рабочими регистрами общего назначения. Все 32 регистра непосредственно подключены к АЛУ (арифметико-логическое устройство), что позволяет указывать два регистра в одной инструкции и выполнить ее за один цикл. Данная архитектура обладает большей эффективностью кода и в 10 раз большей производительностью по сравнению с CISC микроконтроллерами.

ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 содержит следующие узлы: 64/128/256 кбайт внутрисхемно-программируемой флэш-памяти с возможностью чтения во время записи, 4 кбайт ЭСППЗУ, 8 кбайт статического ОЗУ, 54/86 линий ввода-вывода, 32 рабочих регистра общего назначения, часы реального времени, шесть гибких таймеров-счетчиков с режимами сравнения и ШИМ , 4 УСАПП, 2-проводной последовательный интерфейс с побайтной передачей, 16-канальный 10-разрядный АЦП с опциональным дифференциальным входным каскадом и программируемым усилением, программируемый сторожевой таймер с внутренним генератором, последовательный порт SPI, JTAG интерфейс для сканирования адресного пространства, реально-временной отладки и программирования, а также шесть программно настраиваемых режимов управления энергопотреблением. Режим холостого хода (Idle) останавливает ЦПУ, но оставляет в работе статическое ОЗУ, таймеры-счетчики, порт SPI и систему прерываний. Режим пониженного потребления (Power-down) сохраняет содержимое регистров, но останавливает генератор, выключает все встроенные функции до появления следующего запроса на прерывание или аппаратного сброса. В экономичном режиме (Power-save) асинхронный таймер продолжает работать, позволяя пользователю его использовать, а остальные устройства отключены. В режиме снижения шумов АЦП (ADC Noise Reduction) останавливается ЦПУ и все модули ввода-вывода, за исключением асинхронного таймера и АЦП, тем самым минимизируется влияние цифрового шума на результат преобразования В дежурном режиме (Standby) генератор на кварцевом резонаторе запущен, а остальная часть отключена. Данный режим позволяет реализовать быстрый запуск в комбинации с малым потреблением. В расширенном дежурном режиме (Extended Standby) и основной генератор и асинхронный таймер продолжают работать.

Микроконтроллеры выпускается по разработанной Atmel технологии энергонезависимой памяти высокой емкости. Встроенная ISP флэш-память может внутрисхемно перепрограммироваться через последовательный интерфейс SPI, обычным программатором энергонезависимой памяти или запущенной программой в секторе начальной загрузки AVR ядра. Программа в секторе начальной загрузки может использовать любой интерфейс для записи программы. Программа в секторе начальной загрузки выполняется даже при обновлении флэш-памяти приложения, обеспечивая действительную возможность чтения во время записи. За счет комбинирования 8-разрядного RISC ЦПУ с внутрисхемно самопрограммируемой флэш-памятью на одном кристалле, позволило ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 быть мощным микроконтроллером, обеспечивающего высокую универсальность и обладающего низкой стоимостью, что делает его применение идеальным для построения встроенных систем управления.

How to install

Boards Manager Installation

This installation method requires Arduino IDE version 1.6.4 or greater.

  • Open the Arduino IDE.
  • Open the File > Preferences menu item.
  • Enter the following URL in Additional Boards Manager URLs:
  • Open the Tools > Board > Boards Manager… menu item.
  • Wait for the platform indexes to finish downloading.
  • Scroll down until you see the MegaCore entry and click on it.
  • Click Install.
  • After installation is complete close the Boards Manager window.

Manual Installation

Click on the «Download ZIP» button in the upper right corner. Extract the ZIP file, and move the extracted folder to the location «~/Documents/Arduino/hardware». Create the «hardware» folder if it doesn’t exist.
Open Arduino IDE, and a new category in the boards menu called «MegaCore» will show up.

Getting started with MajorCore

Ok, so you’re downloaded and installed MajorCore, but do I get the wheels spinning? Here’s a quick start guide:

  • Hook up your microcontroller as shown in the .
  • Open the Tools > Board menu item, and select a MajorCore compatible microcontroller.
  • You can select at what voltage the microcontroller will shut down at by changing the BOD setting. Read more about BOD .
  • Select your prefered clock frequency. 16 MHz is standard on most Arduino boards.
  • Select what kind of programmer you’re using under the Programmers menu.
  • Hit Burn Bootloader. If an LED is connected to pin PB0, it should flash twice every second.
  • Now that the correct fuse settings is sat and the bootloader burnt, you can upload your code in two ways:
    • Disconnect your programmer tool, and connect a USB to serial adapter to the microcontroller, like shown in the . Then select the correct serial port under the Tools menu, and click the Upload button. If you’re getting some kind of timeout error, it means your RX and TX pins are swapped, or your auto reset circuity isn’t working properly (the 100 nF capacitor on the reset line).
    • Keep your programmer connected, and hold down the button while clicking Upload. This will erase the bootloader and upload your code using the programmer tool.

Your code should now be running on your microcontroller! If you experience any issues related to bootloader burning or serial uploading, please create an issue on Github, so I can help you out.

Примечание

  1. При подключении устройства к компьютеру для наблюдения за ходом процесса, в терминальной программе не будут отображаться названия некоторых микроконтроллеров в связи с реализацией режима HVSP и нехваткой Flah-памяти программ микроконтроллера ATmega8.
  2. Некоторые текстовые константы используемые при работе через интерфейс RS232 хранятся в EEPROM памяти микроконтроллера. Поэтому, если Вы не будете использовать интерфейс RS232 для подключения устройства к компьютеру, необходимо записать файл EEP.BIN в EEPROM-память микроконтроллера с помощью программатора (заметьте, это файл формата BIN, не HEX).

Файлы проекта (формат Eagle 5.4.0), принципиальные схемы и рисунки печатных плат (pdf, png) для двух адаптеров, .hex-файл, .bin-файл и файл EEP.BIN для программирования микроконтроллера версия 2.03 – скачать

diy.elektroda.eu

PROGMEM with flash sizes greater than 64kB

The usual attribute stores constant data such as string arrays to flash and is great if you want to preserve the precious RAM. However, PROGMEM will only store content in the lower section, from 0 and up to 64kB. If you want to store data in other sections, you can use (64 — 128kB), (128 — 192kB), or (192 — 256kB), depending on the chip you’re using.
Accessing this data is not as straight forward as with , but it’s still doable:

const char far_away[] PROGMEM1 = "Hello from far away!\n"; // (64  - 128kB)
const char far_far_away[] PROGMEM2 = "Hello from far, far away!\n"; // (128 - 192kB)
const char far_far_far_away[] PROGMEM3 = "Hello from far, far, far away!\n"; // (192 - 256kB)

void print_progmem()
{
  uint8_t i;
  char c;

  // Print out far_away
  for(i = ; i < sizeof(far_away); i++)
  {
    c = pgm_read_byte_far(pgm_get_far_address(far_away) + i);
    Serial.write(c);
  }

  // Print out far_far_away
  for(i = ; i < sizeof(far_far_away); i++)
  {
    c = pgm_read_byte_far(pgm_get_far_address(far_far_away) + i);
    Serial.write(c);
  }
  // Print out far_far_far_away
  for(i = ; i < sizeof(far_far_far_away); i++)
  {
    c = pgm_read_byte_far(pgm_get_far_address(far_far_far_away) + i);
    Serial.write(c);
  }
}

Supported microcontrollers:

  • ATmega2561
  • ATmega2560
  • ATmega1281
  • ATmega1280
  • ATmega640
  • ATmega128
  • ATmega64
  • AT90CAN128
  • AT90CAN64
  • AT90CAN32

(All variants — A, L, V)

Can’t decide what microcontroller to choose? Have a look at the specification table below:

Mega2560 Mega1280 Mega640 Mega2561 Mega1281 Mega128CAN128 Mega64CAN64 CAN32
Flash 256kB 128kB 64kB 256kB 128kB 128kB 64kB 32kB
RAM 8kB 8kB 8kB 8kB 8kB 4kB 4kB 2kB
EEPROM 4kB 4kB 4kB 4kB 4kB 4kB 2kB 1kB
IO pins 70/86 * 70/86 * 70/86 * 54 54 53 53 53
PWM pins 15 15 15 8 8 7 7 7
LED pin PB7 PB7 PB7 PB5 PB5 PB5 PB5 PB5

* pin 70-85 is not broken out on the Arduino Mega. Make sure to check out the for a cleaner an more logical pinout.

Светодиодный задний фонарь для мотоцикла

Опубликовано ср, 09/17/2014 — 21:55 пользователем trol

Данный фонарь я делал для мотоцикла Honda Steed на замену штатному. Оригинальный фонарь содержит две лампочки по 18 Вт / 5 Вт в японской версии и 21 Вт / 5 Вт в европейской. Итого, мощность ламп габаритного освещения составляет 10Вт, а мощность стоп-сигнала — 36 .. 42 Вт, что, как мне кажется, слишком много. При том, что мощность генератора данного мотоцикла — всего 345 Вт, и на питание всей электрики его хватает практически в обрез. Помимо чрезмерной прожорливости лампочки еще имеют неприятное свойство перегорать несколько раз за сезон.

Write to own flash

MiniCore implements @majekw fork of Optiboot, which enables flash writing functionality within the running application. This means that content from e.g. a sensor can be stored in the flash memory directly, without the need of external memory. Flash memory is much faster than EEPROM, and can handle about 10 000 write cycles.
To enable this feature your original bootloader needs to be replaced by the new one. Simply hit «Burn Bootloader», and it’s done!
Please check out the Optiboot flasher example for more info about how this feature works, and how you can try it on your MajorCore compatible microcontroller.

Getting started with MegaCore

Ok, so you’re downloaded and installed MegaCore, but how to get started? Here’s a quick start guide:

  • Hook up your microcontroller as shown in the .
  • Open the Tools > Board menu item, and select ATmega64, ATmega128, ATmega1281, ATmega2561, ATmega640, ATmega1280, ATmega2560, AT90CAN32, AT90CAN64 or AT90CAN128.
  • Select your preferred clock frequency. 16 MHz is standard on most Arduino boards.
  • Select what kind of programmer you’re using under the Programmers menu.
  • Hit Burn Bootloader. If an LED is connected to pin PB5/PB7, it should flash twice every second.
  • Now that the correct fuse settings is sat and the bootloader burnt, you can upload your code in two ways:
    • Disconnect your programmer tool, and connect a USB to serial adapter to the microcontroller, like shown in the . Then select the correct serial port under the Tools menu, and click the Upload button. If you’re getting some kind of timeout error, it means your RX and TX pins are swapped, or your auto reset circuity isn’t working properly (the 100 nF capacitor on the reset line).
    • Keep your programmer connected, and hold down the button while clicking Upload. This will erase the bootloader and upload your code using the programmer tool.

Your code should now be running on the microcontroller!

Частотомер-тестер кварцев на atmega8

Опубликовано чт, 01/18/2018 — 19:49 пользователем trol

Частотомер — полезный прибор в лаборатории радиолюбителя (особенно, при отсутствии осциллографа).
Кроме частотомера лично мне часто недоставало тестера кварцевых резонаторов — слишком много стало приходить брака из Китая. Не раз случалось такое,
что собираешь устройство, программируешь микроконтроллер, записываешь фьюзы, чтобы он тактировался от внешнего кварца и всё — после записи фьюзов
программатор перестаёт видеть МК. Причина — «битый» кварц, реже — «глючный» микроконтроллер (или заботливо перемаркированый китайцами с добавлением,
например, буквы “А» на конце). И таких неисправных кварцев мне попадалось до 5% из партии.
Кстати, достаточно известный китайский набор частотомера с тестером кварцев на PIC-микроконтроллере и светодиодном дисплее с Алиэкспресса мне
категорически не понравился, т.к. часто вместо частоты показывал то ли погоду в Зимбабве, то ли частоты «неинтересных» гармоник
(ну или это мне не повезло).

Лампа настроения: продолжение

Опубликовано пн, 04/13/2015 — 22:10 пользователем trol

Спустя почти два года после публикации первого варианта лампы настроения было собрано несколько экземпляров,
сделаны выводы и произведены некоторые улучшения.

После обкатки на разных устройствах прошивка была обновлена:

  • Изменен алгоритм генерации цветов — теперь цвета более насыщенные
  • Исправлена проблема с резким переключением между цветами. Баг связан с тем, что раньше значение следующего цвета вычислялось
    непосредственно в процедуре прерывания и эта операция занимала слишком много времени. Теперь вычисление вынесено в главный цикл
  • Добавлена возможность использовать свой генератор псевдо-случайных чисел вместо stdlib-овского. Этим можно немного уменьшить размер
    прошивки в ущерб качеству случайности генеримых цветов (что, вообщем-то, не особо сказывается на работе лампы).
  • Прошивка теперь компилируется под AVR Studio 6

Supported clock frequencies

MegaCore supports a variety of different clock frequencies. Select the microcontroller in the boards menu, then select the clock frequency. You’ll have to hit «Burn bootloader» in order to set the correct fuses and upload the correct bootloader.
Make sure you connect an ISP programmer, and select the correct one in the «Programmers» menu. For time critical operations an external crystal/oscillator is recommended.

You might experience upload issues when using the internal oscillator. It’s factory calibrated but may be a little «off» depending on the calibration, ambient temperature and operating voltage. If uploading failes while using the 8 MHz internal oscillator you have these options:

  • Edit the baudrate line in the file, and choose either 115200, 57600, 38400 or 19200 baud.
  • Upload the code using a programmer (USBasp, USBtinyISP etc.) or skip the bootloader by holding down the shift key while clicking the «Upload» button
  • Use the 4, 2 or 1 MHz option instead
Frequency Oscillator type Speed Comment
16 MHz External crystal/oscillator 115200 Default clock on most AVR based Arduino boards
20 MHz External crystal/oscillator 115200
18.4320 MHz External crystal/oscillator 115200 Great clock for UART communication with no error
14.7456 MHz  External crystal/oscillator 115200 Great clock for UART communication with no error
12 MHz External crystal/oscillator 57600 Useful when working with USB 1.1 (12 Mbit/s)
11.0592 MHz External crystal/oscillator 115200 Great clock for UART communication with no error
8 MHz External crystal/oscillator 57600 Common clock when working with 3.3V
7.3728 MHz External crystal/oscillator 115200 Great clock for UART communication with no error
4 MHz External crystal/oscillator 9600
3.6864 MHz External crystal/oscillator 115200 Great clock for UART communication with no error
2 MHz External crystal/oscillator 9600
1.8432 MHz External crystal/oscillator 115200 Great clock for UART communication with no error
1 MHz External crystal/oscillator 9600
8 MHz Internal oscillator 38400 Might cause UART upload issues. See comment above
4 MHz Internal oscillator 9600 Derived from the 8 MHz internal oscillator
2 MHz Internal oscillator 9600 Derived from the 8 MHz internal oscillator
1 MHz Internal oscillator 9600 Derived from the 8 MHz internal oscillator

Доработка питания 3D-принтера

Опубликовано вс, 08/27/2017 — 13:50 пользователем trol

3D-принтеры бывают разные, но электроника подавляющего большинства любительских аппаратов делается на основе связки плат Arduino + RAMPS,
либо одной платы MKS Gen. В качестве блока питания обычно служит БП для светодиодных лент. Он служит источником для питания электроники, шаговых
двигателей, нагревателя(лей) экструдеров и термостола. И тут возникает ряд проблем, связанных с тем, что импульсные помехи от БП + помехи, создаваемые
ШИМ-контроллером нагревателя экструдера прилетают на управляющий микроконтроллер. В результате возможны сбои и перезагрузка программы, появление
мусора на экране, а также большие ошибки при измерении температуры экструдера (что может приводить к тому, что управляющая программа
не может стабилизировать температуру нагревателя экструдера).

Для решения этой проблемы схема питания принтера была доработана: питание цифровой части отделено от питания нагревателей и подаётся через
двойные LC-фильтры, эфективно снижающие уровень шума ИБП. Для питания нагревателей была добавлена плата управления на мощных полевых транзисторах.

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

Тестер микросхем

Опубликовано вт, 09/05/2017 — 15:45 пользователем trol

Устройство предназначено для тестирования логических микросхем, операционных усилителей, оптопар, и некоторых других элементов.
Из логических микросхем поддерживаются отечественные (серии 155, 555, 1531, 1533, 176, 561, 1561, 1564, 580, 589 и др.) и импортные
(74ххх, 40ххx, 45xxx) ИМС ТТЛ и КМОП. Меню и результаты проверки отображаются на цветном дисплее 128х128.
Так же тестер умеет проверять микросхемы DRAM, SRAM, считывать EPROM и показывать, есть ли в них записанные данные.
Кроме того, прибор можно использовать при отладке различных цифровых устройств как интерфейс с 40 каналами ввода-вывода управляемыми по USB.

Тестер питается через miniUSB-порт, также через этот порт его можно подключить к компьютеру. Программное обеспечение позволяет разрабатывать,
запускать и пошагово отлаживать тесты, считывать содержимое ПЗУ и обновлять прошивку устройства.

Программное обеспечение написано на Java и является кроссплатформенным (Windows, Linux, MacOS X).

Первый запуск USBasp программатора

Теперь, когда все детали спаяны, остается только «прошить» микроконтроллер Atmegę8 самого программатора. Для этого нужен отдельный программатор, это может быть, например, STK 200 (LPT порт), STK500 и т. д. LPT программатор подключается к USBasp через разъем IDC-10.

Обратите внимание, что распределение пинов в разъеме оригинального программатора (USBasp) находится справа, в то время как в версии, описываемой в этой статье – слева:

Распределение, показанное на рисунке справа, соответствует тем, которые применяет компания Atmel в своих оригинальных программаторах. Такое распределение уменьшает риск возникновения помех во время программирования в случае применения длинных проводов от программатора к контроллеру, так как каждая сигнальная линия экранирована массой, кроме MOSI.

На время программирования включите режим SELF путем переключения DIP переключателя № 3 в положение ON. Благодаря этому появляется возможность запрограммировать Atmega8. После завершения программирования, положение переключателя (3) должна быть переведено в состоянии OFF.

Последнюю версию прошивки можно скачать с официального сайта. Рекомендуем версию для Atmega8, которая находится в архиве: usbasp.2011-05-28.tar.gz.

Обратите внимание, чтобы перед программированием Atmega8 необходимо выставить фьюзы которые имеют следующие значения:

  • # для Atmega8: HFUSE=0xC9 LFUSE=0xEF
  • # для Atmega48: HFUSE=0xDD LFUSE=0xFF

В случае успешного программирования, подключаем программатор к USB разъему компьютера, при этом должен загореться красный светодиод, а компьютер должен оповестить об обнаружении нового оборудования.

Supported clock frequencies

MajorCore supports a variety of different clock frequencies. Select the microcontroller in the boards menu, then select the clock frequency. You’ll have to hit «Burn bootloader» in order to set the correct fuses and upload the correct bootloader.
Make sure you connect an ISP programmer, and select the correct one in the «Programmers» menu. For time critical operations an external crystal/oscillator is recommended.

You might experience upload issues when using the internal oscillator. It’s factory calibrated but may be a little «off» depending on the calibration, ambient temperature and operating voltage. If uploading failes while using the 8 MHz internal oscillator you have these options:

  • Edit the baudrate line in the boards.txt file, and choose either 115200, 57600, 38400 or 19200 baud.
  • Upload the code using a programmer (USBasp, USBtinyISP etc.) or skip the bootloader by holding down the shift key while clicking the «Upload» button
  • Use the 4, 2 or 1 MHz option instead
Frequency Oscillator type Comment
16 MHz External crystal/oscillator Default clock on most AVR based Arduino boards and MiniCore
20 MHz External crystal/oscillator
18.4320 MHz External crystal/oscillator Great clock for UART communication with no error
14.7456 MHz  External crystal/oscillator Great clock for UART communication with no error
12 MHz External crystal/oscillator Useful when working with USB 1.1 (12 Mbit/s)
11.0592 MHz External crystal/oscillator Great clock for UART communication with no error
8 MHz External crystal/oscillator Common clock when working with 3.3V
7.3728 MHz External crystal/oscillator Great clock for UART communication with no error
4 MHz External crystal/oscillator
3.6864 MHz External crystal/oscillator Great clock for UART communication with no error
1 MHz External crystal/oscillator
1.8432 MHz External crystal/oscillator Great clock for UART communication with no error
1 MHz External crystal/oscillator
8 MHz Internal oscillator Might cause UART upload issues. See comment above this table
4 MHz Internal oscillator Derived from the 8 MHz internal oscillator
2 MHz Internal oscillator Derived from the 8 MHz internal oscillator
1 MHz Internal oscillator Derived from the 8 MHz internal oscillator

Регулятор-стабилизатор частоты вращения коллекторного двигателя с МК

Рейтинг:   / 5

Подробности
Просмотров: 1678

Виктор Тушнов, г. Луганск
В настоящее время наряду с асинхронными и коллекторными двигателями переменного напряжения в быту и на производстве широко используются коллекторные двигатели постоянного тока. Их преимущество обусловлено, в первую очередь, простотой схемы управления, так как здесь нет необходимости использовать дорогостоящие частотные преобразователи. Для стабилизации частоты вращения таких двигателей можно обойтись без громоздких и сложных в обслуживании систем на основе датчиков положения ротора и тахогенераторов. Кроме того, данные двигатели обеспечивают значительный крутящий момент, при возможности регулирования частоты вращения ротора в широких пределах (от максимальной рабочей частоты, превышающей у некоторых двигателей 5000 об/мин, почти до нуля).

How to install

Boards Manager Installation

This installation method requires Arduino IDE version 1.6.4 or greater.

  • Open the Arduino IDE.

  • Open the File > Preferences menu item.

  • Enter the following URL in Additional Boards Manager URLs:

  • Open the Tools > Board > Boards Manager… menu item.

  • Wait for the platform indexes to finish downloading.

  • Scroll down until you see the MiniCore entry and click on it.

  • Click Install.

  • After installation is complete close the Boards Manager window.

Manual Installation

Click on the «Download ZIP» button. Exctract the ZIP file, and move the extracted folder to the location «~/Documents/Arduino/hardware». Create the «hardware» folder if it doesn’t exist.
Open Arduino IDE, and a new category in the boards menu called «MajorCore» will show up.

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