Так как же правильно заливать bootloader в свое устройство на (например) Atmega8 через Arduino UNO ?
И как заливать потом скетч в этот самый ардуино который вы собрали на макетке?
Какие типы программаторов можно использовать для прошивки бутлоадера и скетча?
Об этих и других вопросах напишу в этом бложике.
Много всякой воды в интернетах пишут а всё равно не договаривают.
Начнем с того что Arduino это всего лишь программа которая заливается в микроконтроллер и потом дает вам возможность заливать поверх неё свои подпрограммы в тот же микроконтроллер ( скетчи ). Arduino использует те же регистры которые используют тру-программисты когда пишут свои программы для микроконтроллеров БЕЗ использования Arduino. Если вы удивлены что микроконтроллеры можно программить без ардуины то почитайте про концепцию однокристальных ЭВМ хотя бы.
Итак, суровый список ошибок которые допускают при прожиге "чистых" микроконтроллеров (м-к) пытаясь залить в них bootloader (бутлоадер) Arduino :
1) неправильное соединение RST-MISO-MOSI-SCK-VDD-GND линий
всегда рекомендовано соединять сначала земли (GND, Ground) основной платы и макетницы,
потом сигнальные проводники (RST,MISO,MOSI,SCK) и только потом питание (VDD, +3.3V, +5V)
на самом сайте http://www.arduino.cc/en/Tutorial/ArduinoToBreadboard описан процесс но не расставлены акценты.
Значит, делаем так - всё в лоб (мисо в мисо, моси в моси и т.д.)
2) Неправильный кварц. Для АТмеги8 критично важно поставить кварц именно 16МГц (!) - по умолчанию все настройки и прошивки которые содержит среда разработки ардуины (IDE) заточены именно под 16МГц.
Можно, конечно, поставить и 12 и 8 и что хотите но нужно будет пересчитать контрольные числа которые необходимо будет записать в регистры м-к (так называемые FUSE регистры). Это делать не рекомендую так как вероятность ошибиться возрастает в разы, да и никто не хочет сидеть и лопатить документацию на микроконтроллер - нужно разработать прогу и быстро, минут за 15 ! :)
Значит, ставим 16МГц. Соединяем всё по схеме сверху . Обязательно подаем питание на VCC и AVCC , землю на GND и AGND .
К слову, резистор к питанию не обязательно 10к брать (как говорят на сайте), можно и 16к и меньше 10к - от этого зависит только время "загрузки" - чем больше сопротивление тем медленнее будет происходить сброс м-к, тут можно экспериментировать. Конденсаторы берите строго от 18 до 22 пФ (пикоФарад = 10 в -12 степени Фарад )
Так же обязательно соедините вход RESET микроконтроллера с землей (GND) через конденсатор, примерно 100нФ. В общей сложности, обвеска ресета должна выглядеть так :
3) Использование самой новой версии Ардуино IDE для прожига. Эта внезапная особенность прошивки бутлоадера в новенькую АТмегу может попортить много нервов.
Во избежание - пользуйте версию 1.0.3 - http://arduino.googlecode.com/files/arduino-1.0.3-windows.zip в противном случае можете получить сообщение консоли вида "avrdude error..."
4) Теперь нужно запрограммить саму платку Ардуино Уно что бы она была софтовым программатором для нашей АТмеги8 :
И как заливать потом скетч в этот самый ардуино который вы собрали на макетке?
Какие типы программаторов можно использовать для прошивки бутлоадера и скетча?
Об этих и других вопросах напишу в этом бложике.
Много всякой воды в интернетах пишут а всё равно не договаривают.
Начнем с того что Arduino это всего лишь программа которая заливается в микроконтроллер и потом дает вам возможность заливать поверх неё свои подпрограммы в тот же микроконтроллер ( скетчи ). Arduino использует те же регистры которые используют тру-программисты когда пишут свои программы для микроконтроллеров БЕЗ использования Arduino. Если вы удивлены что микроконтроллеры можно программить без ардуины то почитайте про концепцию однокристальных ЭВМ хотя бы.
Burning the Bootloader (using Arduino UNO)
В этом примере берется Ардуино УНО (на базе АТМега328) и любой домашний проект на АТМега8.Итак, суровый список ошибок которые допускают при прожиге "чистых" микроконтроллеров (м-к) пытаясь залить в них bootloader (бутлоадер) Arduino :
1) неправильное соединение RST-MISO-MOSI-SCK-VDD-GND линий
всегда рекомендовано соединять сначала земли (GND, Ground) основной платы и макетницы,
потом сигнальные проводники (RST,MISO,MOSI,SCK) и только потом питание (VDD, +3.3V, +5V)
на самом сайте http://www.arduino.cc/en/Tutorial/ArduinoToBreadboard описан процесс но не расставлены акценты.
Значит, делаем так - всё в лоб (мисо в мисо, моси в моси и т.д.)
2) Неправильный кварц. Для АТмеги8 критично важно поставить кварц именно 16МГц (!) - по умолчанию все настройки и прошивки которые содержит среда разработки ардуины (IDE) заточены именно под 16МГц.
Можно, конечно, поставить и 12 и 8 и что хотите но нужно будет пересчитать контрольные числа которые необходимо будет записать в регистры м-к (так называемые FUSE регистры). Это делать не рекомендую так как вероятность ошибиться возрастает в разы, да и никто не хочет сидеть и лопатить документацию на микроконтроллер - нужно разработать прогу и быстро, минут за 15 ! :)
Значит, ставим 16МГц. Соединяем всё по схеме сверху . Обязательно подаем питание на VCC и AVCC , землю на GND и AGND .
К слову, резистор к питанию не обязательно 10к брать (как говорят на сайте), можно и 16к и меньше 10к - от этого зависит только время "загрузки" - чем больше сопротивление тем медленнее будет происходить сброс м-к, тут можно экспериментировать. Конденсаторы берите строго от 18 до 22 пФ (пикоФарад = 10 в -12 степени Фарад )
Так же обязательно соедините вход RESET микроконтроллера с землей (GND) через конденсатор, примерно 100нФ. В общей сложности, обвеска ресета должна выглядеть так :
Во многих схемах С21 игнорируют и с программаторов линия РСТ сразу идет на пин м-к, но это может в некоторых случаях привести к неспособности прошивки м-к.
3) Использование самой новой версии Ардуино IDE для прожига. Эта внезапная особенность прошивки бутлоадера в новенькую АТмегу может попортить много нервов.
Во избежание - пользуйте версию 1.0.3 - http://arduino.googlecode.com/files/arduino-1.0.3-windows.zip в противном случае можете получить сообщение консоли вида "avrdude error..."
4) Теперь нужно запрограммить саму платку Ардуино Уно что бы она была софтовым программатором для нашей АТмеги8 :
Загружаем этот скетч в плату Ардуино.
Выбираем программатор arduino as ISP в меню сервис в подменю программатор.Не забываем вернуть программатор на место,когда будем программировать снова платы arduino.
Выбираем в меню микроконтроллер АТМега8 (он в подпункте "Arduino NG or older" или сразу будет ATMega8 - в зависимости от версии программной оболочки):
Если Вы просто хотите загрузить в микроконтроллер загрузчик,то необходимо через меню сервис выбрать записать загрузчик,этим вы установите необходимые значения в FUSE регистры. .
После нескольких секунд Arduino BootLoader будет загружен в АТМегу8.
Комментариев нет:
Отправить комментарий