Програмирование ATMEGA8 от Arduino Uno r3

newkrendel
newkrendel аватар
Offline
Зарегистрирован: 03.11.2013

Доброго времени суток всем!

Обзавёлся относительно недавно китайской копией Arduino uno r3. Работает нормально, но ввиду отсутствия свободного времени не могу никак ничего особо интересного с ней проделать.

Вопрос состоит в другом. Нужно мне сделать одно устройство на микроконтроллере. Выбрал кристалл по возможностям и по цене: им оказался ATMega8 в ДИПе. В принципе портов хватает, возможностей тоже. Программа написана, испытана на врдуино с родным кристаллом и макетной плате. Но теперь стал вопрос: нужно програму, написаную на Arduino IDE записать в мегу 8, которая просто куплена голая, а как это сделать - я не хнаю. Почитал я форум, понял, что мне для этого нужно будет использовать скетч ArduinoISP. Но вопросы всё равно остались. Например:

1. В програме на Arduino IDE выводы адресованы как Pin1, Pin2 и т.д. Нужно ли менять что-то в программе или адресация как-то завязана по портам? Если она завязана, то как?

2. Как я понимаю, мне нужно записать для начала в пустой кристалл бутлоадер. Так ли это? Если да, то где его взять?

Надеюсь на понимание вопроса.

newkrendel
newkrendel аватар
Offline
Зарегистрирован: 03.11.2013

http://arduino.ru/forum/programmirovanie/kak-ozhivit-arduino-atmega8a - это я читал, ответ на 2-й вопрос этот пост помоему даёт.

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

1. попиново процессоры совпадают, но чуть отличаются аппаратно

2. лоадер готовому устройству нужен как попу наган - выбираете плату "Arduino NG or older w/ ATmega8 " компилите под неё прошивку и заливаете программатором.

newkrendel
newkrendel аватар
Offline
Зарегистрирован: 03.11.2013

Спасибо за ответ! Значит лоадер мне не нужен. А можна вкратце, зачем он тогда вообще? Также Вы сказали программатором, вы имели ввиду Arduino ISP-программатор? Просто у меня отдельного программатора нет. Без внешнего кварца програмировать можно?

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

newkrendel пишет:

Спасибо за ответ! Значит лоадер мне не нужен. А можна вкратце, зачем он тогда вообще? Также Вы сказали программатором, вы имели ввиду Arduino ISP-программатор? Просто у меня отдельного программатора нет. Без внешнего кварца програмировать можно?

нужен для удобства частого залива прошивок в контроллер по двум проводам

любым ISP-программатором, который вам доступен физически

насколько я помню, фабричные установки фьюзов в 8-й меге настроены на 1 мегагерц от внутреннего осциллятора, т.е. без внешнего кварца - если нужно другое значение, то придётся соответсвенно прошивать фьюзы.

newkrendel
newkrendel аватар
Offline
Зарегистрирован: 03.11.2013

Если я Вас правильно понял, то вот моя последовательность действий:

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 такое подойдёт?

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

между пунктом 3 и 4 пропущен пункт из ссылки, где вы смотрели "оживление чего-то там" - "3. Изменим FUSE"

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

в файле boards.txt изменить atmega8.build.f_cpu=16000000L на частоту работы контроллера

перезагрузить Ардуино ИДЕ

затем

"Загрузить с помощью программатора"

всё

*с фьюзами осторожно - можно сделать кирпич из контроллера

newkrendel
newkrendel аватар
Offline
Зарегистрирован: 03.11.2013

Т. е. фьюзы мне записать между пунктами 3 и 4 методом, описаным по той ссылке что я читал. 

Файл boards.txt редактирывать для того, чтобы arduino Ide корректно работало с МК?

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

редактируем посты, опережая друг-друга - через минут 15 допишу в свете ваших редакций и вопросов

newkrendel
newkrendel аватар
Offline
Зарегистрирован: 03.11.2013

Прошу прощения за редактирование постов, просто хочется донести до Вас свои вопросы как можно грамотнее и понятнее.

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

фьюзы обычно конфигурируют перед прошивкой процессора - не принципиально, но лучше перед

в boards.txt в вашем случае atmega8.build.f_cpu=8000000L

фьюзы для 8-ми мегагерц:

-U hfuse:w:0xc1:m -U lfuse:w:0x84:m

как это воткнуть в командную строку avrdude для вашего программатора из дуино - поищите на форуме, я юсбаспом шью - не хочу странного насоветовать.

newkrendel
newkrendel аватар
Offline
Зарегистрирован: 03.11.2013

Огромное спасибо! Помоему Вы всё разложили по полочкам.

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

в догонку оболочка для дуде - там и фьюзы можно вбить и прошивка интуитивно понятна.

http://arduino.ru/forum/obshchii/zapretit-skachivanie-programmy-iz-arduino#comment-27493