Duino на внутреннем резонаторе, может комуто будет полезно.
- Войдите на сайт для отправки комментариев
Duino на внутреннем резонаторе, может комуто будет полезно.
Чем удобна ардуина? Кроме простоты прототипирования основным удобством является язык программировани с кучей библиотек. Но готовить конечное устройство на плате ардуино дорого и не очень удобно. Ради уменьшения цены и размеров можно избавиться от многих деталей, в том числе и от кварцевого резонатора. В конце-концов для работы минимальной обвязкой является сам микроконтроллер и питание. Конечно внутренний резонатор контроллера не особо точен, да и частота всего 8МГц, но для многого хватит и этого.
Первое что понадобится для того чтобы избавитья от кварца – это дописать в ардуино иде файл .\arduino-0022\hardware\arduino\boards.txt
Фьюзы высчирывал вот этим калькулятором: http://www.engbedded.com/fusecalc/
Простым способом, сначала забил в него старые фьюзы контроллера (взять можно из того-же boards.txt), получив набор параметров микроконтроллера просто поменял строку Ext. Crystal Osc. На Int. RC Osc. 8Mhz default value И прочитал там новые фьюзы где вводил старые.
#пример для ATmega168
#Я не стал ничего придумывать, я просто скопировал кусок
#для ардуины про мини, переименовал его и поменял фьюзы.
##############################################################
pro.name=MyName duino int8 MHz ATmega168
pro.upload.protocol=arduino
pro.upload.maximum_size=14336
pro.upload.speed=19200
# Поменял эти 3 строки
pro.bootloader.low_fuses=0xE2
pro.bootloader.high_fuses=0xDD
pro.bootloader.extended_fuses=0xF8
#
pro.bootloader.path=atmega
pro.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex
pro.bootloader.unlock_bits=0x3F
pro.bootloader.lock_bits=0x0F
pro.build.mcu=atmega168
#И поменял эту строку
pro.build.f_cpu=8000000L
#
pro.build.core=arduino
pro.build.variant=standard
##############################################################
После доработки файла boards.txt, запустил ардуино, выбрал появившуюся в платах MyName duino int8 MHz ATmega168.
Для проверки использовал blink, но стандартный 13 было не интересно, поправил на 0 (это 2й вывод микроконтроллера в пдип корпусе). Скомпилировал с зажатым шифтом чтобы узнать куда ложится хекс файл и прошил вот по этой инструкции: http://freeduino.ru/arduino/isp.html Но используя новые фьюзы.
Надо учесть что если контроллер уже прошивался раньше, то первую прошивку фьюзов в него надо производить с тем кварцем с которым он раньше был.
Соответствие выводов для разъема ХЗ дуины, микросхемы ft232 и контроллера ATmega168-20PU (ATmega328-20PU)
X3 - ft232 - ATmega168-20PU
1 - CTS(pin11) - MISO (pin18)
2 - DSR(pin9) - SCK (pin19)
3 - DCD(pin10) - MOSI (pin17)
4 - R(pin6) - RESET (pin1)
Я прочел и нифига не понял :)
В папке ардуины в подпапках \hardware\arduino\ есть файл boards.txt, он отвечает за параметры той дуины которую ты выбрал. Параметры в основном зависят от процессора, фьюзов выставленных для этого процессора и частоты на которой этот процессор работает. Напряжение (в действительности не напряжение питания а напряжения HIGH), а также внешний кварц или внутренний резонатор использовать зависит от фьюзов которые зашиваются в процессор (фьюзы или fuse bits определяют кучу параметров но в данном случае интересны именно частота и напряжение). Соответственно чтобы поменять частоту и напряжение нужно поменять фьюзы в файле boards.txt просто добавив туда кусок как новую плату ардуино. А так как микроконтроллер не менялся то достаточно скопировать кусок с подобного контроллера и поменять параметры фьюзов и частоты.
А программировать то её так же как и обычную ардуину или же с помощью вот фьюзов?!
Программировать или с помощью программатора, или если контроллер в дип корпусе воткнуть в обычную дуину и программировать как обычную.
спасибо, это действительно полезно.
ведь так можно писать программы на МК не на асме или голых сях, а на удобном Wiring-е.
автору респект!
а еще расскажи, как прошить самодельную ардуино (аналог duemilanove) программматором громова.
просто мне как новичку надо что бы кто-то один раз потыкал пальцем и показал, что и откуда брать в даташите, а
дальше я сам)
заранее спасибо!
а еще расскажи, как прошить самодельную ардуино (аналог duemilanove) программматором громова.
просто мне как новичку надо что бы кто-то один раз потыкал пальцем и показал, что и откуда брать в даташите, а
дальше я сам)
заранее спасибо!
Программатором громова никогда не пользовался, нет ком порта.
Вроде про него неплохо написано тут: easyelectronics.ru/avr-shag-pervyj-programmator.html
Сам пользовался таким (как в первой схеме, без буфера): easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html#more-268
Но общий принцип такой прошивки один:
1) у контроллера есть ножки MISO MOSI SCK RESET GND их узнать можно по даташиту на контроллер и подсоединить к соответствующим выводам программатора.
2) Нужна программа для прошивки, вариантов много, но я предпочитаю AVRDUDE
3) Нужен хекс файл с прошиваемой программой, например Ардуино при компиляции скетча такой создает, узнать где он лежит можно нажав кнопку компиляции с зажатым шифтом (кроме ардуино 1.0, у нее это ставится в настройках)
4) Нужно знать фьюзы прошиваемого контроллера, их можно посчитать самому или если это ардуиноподобный проект - посмотреть в файле boards.txt (хранится в каталоге ардуины, в подкатологах)
5)Прошивать с аврдуде, сначала фьюзы, затем программу. Для удобства можно взять AVRDUDE-GUI
(скачать можно тут yuki-lab.jp/hw/avrdude-GUI/avrdude-GUI-1.0.5.zip или тут www.geocities.jp/arduino_diecimila/bootloader/files/avrdude-GUI-1.0.5.zip)
Вот выложил видео на ютубе как это работает:
www.youtube.com/watch
Здравствуйте,вопрос.А на сколько сложно будет "внедрить" в среду Мегу8? Ну т.е чтоб в меню в списке появилось что-то типа Ардуина8-8мГц. Если я правильно понимаю,то все дело в Фюз битс.Т.е можно сделать по аналогии с Вашим примером?
Никакой сложности нет, в среде ардуина уже есть атмега8, чтобы использовать без резонатора надо поменять фьюзы.
Добавлю еще такую "хитрость". Если у вас уж есть "полноценна" ардуина, то программатор горомова (и проч.) собирать не обязательно. Ардуина тоже может выступать в роли программатора. Для этогоЖ
1. В нее нужно зашить скетч ArduinoISP (идет в примерах с ArduinoIDE).
2. Подключить ваш кристал к ардуине как показано на http://arduino.cc/en/Tutorial/ArduinoISP,
3. в boards.txt, в раздел описаный в первом сообщении дописать строчку (дополнительно к тому что привел Mogalkov):
pro.upload.using=arduinoisp
После этого скетч в кристал будет заливаться использую ардуину в качестве программатора, просто по нажатию кнопки Upload. Без необходимости искать "куда ложится хекс файл" и узнавания что "такое avrdude" и т.п.
P.S. После изменений boards.txt нужно перезапустить ArduinoIDE.
Есть несколько микроконтроллеров формата Ардуино (DIP-корпуса в панельках). Есть несколько микросхем Атмега 168, 328 (прошиты загрузчики).
Просто их прошивать в панельках - естественно получается и работает (выковыриваю "родную" микросхему из Ардуино, в панельку ставлю новую, подключаю и прошиваю скетч как обычно, прошитую микросхему вытаскиваю, подключаю на макетной плате и все хорошо).
А вот теперь вопрос: хочу заставить одну из своих поделок работать без кварцевого резонатора (как раз по теме обсуждения). Можно ли просто повторить то, что описано с файлом boards.txt и добавить туда соответствующую "плату" и просто прошить микросхему так же, как я описал чуть выше? Будет прошиваться? После установки на монтажную плату "взлетит" без кварца?
Или все-таки шить через ArduinoISP и подключать Ардуино к макетке, на которой установлен "прошиваемая" Атмега?
Практически уверен что это дело вкуса. Нравится прошивать в панельках и не смущает необхомость дергать туда-сюда "родную" - можно в панельках, нравится уже установленную на макетке - можно через ArduinoISP.
Вообщем способ прошивания не должен влиять на дальнейший полет и то куда будет установлен камень. Ключевыми тут будут именно правильные фьюзы.
Ммм.. проблемка нарисовалась.
Изменения в boards.txt полностью соответствуют тому, что выше приведено в топике:
Прошиваю камень в iteaduino v1.1 (вставляю 168 чип в панельку и шью соответствующим образом). Прошивка работает (проверял так - прошивал "блинк" с выбором "duemilanove atmega168"- вижу, как моргает светодиод. Потом шил тот же "блинк" с выбором этой новой платы "8МГц, атмега 168" - светодиод моргает, но явно с другой частотой - на вид примерно вдвое чаще, чем в первом случае). Т.е. прошиваем вроде как правильно.
После этих тестов шью уже нормальный скетч, с которым работаю. Прошитый чип устанавливаю в макетку (еще не со всеми компонентами определился) и проверяю его работу.
Обнаружены следующие грабли:
1. Если чип прошиваем как обычный (с кварцем) и ставим его в макетку, где кварц установлен - все работает нормально.
2. Если чип шьем как с "внутренним осциллятором" и ставим на макетку, где кварц еще не убран - все работает нормально.
3. Если чип шьем как с "внутренним осциллятором" и ставим на макетку, где кварц уже убран (вместе с конденсаторами) - не работает.
Может, кто-то подскажет, почему так? как правильно прошить чип, чтобы он работал без кварца? Может, ноги для кварца при этом надо как-то коммутировать? (вроде как везде видел в схемах - они просто висят в воздухе)?
http://arduino.cc/en/Tutorial/ArduinoToBreadboard - вот еще какую ссылку нашел... но тут на картинках 168, в описании - 328 атмега... и файл с конфигурацией тоже для 328 атмеги...
Помогите, как в этот файл добавить "минимальную" конфигурацию для 186 атмеги?
Кстати, еще интересно - в этой "минимальной" конфигурации даже резистор в 10к между reset и VCC предлагается выбросить для получения "truly minimal configuration"... а у меня эта минимальная конфигурация ну никак "взлетать" не хочет и я даже не представляю, в какую сторону копать :(
Есть мысли?
Не выходит цветок каменный :( нужна помощь.
Дано:
1. Плата iteaduino на базе атмега328 (в нее прошит скетч ArduinoISP, между Reset и GND установлен конденсатор на 10мкФ)
2. собран кабель согласно http://freeduino.ru/arduino/isp.html (раздел Mega-ISP)
3. "подопытная" плата - ардуино нано v3.0 (тоже на базе атмеги328)
4. в файле boards.txt сделан вот такой раздел:
Данные взяты от платы Arduino Duemilanove w/ ATmega328, изменена скорость прошивки на 19200 и добавлена строчка о том, что использовать для прошивки arduinoisp. Все остальные параметры оставлены без изменений.
Требуется:
Прошить подопытную плату с помощью ардуинки.
Текущее положение дел:
1. Берем "блинк"
2. В качестве порта для коммуникации выбираем тот порт, к которому подключена плата с ArduinoISP
3. В качестве "платы" выбрана новосозданная Arduino Duemilanove w/ ATmega328 (ISP)
4. Нажимаем Upload
5. Видим, как на плате ArduinoISP моргают светодиоды RX/TX (видно, что моргают заметно медленнее, чем обычно - оно и понятно, скорость-то понизили)
6. На прошиваемой плате видим помаргивание светодиода на D13 (только в процессе прошивки). RX/TX на прошиваемой плате - молчат.
7. в окне с отладочными данными выходят следующие строчки:
и прошивка, конечно, не удалась.
Что делаю неправильно? В каком месте накосячил?
По описанию выглядить все правильно. Немного лень вчитываться в вашу статью, сравните подключение с http://arduino.cc/en/Tutorial/ArduinoISP
Я по этой схеме прошивал голый камень с кварцем. Правда я в него вначале заливал бутлоадер (хотя, по логике, отсутсвие этого шага не должно мешать прошивке через ISP).
так же, где-то натыкался, что какие-то ревизи UNO (я так понял у вас ее аналог) - имеют баг в бутлоадере, из-за которого скетч ArduinoISP не корректно работает и нужно вначале прошить фиксаный бутлоадер.
Подключение полностью соответствует туториалу.
Про бутлоадер - попробую. с ним явно могут быть проблемы (мы уже общались на эту тему - сторожевой таймер именно на этой плате не срабатывал). Попробую беспроблемную нано сделать программатором и прошить или голый чип с кварцем (или тиньку, благо приобрел пару штучек).. а вообще цель - отработать технологию прошивки и уже нормально шить платы: http://devicter.ru/goods/Iteaduino-GBoard-V1-0-ATmega и http://devicter.ru/goods/Iteaduino-Iboard
Кстати, может, кто-то имел дело с этими платами?
Еще вариант - сгородить преобразователь USB-COM и шить с его помощью.. но это доп.корпус (и его еще нужно купить).
Новые данные.
Ардуино Нано в качестве программатора Ардуино ISP замечательно сработал для tiny45. Правда, сработало только после того, как воспользовался вот этим советом:
Т.е. программатор работает.
А теперь опять неудача:
Пытаюсь залить обычный блинк в "дочернюю" плату (аналог Arduino Duemilanove w/ ATmega328 (ISP)). Параметры для платы приводил в 15 постинге этого обсуждения.
Компилируется, но не заливается :(
Ошибки вот такие:
Куда копать?
Нашел решение!!!
В файле с определением "платы" надо поправить вот так:
После этого скетч спокойно залился в "дочернюю" платку!
Спасибо, очень позновательно. Я как раз присматриваюсь к tiny45
Снова подниму тему. Хочу сделать одна поделку, но тут выяснилось, что закончились кварцы и конденсаторы к ним. Устройство простое, тайминги вроде нигде никакие особо не используются, логика на уровне обычного "блинк".
Захотелось запустить это все на внутреннем резонаторе (кварца же нет;)).
В файл boards.txt вношу секцию как в первом посте (продублирую):
Прошиваю голую (без обвязки, но с бутлоадером) 168 микросхему сначала с кварцем (позаимоствовал с другой макетки, где другая "поделка" ждет своего часа): "блинк". Моргает.
Теперь выбираю эту "модифицированную" плату - шьется нормально, моргает в два раза чаще. Ну, изменения есть, шьется, моргает. Хорошо.
Снимаю питание с контроллера, вынимаю из макетки кварц и его конденсаторы. Включаю и "Индейское национальное жилище. Фиг-вам, называется" (с)
Пробую прошить уже без кварца - все, не шьемся.
Возвращаю кварц и конденсаторы - заморгали частенько, шьемся.
Как быть? что делаю не так, чтобы запустить 168 без кварцевого резонатора?
МК - ATMEGA168-20PU
Вот родственная тема http://arduino.ru/forum/apparatnye-voprosy/bootloader-v-atmega8l
Я на внутренем atgema8l шил.
Но, таки пришлось через online калькулятор расшифровывать фьюзы и подбирать "правиьлные".
И еще, а что значит "шьется нормально"? Вы учитываете что сами фьюзы в него выставляются только в момент заливки бутлоадера? (если через ArduinoIDE, а не самому дудку дергать)
То есть, если вы просто выбрали "другую" плату и залили скетч - фьюзы не обновятся. И как работало на внешнем кварце - так и останется.
Так что "нужно выбрать плату, залить бутлоадер...." и вот с этого момента она станец "бескварцевой".
Если вы пойдете в File/Preferences и включите Show verbose... upload, то увидите что при заливке скетчей - фьюзы даже не мелкают в параметрах вызова AvrDude
О, спасибо! Вот где собака-то порылась. Сегодня попробую прошить сначала бутлоадер, а потом уже все остальное.
Прошил :) теперь камень перестал шиться совсем :(
Что с кварцем, что без него :( Последнее, что залилось - вот на этой ккконфигурации:
Теперь ни через ISP ни через программатор на FT232RL не шьется.
Ругань обычная: avrdude: stk500_getsync(): not in sync: resp=0x00
Какие варианты по восстановлению?
оживил, камень снова работает! (живучий!)
теперь бы понять, все-таки, какая правильная конфигурация для 168 с внутренним осциллятором?
При попытке прошиться через ArduinoISP со следующей конфигурацией:
В общем-то, конфигурация из первого поста, только указано, что программатором будет ArduinoISP
Вылетает оошибка:
Я прошил несколько микросхем с такой вот конфигой...работает безупречно...
spa-sam, спасибо! Заработало!!!
Сегодня (с Вашей помощью) запустил мегу168 на внутреннем осцилляторе (правда обычную, с пониженным потреблением пока еще не держал в руках). Обнаружилось, что работа с датчиками типа DS18B20 осуществляется нормально (видимо, грамотная библиотека), NRF24 - эти модули тоже заработали нормально.
А вот датчики DHT11 - данные отдавать отказались :(, аналогичная проблема там, где используется ИК-приемник (подобная проблема будет, похоже везде, где используются тайминги).
Видимо, много зависит от того, насколько грамотно библиотеки сделаны.
Поправил немного конфиг, кому интересно...
Смысл изменения в строке fabduino.bootloader.high_fuses=0xde с этой кинфигурацией отключен детектор низкого напряжение...точнее он установлен на 1.8 V, в предыдущей было 2.7 V... Такое снижение обусловлено работой от батареи до последнего )...пока работает...будем тестить дальше
перевел pro mini (mega328p) c 16MHz на 8 внутренние. Оказалось что IDE 1.5.2 со скетчем arduinoISP не хочет работать. С версией 1.0.5-r2 все получилось. Для boards.txt есть редактор удобный кстати в сети.
Делал это чтоб подключить напрямую к литию через vin ради энергосбережения. Знает ли кто - нужно выпаивать кварц на 16 чтоб через него ничего не утекало, или можно оставить? по идее на него уже ничего не подается, но мало ли.
Duino на внутреннем резонаторе, может комуто будет полезно.
Скомпилировал с зажатым шифтом чтобы узнать куда ложится хекс файл и прошил вот по этой инструкции:
http://freeduino.ru/arduino/isp.html Но используя новые фьюзы.
Надо учесть что если контроллер уже прошивался раньше, то первую прошивку фьюзов в него надо производить с тем кварцем с которым он раньше был.
что такое и для чего нужен "зажатый шрифт"
для чего полезно знать, куда ложится hex файл, разьве не в первый байт после загрузчика?
у меня фьюзы для 328ой атмеги вот такие...
a328p_8MHz.name=atmega328p (RC 8 MHz)
a328p_8MHz.upload.protocol=arduino
a328p_8MHz.upload.maximum_size=32256
a328p_8MHz.upload.speed=115200
a328p_8MHz.bootloader.low_fuses=0xe2
a328p_8MHz.bootloader.high_fuses=0xde
a328p_8MHz.bootloader.extended_fuses=0x5
a328p_8MHz.bootloader.path=optiboot
a328p_8MHz.bootloader.file=a328p_8MHz_e2_de_5.hex
a328p_8MHz.build.mcu=atmega328p
a328p_8MHz.build.f_cpu=8000000L
a328p_8MHz.build.core=arduino
a328p_8MHz.build.variant=standard
правда я ещё залил бутлоадер для внутреннего резонатора, выпаял кварц и два конденсатора - добавилось ещё два пина... :)