Програмирование ATMEGA8 от Arduino Uno r3
- Войдите на сайт для отправки комментариев
Доброго времени суток всем!
Обзавёлся относительно недавно китайской копией Arduino uno r3. Работает нормально, но ввиду отсутствия свободного времени не могу никак ничего особо интересного с ней проделать.
Вопрос состоит в другом. Нужно мне сделать одно устройство на микроконтроллере. Выбрал кристалл по возможностям и по цене: им оказался ATMega8 в ДИПе. В принципе портов хватает, возможностей тоже. Программа написана, испытана на врдуино с родным кристаллом и макетной плате. Но теперь стал вопрос: нужно програму, написаную на Arduino IDE записать в мегу 8, которая просто куплена голая, а как это сделать - я не хнаю. Почитал я форум, понял, что мне для этого нужно будет использовать скетч ArduinoISP. Но вопросы всё равно остались. Например:
1. В програме на Arduino IDE выводы адресованы как Pin1, Pin2 и т.д. Нужно ли менять что-то в программе или адресация как-то завязана по портам? Если она завязана, то как?
2. Как я понимаю, мне нужно записать для начала в пустой кристалл бутлоадер. Так ли это? Если да, то где его взять?
Надеюсь на понимание вопроса.
http://arduino.ru/forum/programmirovanie/kak-ozhivit-arduino-atmega8a - это я читал, ответ на 2-й вопрос этот пост помоему даёт.
1. попиново процессоры совпадают, но чуть отличаются аппаратно
2. лоадер готовому устройству нужен как попу наган - выбираете плату "Arduino NG or older w/ ATmega8 " компилите под неё прошивку и заливаете программатором.
Спасибо за ответ! Значит лоадер мне не нужен. А можна вкратце, зачем он тогда вообще? Также Вы сказали программатором, вы имели ввиду Arduino ISP-программатор? Просто у меня отдельного программатора нет. Без внешнего кварца програмировать можно?
Спасибо за ответ! Значит лоадер мне не нужен. А можна вкратце, зачем он тогда вообще? Также Вы сказали программатором, вы имели ввиду Arduino ISP-программатор? Просто у меня отдельного программатора нет. Без внешнего кварца програмировать можно?
нужен для удобства частого залива прошивок в контроллер по двум проводам
любым ISP-программатором, который вам доступен физически
насколько я помню, фабричные установки фьюзов в 8-й меге настроены на 1 мегагерц от внутреннего осциллятора, т.е. без внешнего кварца - если нужно другое значение, то придётся соответсвенно прошивать фьюзы.
Если я Вас правильно понял, то вот моя последовательность действий:
1. Залить скетч ISP в ардуино.
2. Подключить к ардуино камушек с помошью макетной платы и нескольких проводов (без кварца, по схеме http://arduino.cc/en/uploads/Tutorial/SimpleBreadboardAVR.png)
3. Изменить Tools->Board на "Arduino NG or older w/ ATmega8", а Tools->Programmer на "Arduino as ISP"
4. Прошить мой скетч в atmega8.
5. Изменить фьюзы (по надобности). Например я захочу поднять частоту до 8МГц. (Чем и как прошивать фьюзы?)
6. Отключить мегу8 от "программатора" и использовать её по назначению.
Если что-то не так, поправльте пожалуйста. И ещё, не могли бы Вы подсказать мне где узнать соответствие выводов atmega8 классификации пинов в arduino IDE. http://arduino.ru/Hardware/ATMega168pins такое подойдёт?
между пунктом 3 и 4 пропущен пункт из ссылки, где вы смотрели "оживление чего-то там" - "3. Изменим FUSE"
на какой частоте будет работать 8-я мега - внутренний осциллятор, внешний кварц? - соответсвенно фьюзы поменять, принцип такой же как по той ссылке, но без включенной загрузочной области флеша.
в файле boards.txt изменить atmega8.build.f_cpu=16000000L на частоту работы контроллера
перезагрузить Ардуино ИДЕ
затем
"Загрузить с помощью программатора"
всё
*с фьюзами осторожно - можно сделать кирпич из контроллера
Т. е. фьюзы мне записать между пунктами 3 и 4 методом, описаным по той ссылке что я читал.
Файл boards.txt редактирывать для того, чтобы arduino Ide корректно работало с МК?
редактируем посты, опережая друг-друга - через минут 15 допишу в свете ваших редакций и вопросов
Прошу прощения за редактирование постов, просто хочется донести до Вас свои вопросы как можно грамотнее и понятнее.
фьюзы обычно конфигурируют перед прошивкой процессора - не принципиально, но лучше перед
в boards.txt в вашем случае atmega8.build.f_cpu=8000000L
фьюзы для 8-ми мегагерц:
-U hfuse:w:0xc1:m -U lfuse:w:0x84:m
как это воткнуть в командную строку avrdude для вашего программатора из дуино - поищите на форуме, я юсбаспом шью - не хочу странного насоветовать.
Огромное спасибо! Помоему Вы всё разложили по полочкам.
в догонку оболочка для дуде - там и фьюзы можно вбить и прошивка интуитивно понятна.
http://arduino.ru/forum/obshchii/zapretit-skachivanie-programmy-iz-arduino#comment-27493