Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Разное » Arduino Pro Micro на основе ATmega32u4


Arduino Pro Micro на основе ATmega32u4

Сообщений 1 страница 16 из 16

1

В продаже можно найти такую разновидность Arduino на микроконтроллере ATmega32u4.

http://s3.uploads.ru/0etJs.jpg

Она интересна тем что содержим микроконтроллер с аппаратным модулем USB, который можно использовать в своих конструкциях с поддержкой USB.
Конечно же писать будем не в Arduino IDE, а в BASCOM-AVR. :)

В МК нестандартный загрузчик и Flip его не шьет! В первую очередь нужно установить драйвер. Его можно найти в папке "Drivers" Arduino IDE.
Теперь напишем простую программу, мигающую светодиодом.

Код:
$regfile = "m32u4def.dat"
$crystal = 16000000
$hwstack = 64
$swstack = 64
$framesize = 32

Config Portd.5 = Output

Enable Interrupts

Do
  Toggle Portd.5
  Waitms 100
Loop

Скомпилировать думаю знаете как... :D
Теперь полученный HEX нужно как-то зашить в МК, но как писал выше, USB загрузчик нестандартный от Arduino... :dontknow:
Из того что нашел в сети, этот загрузчик использует протокол AVR109 и выполняется при сбросе МК, а при подаче питания выполняется основная программа. После сброса МК, загрузчик работает несколько секунд и если данных не поступило, начинает выполнятся основная программа. Заметил что при этом код начинает выполнятся в несколько раз медленнее.

Для прошивки подойдет avrdude но он консольный и для него написал небольшую GUI программу, облегчающую прошивку.

http://s7.uploads.ru/aWAs3.png

Прошивка выполняется следующим образом. Запускаете программу Boot32u4.exe, указываете путь к HEX-файлу и выбираете COM порт, который присвоен загрузчику (номер порта можно узнать из диспетчера задач, посмотрев какой порт появляется на несколько секунд при сбросе МК). После этого подключаете через USB модуль к компьютеру и нажимаете на кнопку "Прошить". Сразу же после этого нужно перезагрузить МК чтобы стал активным загрузчик (кнопки перезагрузки нет и нужно замыкать контакты RST и GND). Если все пройдет нормально, в МК запишется прошивка. :)

Программа Boot32u4.exe с исходниками и avrdude.exe http://pure-basic.narod.ru/forum_files/ … ot32u4.zip

+3

2

А я чот с этой мелкотой не церемонился, просто по ISP шил...
Тут скорее интересно, как из этого аппаратного USB сделать какое-нить дефалтовое устройство (клаву, мыш, геймпад) через Баском.

0

3

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

0

4

Проверил.
USB нормально работает. Прошивка создающая HID и тестовая прога для компа. http://pure-basic.narod.ru/forum_files/ … t_32u4.zip

0

5

Пётр написал(а):

Проверил.
USB нормально работает. Прошивка создающая HID и тестовая прога для компа

А исходником поделитесь?

0

6

Пётр, попробовал твой путь и прошивку - работает, но есть проблемы/неудобство, например:

- Boot32u4.exe работает до СОМ21, а у меня плата хватает порты с 31 и выше, пришлось проявить ловкость с принудительным переназначением область портов;
- поймать эти 1-2 секунды для прошивки - неудобно, да и Boot32u4.exe большинство ошибок не обрабатывает, висит себе просто и всё;
- неудобно, что нет кнопки сброса сразу на плате (жмоты китайцы, сразу видно, сами такой штукой не пользуются).

Не совсем понимаю, насколько здорово (здоровье) постоянно так передергивать USB из порта в HID (для системы)...

В общем по мне проще шить классическим способом.

Отредактировано RDW (2016-01-17 13:38:49)

0

7

Кстати говоря есть ещё такой вариант (Nano v3):

http://robotstore.cz/wp-content/uploads/2014/07/dccduino-nano-v3-0-atmega328-ch340g-arduino-rozsirujici-deska-6.jpg

Тут слава богу ISP выведен, ничего придумывать не нужно...правда для нормальной эксплуатации МК в связке с передачей по USB не обошлось с халтурой/экономией, керамический резонатор на 16МГц, хотя логичнее было б установить кратный кварц частоте обмена, в общем пришлось дорабатывать, менять на 18.432МГц...

0

8

RDW написал(а):

Boot32u4.exe работает до СОМ21, а у меня плата хватает порты с 31

Список портов редактируемый и можно с клавиатуры вести любой номер порта. В крайнем случае, в папке Src есть исходники.

RDW написал(а):

поймать эти 1-2 секунды для прошивки - неудобно

Ловить не нужно. Сначала необходимо нажать на кнопку "Прошить", а затем сбрасывать МК. Программа сама словит нужный момент и начнет прошивку.

RDW написал(а):

Не совсем понимаю, насколько здорово (здоровье) постоянно так передергивать USB из порта в HID (для системы)

Система это воспринимает как переподключение USB устройства, т. е. штатная ситуация.

RDW написал(а):

Кстати говоря есть ещё такой вариант (Nano v3)

Там ATmega328P, т. е. без аппаратного модуля USB.

0

9

А средствами баскома эту ардуину никак не прошить?

0

10

В списке программаторов баскома не нашел AVR109.

0

11

Да, но ардуина как-то умудряется её прошить... правда мотом у меня бутлоадер слетает. Больше года валяется эта плата - никуда не могу её приспособить.

0

12

Aрдуина поддерживает AVR109, применительно к этой плате.
Чем не подходит прошивка через прогу в первом сообщении?

-NMi- написал(а):

Больше года валяется эта плата - никуда не могу её приспособить.

Нет никаких идей что можно сделать на МК с аппаратными модулем USB?

0

13

Дык идеи то нет пока, вот как прошить её - это вопрос. По ISP не будешь же каждый раз цеплять, верно. А по USB вообще классно бы было, как например с 328р - воткнул и прошил за 1 минуту.

0

14

Прога из первого сообщения прошивает по USB.

0

15

Подтверждаю, но очень неудобно, видимо надо привыкать.

0

16

Неудобно только замыкать контакты RST и GND (кнопки на плате нет), а с остальном проблем не возникает.

0


Вы здесь » Программирование ATMEL в BASCOM. » Разное » Arduino Pro Micro на основе ATmega32u4