ArduinoIDE и ATmega16, формируем bootloader

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Зачем? В целях обучения, покопаться в потрохах, исходниках. Плюс не очень хочется некоторые вещи на асме писать. Итак, сегодня я опишу как изготовить bootloader для ATmega16. После того, как вы его прошьёте, ArduinoIDE увидит вашу ATmega16, однако чтобы писать скетчи, придется еще слегка попотеть, но об этом в другой раз.

Для начала опишу железо, которое я использовал:

PinBoardII - использовал как программатор, чтобы запрограммировать фьюзы и залить загрузчик в ATmega16;
Собственно ATmega16 из комплекта с PinBoardII;
Провода для подключения;
В качестве программы для прошивки фьюзов и заливки bootloader я использовал SynaProg;
ArduinoIDE v1.0.4.

Безусловно вы можете использовать другие программаторы (ISP), и программы для прошивки, мне было проще использовать именно эти. ATmega16 у меня с внешним кварцем на 16 MHz, хотя это не так принципиально. Главное правильно посчитать фьюзы и указать параметры компиляции в Makefile. Я установил следующие фьюзы: hfuse 0xD0, lfuse 0xFF. Описаний в интернете много, сегодня не буду на этом останавливаться.

Все пути, использованные в этой статье относительные. Они указаны относительно каталога, где установлен ArduinoIDE. Например, ArduinoIDE установлен в каталоге: "D:\Programs\arduino-1.0.4". Поэтому, если указан путь "hardware\arduino\bootloaders", значит полный путь будет таким: "D:\Programs\arduino-1.0.4\hardware\arduino\bootloaders".

Ок, перейдем к главному сегодняшнему вопросу, что нужно, чтобы прошить bootloader:
- Исходники bootloader. Их можно найти в папке "hardware\arduino\bootloaders". Для доработки я взял исходники из каталога "
hardware\arduino\bootloaders\atmega"
- Для простоты я создал подкаталог atmega16 
("hardware\arduino\bootloaders\atmega16") и скопировал туда все файлы из atmega ("hardware\arduino\bootloaders\atmega\*").

- Далее я переименовал файл "ATmegaBOOT_168.c" в "ATmegaBOOT_16.c". Люблю порядок.
- Поскольку имена регистров разные на разных МК, я добавил соответствие имен 168 и 16, а именно, перед main() я добавил следующие строки (начиная с 272 строки):

#ifdef __AVR_ATmega16__
#define MCUSR MCUCSR
#define WDTCSR WDTCR
#define WDCE WDTOE
#endif

Однако этого оказалось мало и мне пришлось исправить еще одну строку (402 строка). Вместо UCSRC = 0x06; я добавил следующий текст:

#ifdef __AVR_ATmega16__
	UCSRC = _BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0);
#else
	UCSRC = 0x06;
#endif

Это нужно для корректной записи данных в регистр UCSRC. Для этого нужно установить старший бит (т.е. URSEL).

С исходниками всё. Но радоваться рано, нужно еще поколдовать с Makefile. Что такое Makefile? Об этом в другой раз, хотя, почему бы не почитать в интернете, вдруг я так и не соберусь об этом написать?

- Далее я изменил Makefile, чтобы можно было скомпилировать bootloader и получить желанную прошивку;
- Я заменил имя в строке 20 на:

PROGRAM    = ATmegaBOOT_16

Подобную замену я сделал в строке 27:

MCU_TARGET = atmega16

- ATmega16 не имеет расширенных фьюзов (efuse), потому я убрал их использование из строки программирования фьюзов. Это строка 41, я просто удалил efuse, см. текст ниже:

-e -u -U lock:w:0x3f:m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m

Осталось немного, добавить параметры для ATmega16. Я вставил их перед строкой 199:

atmega16: TARGET = atmega16
atmega16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
atmega16: AVR_FREQ = 16000000L
atmega16: $(PROGRAM)_atmega16_16MHz.hex

atmega16_isp: atmega16
atmega16_isp: TARGET = atmega16_16MHz
atmega16_isp: HFUSE = DD
atmega16_isp: LFUSE = FF
atmega16_isp: isp

Здесь явно просматриваются два блока, первый (atmega16) исопльзуется для компиляции, второй (atmega16_isp) для программирования. Сразу скажу, что второй блок я не использовал, а прошивал с помощью SynaProg, просто мне так было удобней. Поэтому в данной статье не описан процесс прошивки с использованием Makefile. Если кому то понадобится - расскажу отдельно.

- Остался один маленький шаг, чтобы скомпилировать bootloader. Но я лентяй, я пишу командные файлы, мне так удобней, вот мой файл comp.cmd, который поможет нам скомпилировать bootloader:

SET PATH=D:\Programs\a-104\arduino-1.0.4\hardware\tools\avr\utils\bin\;D:\Programs\a-104\arduino-1.0.4\hardware\tools\avr\bin\;%PATH%
make -f Makefile clean
make -f Makefile atmega16

Первая строка. У вас наверняка ArduinoIDE располагается в другом каталоге. Исправьте, поменяв путь "D:\Programs\arduino-1.0.4" на путь, куда установлен ваш ArduinoIDE.

- Стартуем comp.cmd и получаем "на выходе" файл ATmegaBOOT_16_atmega16_16MHz.hex

Собственно, для начала всё. Берем этот файл и прошиваем его в ATmega16 любой удобной программой. Я воспользовался SynaProg, прописав, предварительно фьюзы, затем bootloader.

На сегодня достаточно, завершим это увлекательное путешествие в другой раз :)

О чем я планирую рассказать в другой раз (впрочем, за раз не получится):
- Как добавить ATmega16 в список поддерживаемых "Arduino" в AruinoIDE
- Как описать соответствие портов ATmega16 и пинов Arduino16
- Как исправить исходники wiring, чтобы можно было использовать большинство библиотек ArduinoIDE, чтобы писать скетчи для ATmega16
- Выложить исходники всего того, что здесь описано
- Что то, о чем забыл упомянуть :)
 

Кстати, совсем забыл. Конечно это всё хорошо, но нужно помнить, что любые исправления, после установки новой версии ArduinoIDE придется переносить туда, что не очень удобно, но... такова жизнь!

Удачи!
 

Клапауций
Offline
Зарегистрирован: 10.02.2013

kisoft пишет:
Кстати, совсем забыл. Конечно это всё хорошо, но нужно помнить, что любые исправления, после установки новой версии ArduinoIDE придется переносить туда, что не очень удобно, но... такова жизнь!

Если изменения будут производиться исключительно в папке ArduinoIDE *\arduino-1.0.4\hardware\arduino\*, то её можно скопировать в папку "Мои документы", подпапку "Arduino", подпапку "hardware" (*\MyDOC\Arduino\hardware\*), тогда ArduinoIDE подхватит всё содержимое этой папки.

Остаётся отредактировать содержимое подпапок: удалить не относящиеся к Atmega16 лоадеры, в boards.txt вписать свою плату или несколько вариантов своей платы.

Так же можно создать несколько копий папки "arduino"(*\MyDOC\Arduino\hardware\arduino_1\*,*\MyDOC\Arduino\hardware\arduino_2\*,*\MyDOC\Arduino\hardware\arduino_N\*) и в них запиливать исходники под свои нужды.

Тогда, не зависимо от версии ArduinoIDE, оригинальные исходники останутся целы, а нам можно будет пользовать модифицированные.

зы

Админам форума: приструните, пожалуйста, свой псевдоинтеллектуальный редактор постов - зачем эти двойные расстояния между строками сообщения, и прыгающая страница после каждого перевода сроки?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Спасибо за информацию, попробую.

triada13
Offline
Зарегистрирован: 04.01.2013

kisoft для особо тупого поясни плиз что конкретно выкинуть?


	/* m16,m32,m169,m8515,m8535 */
	UBRRL = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1);
	UBRRH = (F_CPU/(BAUD_RATE*16L)-1) >> 8;
	UCSRA = 0x00;
	UCSRC = 0x06;
	UCSRB = _BV(TXEN)|_BV(RXEN);

Я правильно понимаю?, вместо 402 строки пишем:

#ifdef __AVR_ATmega16__
	UCSRC = _BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0);
#else
	UCSRC = 0x06;
#endif

А что делать с 403 строкой? удалять ее, или оставить, и код должен выглядеть так?

	/* m16,m32,m169,m8515,m8535 */
	UBRRL = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1);
	UBRRH = (F_CPU/(BAUD_RATE*16L)-1) >> 8;
	UCSRA = 0x00;
#ifdef __AVR_ATmega16__
	UCSRC = _BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0);
#else
	UCSRC = 0x06;
#endif	
UCSRB = _BV(TXEN)|_BV(RXEN);
#endif

#if defined __AVR_ATmega1280__

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

403 оставить как есть. В новом исходнике она у тебя 407 строка. Т.е. последний исходник правильный.

 

triada13
Offline
Зарегистрирован: 04.01.2013

kisoft пишет:

403 оставить как есть. В новом исходнике она у тебя 407 строка. Т.е. последний исходник правильный.

 

А 408 в нов. редакции тоже правильно?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Трудно сказать, исходники дома. Самое простое повторить два действия снова ;) А также если будет ошибка при компиляции. Лишний #endif здесь даст ошибку

triada13
Offline
Зарегистрирован: 04.01.2013

Хорошо, буду пробовать.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Напиши мне на мой ник рамблер ру, вышлю исходники, пока не знаю куда выложить. Кстати фьюзы уже знаешь какие программировать? Кварц внешний? Частота кварца?

Исходники, точнее все файлы, которые я изменил относительно arduino1.0.4, я выложил здесь:

https://sites.google.com/site/kisoft63/pinboardii/pinboardii там единственный приложенный файл-архив.

Если что не так, пишите (емейл мой я в начале этого сообщения написал)

UPD: да, 408 строка правильная, там #endif должен быть

rammires
Offline
Зарегистрирован: 04.04.2013

kisoft, спасибо за проделанную работу. Как раз заинтересовало, как использовать arduino ide для МК atmega32 - больше пинов, чем в 328, найти ее легко, да и цена адекватная, в отличии от 328, которые днем с огнем не найдешь, да и цены из-за этой arduin-ы на нее не адекватные...

Я правильно понял, по поводу нумерации пинов - они соответсткуют стандартной дуине плюс новые продолжают нумерацию? То есть шильды подключаются к тем же пинам, что и на обычной дуине?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ввиду того, что на ATmega16/32 нет "живых" Arduino, использование этих МК связано с некоторыми проблема поддержки софта и т.п. Сейчас в ядре ArduinoIDE есть поддержка ATmega16, например, можно поискать файл iom16.h, это как раз для неё. Но, это только на уровне ядра, а в библиотеках поддержки нет, увы.

Далее пины. Единого стандарта нет. Если посмотреть в исходники, да и так, в библиотеки, можно увидеть блоки условной компиляции, которые реализуют то или иное управление пином, например в Mega и в Uno. Самый простой пример, SPI, в Uno одни пины, в Mega - другие. Да, собственно, о чем говорить, цоколевка МК для большинства разная. Бывают приятные исключения, например, ATmega16 & ATmega32 (насколько я помню, там выводы МК одинаковые, в смысле на одинаковых ногах - одинаковые порты и функции).

Пины для Arduino16 (назову её так условно). Их там больше, чем в Uno, их там 32 из них 8 аналоговых. Это как раз три порта по 8 бит. PWM опять же, в ATmega16 пинов с PWM - три. Теперь о гравном, что такое подключить шилд к Arduino16, это вопрос больше философский, потому что Arduino16 - это у нас в голове и не реализовано никем из производителей. Разумеется можно приблизить Arduino16, например, к Uno, разведя плату так же, чтобы одинаковые пины были на одних и тех же местах. А дополнительные вынести на другие разъемы. Наверное есть и другие варианты.

Потому вопрос скорее к тому, кто будет это делать, как он собирается делать. Т.е. приближать к стандартному, например, Uno или нет. Опять же возникает вопрос, а нужно ли это? Обычно свои произведения (слово "поделки" не понравилось) программируются на ассемблере и это уже совсем не Arduino в его обычном понимании.

Лично я, как уже говорил, сделал это для того, чтобы некоторые вещи быстро обкатать, не заморачиваясь на ассемблер. Но если бы я паял сам, то вряд ли я стал использовать ArduinoIDE, скорее бы перешел на ассемблер. А чтобы не было холивара, нужно сразу сказать, ассемблер для одних задач, C++ для других. На C++ написать чаще проще, однако и места оно будет занимать не в пример больше (как правило! Но не всегда).

По пинам я могу сказать просто, смотрите в выложенном мной архиве файл pins_arduino.h, там есть (и даже нарисовано) соответствие номеров пинов и их функциональное назначение. Например:

static const uint8_t SS   = 12;
static const uint8_t MOSI = 13;
static const uint8_t MISO = 14;
static const uint8_t SCK  = 15;

Сравниваем с пинами на Mege:

static const uint8_t SS   = 53;
static const uint8_t MOSI = 51;
static const uint8_t MISO = 50;
static const uint8_t SCK  = 52;

Можете еще посмотреть на стандартный вариант в "hardware/arduino/variants/standard", там вообще:

static const uint8_t SS   = 10;
static const uint8_t MOSI = 11;
static const uint8_t MISO = 12;
static const uint8_t SCK  = 13;

По поводу принципов нумерации, могу сказать следующее. Как правило, в начале идут цифровые пины, в стандарте это 0 - 13, далее аналоговые 14 - 21. В свою очередь, цифровые пины (впрочем и аналоговые тоже) могут функционировать в разных вариантах, например, пины 0 - 1 используются для RX - TX, с 10 по 13 - SPI. Т.е. вцелом можно сказать (ИМХО, конечно, могу и не ошибаться), что аналоговые пины - они всегда в верхней части нумерации, т.е. они всегда с бОльшими номерами. Собственно я руководствовался именно этим принципом, когда делал pins_arduino.h.

Ой, кажется я заболтался. Короче говоря, если хотите ответа и не нашли его в том, что я сейчас наваял, то попробуйте сформулировать это вопрос как то по другому. Готов помочь, чем смогу.

 

alex_r61
alex_r61 аватар
Offline
Зарегистрирован: 20.06.2012

kisoft пишет:

Далее пины. Единого стандарта нет. 

А Mighty-1284/644, по ногам совпадают с MEGA16/32. Зачем велосипед изобретать?

Не проще было их файлы довести под M16/32?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Я сразу написал, что мне было интересно покопаться в исходниках и в исходниках от разработчика. А доделывать чужие доработки мне не интересно.
К тому же мои доработки не предполагают полной поддержки ардуино16, а всего лишь работа тех библиотек, что мне нужны сейчас. Может быть потом, кто знает.
Да, спасибо за информацию, я не видел mighty, возможно посмотрю

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Оказалось всё достаточно просто. Допилил. Ардуино16 в arduinoIDE работает, в том числе Tone.
Статья будет чуть позже.

rammires
Offline
Зарегистрирован: 04.04.2013

Ждем-с...

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ок, планирую в отдельной теме, на днях напишу.
Главная проблема в таймерах. В простейших случаях помогает аналогия с атмега8.
Еще, нужно быть готовым, что в библиотеках будут проблемы. Вчера с triada13 поднял IRremote, правда не до конца, добью еще.

Rimidalw
Offline
Зарегистрирован: 04.04.2012

Привет. Что нибудь получилось с бутлоадером под атмегу16? Очень интересно, а то под мой проект ног не хватает у 168 и 328 атмег. А целую мегу использовать как то через чур.

triada13
Offline
Зарегистрирован: 04.01.2013

Да получилось, я свою уже прошил.

Rimidalw
Offline
Зарегистрирован: 04.04.2012

triada13 пишет:

Да получилось, я свою уже прошил.

Ну так поделитесь своими тайными знаниями, а лучше bootloaderom и фьюзами.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Всю неделю как белка в колесе. Бутлоадер можно найти по ссылке в 8 сообщении. Фьюзы я уже написал, D0 и FF для внешнего кварца на 16 МГц.
Завтра, максимум послезавтра выложу апдейт для 1.0.4

Rimidalw
Offline
Зарегистрирован: 04.04.2012

kisoft пишет:
Всю неделю как белка в колесе. Бутлоадер можно найти по ссылке в 8 сообщении. Фьюзы я уже написал, D0 и FF для внешнего кварца на 16 МГц. Завтра, максимум послезавтра выложу апдейт для 1.0.4

Спасибо. Все работает! :)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Бутлоадера мало, хотя блинк должен работать :)

 

Статья по изменению ядра и ссылки на исходники можно найти здесь

Сяу Ляу Вей
Offline
Зарегистрирован: 25.10.2013

 а тип USB устройства и его символьное имя для  Atmega32u4 записаны в загрузчике ?

http://arduino.ru/forum/programmirovanie/pro-micro-328u4#comment-44911

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Леонардовский Загрузчик не смотрел, кстати, надо глянуть.
Хотя в нем usb аппаратное.. Короче говоря - не могу помочь, не знаю, увы., надо погуглить

Сяу Ляу Вей
Offline
Зарегистрирован: 25.10.2013

kisoft пишет:
Леонардовский Загрузчик не смотрел, кстати, надо глянуть. Хотя в нем usb аппаратное.. Короче говоря - не могу помочь, не знаю, увы., надо погуглить
Если посмотрите - напишите пожалуйста. Спасибо

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

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

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

Всем доброго времени суток. Уважаемый kisoft не могли бы Вы подсказать что и где нужно допилить, что бы использовать Atmega16 с кварцем на 8МГц? Просто в этом деле я пока более чем дилетант. Если простенький скетч еще могу накидать, то прикрутить проц к ArduinoIDE пока не знаю как. Конечно во всем можно разобраться но это время, а нужно срочно оживить существующий микроконтроллер на Atmega16 с кварцем на 8МГц. Проблема может вылезти с частотой потому, что надо будет использовать ШИМ. Вообще в идеале использовать готовое решение если таковое имеется.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Вы хотите в ArduinoIDE включить поддержку атмеги16 или в другой среде. Если ArduinoIDE, то в какой версии? Для 1.6 я еще не делал доработку.
А вцелом нужно править ядро, загрузчик и boards.txt.

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

Да хотелось бы прикрутить к ArduinoIDE. Версия не важна, есть и 1.0.5 и 1.6. Просто выбор на эту платформу пал из-за простоты программирования. Как писал выше имеется нес-ко контроллеров на основе Atmega16 но там впаяны кварцы на 8МГц. Причем физическая замена кварцев на 16МГц крайне не привествуется.

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Для академических целей неплохо. Для практических конструктором как-то проще и быстрее:)

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

Конструктором вроде бутлодер и текст для boards.txt уже подготовлен. А вот библиотеки будут нормально с ним работать? Или надо что то еще сделать? Если что то не пойдет и все это дело зависнет, могут голову отвернуть и сказать, что так и было :).

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

Кстати еще вопрос. Имеет ли значение в каком корпусе Atmega16? В данном случае имеем корпус SMD с 44-я пинами.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Для ArduinoIDE v1.0.5 Вы можете скачать готовую доработку ядра здесь. Только boards.txt на 8МГц исправьте (возможно подойдет и Ваша уже исправленная).

Какие грабли ждут каждого, кто хочет использовать "не стандартные" Ардуино:
1. Поддержки у производителя нет, поэтому придется патчить ядро и прочее при переходе на новую версию ArduinoIDE.
2. Любая новая библиотека (не из комплекта ArduinoIDE) может глючить как угодно (придется копаться и патчить под свой камень).
3. В нужный момент может не оказаться патченной версии ядра для доработки "на месте".

Варианты:

1. Маяться и разгребать грабли.
2. Использовать другую среду, которая не требует патчей (например, Atmel Studio и другие).

Оба варианта со своими плюсами и минусами, так что, се ля ви :) Второй вариант более надежен, потому что не требует патчей. Ну потеряете возможность использовать функции типа digitalRead/Write например, однако от этого еще никто не умирал ;)

Если будут вопросы, спрашивайте. Быстрый ответ не гарантирую, но разобраться помогу.

UPD: Да, в другом корпусе - это не важно, просто выводы у неё будут другие, например PB0 это уже будет не ножка 1, а ножка 40 и т.п. Возможно есть и другие отличия, но не принципиальные, впрочем это мои предположения, я не копался с этим. Знаю, например, что в Atmega328 появляются два лишних пина A6 & A7 и то с особенностями, про другие камни - не подскажу. Это всегда можно посмотреть в даташите.

 

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

Спасибо.

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Impuls-sv пишет:
Если что то не пойдет и все это дело зависнет, могут голову отвернуть и сказать, что так и было :).

Ну при такой постановке вопроса я бы вообще не использовал ардуино, это все-таки игрушка. ;)

А если серьезно, то атмега16 не пробовал, а атмега8 работают отлично.

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

А тут как раз и не ардуино. Это микроконтроллеры на основе Atmega16. У них своя архитектура и периферия. От Ардуино планируется использовать только среду программирования, так как ее возможностей должно хватить в данном случае. AVR Studio вроде покруче будет, но и на порядок сложнее в освоении. А сейчас просто надо запустить как можно быстрее. Показать, что оборудование работает.

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Impuls-sv пишет:
А тут как раз и не ардуино. Это микроконтроллеры на основе Atmega16. У них своя архитектура и периферия. От Ардуино планируется использовать только среду программирования, так как ее возможностей должно хватить в данном случае. AVR Studio вроде покруче будет, но и на порядок сложнее в освоении. А сейчас просто надо запустить как можно быстрее. Показать, что оборудование работает.

Гм, имхо, ардуино это и есть "среда програмирования" для обучения, для серьезных задач не предназначенная.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Impuls-sv, Если Вы не руководитель, которому практически пофиг, на чем будет реализована система (и он совершенно прав, ведь для этого и есть в штате разработчики!), то я бы порекомендовал всё таки не использовать wiring (ArduinoIDE). Напишите замену wiring функций, которые Вы используете, практически и всё.

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

Есть и другой подход, использовать ArduinoIDE, быстренько отчитаться о сделанной работе, а потом маяться и плеваться. Утешая свою совесть тем, что якобы потом переделаем по ходу дела. Для меня это лажовый вариант и вообще не вариант.

Разумеется, Вы выберете свой вариант :)

ПС У меня многолетний опыт, в т.ч. руководством разработки (вед.специалист, рук.отдела), потому я знаю про эти варианты не по наслышке.

Всё, не буду больше мозг полоскать :) Забейте на мою философию :)

 

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

KVadik пишет:

Гм, имхо, ардуино это и есть "среда програмирования" для обучения, для серьезных задач не предназначенная.

Ну в приципе да. Просто как я сказал выше ее уровня на текущий момент как раз хватит. Хотя "среда програмирования" это всего лишь програмная часть. Ардуиновское железо тоже оформлено как игрушечный конструктор.

Impuls-sv
Offline
Зарегистрирован: 13.03.2015

kisoft пишет:

Напишите замену wiring функций, которые Вы используете, практически и всё.

Вот с этим как раз пока большая проблема. В смысле с написанием.

kisoft пишет:

Есть и другой подход, использовать ArduinoIDE, быстренько отчитаться о сделанной работе, а потом маяться и плеваться. 

Почти так и есть, но с небольшим отличием. Нужно чтобы зашевелилось железо (в смысле не контроллеры, а то чем они управляют) для проверки работоспособности, соответствия кинематики и т.д. А полное программирование скорее будет делать специально обученный человек :).

 

bulat943
Offline
Зарегистрирован: 19.09.2016

можно ли зделать загрузчик на 12 МГц для атмега16?перечитал ветку и не совсем все понял(начинающий в ардуино,но с атмега опыт небольшой есть)

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

bulat943 пишет:

можно ли зделать загрузчик на 12 МГц для атмега16?перечитал ветку и не совсем все понял(начинающий в ардуино,но с атмега опыт небольшой есть)

можно - внимательно читай первый пост

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014
bulat943
Offline
Зарегистрирован: 19.09.2016

Пробовал конструктором-ноль,из первого поста понятия не имею что делать,например-

"Остался один маленький шаг, чтобы скомпилировать bootloader. Но я лентяй, я пишу командные файлы, мне так удобней, вот мой файл comp.cmd, который поможет нам скомпилировать bootloader:..."

пробовал и в авр студио,и в квавр-ничерта не понимаю в какой программе компилировать,и что такое командная строка тоже не пойму(есть командная строка в виндовс 7 но в данном случае это точно не оно)

попробовал прошить это-http://avrproject.ru/publ/poleznaja_informacija/ispolzovanie_zagruzchika_bascom_avr/4-2-0-109 все работает без проблем на частоте 8 мгц(то есть атмега16 шьется через переходник на сн340т)

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

bulat943 пишет:

пробовал и в авр студио,и в квавр-ничерта не понимаю в какой программе компилировать,и что такое командная строка тоже не пойму(есть командная строка в виндовс 7 но в данном случае это точно не оно)

написано же чёрным по белому 

==============

- Остался один маленький шаг, чтобы скомпилировать bootloader. Но я лентяй, я пишу командные файлы, мне так удобней, вот мой файл comp.cmd, который поможет нам скомпилировать bootloader:

1 SET PATH=D:\Programs\a-104\arduino-1.0.4\hardware\tools\avr\utils\bin\;D:\Programs\a-104\arduino-1.0.4\hardware\tools\avr\bin\;%PATH%
2 make -f Makefile clean
3 make -f Makefile atmega16

Первая строка. У вас наверняка ArduinoIDE располагается в другом каталоге. Исправьте, поменяв путь "D:\Programs\arduino-1.0.4" на путь, куда установлен ваш ArduinoIDE.

- Стартуем comp.cmd и получаем "на выходе" файл ATmegaBOOT_16_atmega16_16MHz.hex

=========

как это ещё можно иначе понять, что бы пытаться компилить в авр студии или где-то ещё - где сказано про авр студию, если сказано 

- Стартуем comp.cmd и получаем "на выходе" файл ATmegaBOOT_16_atmega16_16MHz.hex

bulat943
Offline
Зарегистрирован: 19.09.2016

вот я и не понимаю где скачать этот comp.cmd

где вообще,в какой программе найти этот comp.cmd?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

bulat943 пишет:

вот я и не понимаю где скачать этот comp.cmd

где вообще,в какой программе найти этот comp.cmd?

вот мой файл comp.cmd, который поможет нам скомпилировать bootloader:

1 SET PATH=D:\Programs\a-104\arduino-1.0.4\hardware\tools\avr\utils\bin\;D:\Programs\a-104\arduino-1.0.4\hardware\tools\avr\bin\;%PATH%
2 make -f Makefile clean
3 make -f Makefile atmega16
 

==

расшифровываю - создать руками файл comp.cmd и скопировать в него содержимое кода.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Все правильно, если тема называется ArduinoIDE.... то было бы удивительно, если бы мы собирали загрузчик другой программой.
Ок, упростим объяснение, comp.cmd (текст которого я приводил) использует компилятор из пакета ArduinoIDE.

bulat943
Offline
Зарегистрирован: 19.09.2016

В общем не нашел я как создать файл com.cmd (у меня получается com.cmd.ini и нифига не компилируется),где стартуем com.cmd,видимо это не для меня

за сим откланиваюсь,удачи!

 

 

 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

bulat943 пишет:

В общем не нашел я как создать файл com.cmd (у меня получается com.cmd.ini и нифига не компилируется),где стартуем com.cmd,видимо это не для меня

за сим откланиваюсь,удачи!

не каждому программисту дан талант создавать файлы...

bulat943
Offline
Зарегистрирован: 19.09.2016

не все тут такие "талантливые",да и не похоже что вы таланливый человек-вы даже толком обьяснить не можете что и как...