Программирование ATtiny85 с Arduino-IDE и внешним генератором 8 МГц
У меня есть плата разработки digispark ATtiny85, и я использую Arduino IDE для ее программирования вместе с Arduino UNO в качестве аппаратного программатора.
Я успешно сжег предохранители для внутренней 1 и 8 МГц RC-генераторов с помощью оригинального Arduino в качестве ISP скетч (вы поймете, почему я сказал, что первоначально в минуту), но как мое приложение нуждается в точном времени, я хотел бы использовать внешний генератор, тем не менее, каждый раз, когда я пытался записать/программы загрузчика/предохранители с помощью Arduino IDE и с помощью оригинальной Arduino в качестве ISP, а в avrdude в косах печально известный (ой). Я искал в интернете и нашел обновленную версию Arduino в качестве ISP скетч, который должен обновленная версия, она имеет лишь один недостаток: она не может делать ничего другого, чем жечь/программы загрузчика/предохранителей, это означает, что оно не может быть использован для программирования ATtiny85 как и оригинальная Arduino в качестве поставщика услуг интернета мог сделать.
Поэтому, не колеблясь, я протестировал его, чтобы записать/запрограммировать загрузчик/предохранители для внутренних RC-генераторов 1 и 8 МГц, и он работал отлично, и, как и ожидалось, он не смог загрузить код. Но оригинальный Arduino as ISP успешно загрузил код. Когда я попытался записать/запрограммировать загрузчик/предохранители для внешнего кварцевого генератора 8 МГц, используя обновленный Arduino в качестве ISP, он работал безупречно... пока я не заметил, что обычный Arduino в качестве ISP больше не может загружать код, и мне представилась печально известная (Фу!) ошибка.
Позвольте мне подробно объяснить разницу в связях между этими двумя скетчами. Обновленный Arduino as ISP генерирует тактовый сигнал на pin #9, который подключается к CLKI ATtiny85 (он же Pin #2 "PB3"), в то время как оригинальный Arduino as ISP вообще не использует этот пин.
Я нашел обновленный Arduino как ISP на форуме по обмену электронными стеками, но, к сожалению, я потерял ссылку на вопрос, который содержал, почему этот обновленный Arduino как ISP лучше. Я могу предоставить оба кода, хотя, если кто-то нуждается в них.
Мой кристалл подключен в обоих случаях, сжигая/программируя загрузчик/предохранители и пытаясь загрузить мой код.
Это печально известная (фу!) ошибка, о которой я говорил.
Это моя текущая проводка. Обратите внимание, что я подключаю pin #9 к CLKI ATtiny85 (он же Pin #2 "PB3"), только когда я использую обновленный Arduino в качестве ISP.
Это фактическая проводка.
Мои два вопроса:
- Как я могу записать/запрограммировать загрузчик/предохранители ATtiny85 для использования внешнего генератора 8 МГц или 16 МГц?
- Как я могу загрузить код своего приложения после записи/программирования загрузчика/предохранителей?
Я надеюсь, что ответы уточнят, как эти связи будут отличаться, если это произойдет.
Заранее большое спасибо.
1 ответ
Лучший ответ:
Если вы посмотрите на схему Digispark то увидите резисторы и стабилитроны подключенные к XTAL1 и XTAL2:
Они предназначены для USB-сигналов D+ и D - сигналов, которые выдает бит-бэнг Digispark. Я глубоко подозреваю, что кристалл просто не будет резонировать с этими соединенными частями.
Чтобы вернуться к работающему Дигиспарку, вам, вероятно, придется снова ввести сигнал на XTAL1 и перепрограммировать предохранители на внутренний OSC.
Спасибо, я рад, что вы попросили настоящую проводку. Могу ли я "теоретически" удалить резисторы R1 и R2, чтобы я мог это проверить? В проекте конечного пользователя будет использоваться не цифровой парк, а аттини из чистого металла на печатной плате., @Abd-AlRahman Muhammad
Да, это должно позволить вам использовать внешний кристалл. Хотя он больше не будет бит-бэнговать USB, но я подозреваю, что вы это понимаете., @timemage
Да, я понимаю, большое вам спасибо за то, что уделили мне время. Я попробую сделать то, что сказал, и перезвоню вам, если вы не возражаете. Спасибо., @Abd-AlRahman Muhammad
Может пройти несколько часов, прежде чем я увижу какое-либо обновление или отвечу на него., @timemage
Никаких проблем, не торопитесь., @Abd-AlRahman Muhammad
Это сработало, большое спасибо. Словами этого на самом деле не выразить., @Abd-AlRahman Muhammad
Возможно, было бы проще использовать голый пакет ATtiny85 DIL и линейный регулятор напряжения 5 В, но, похоже, вы больше ничего не используете в Digispark. Старый скетч "Arduino как провайдер" поддерживал три диагностических светодиода, которые были полезны. AVR-программаторы могут быть довольно недорогими - например, мне нравится [USB-AVR-программатор Pololu](https://coolcomponents.co.uk/products/pololu-usb-avr-programmer-v2-1) ([еще один](https://www.hobbytronics.co.uk/pololu-usb-avr-prog-v2)), @RedGrittyBrick
- Возникли проблемы с определением CTC на таймере 1 с помощью ATTiny85.
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Связь последовательного порта Digispark
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
Может быть, это просто потому, что я устал, но: Вы запрограммировали предохранители для использования с кристаллом. Разве вы не прикрепили кристалл?, @timemage
@timemage, хороший комментарий, я забыл упомянуть, что мой кристалл *подключен* в обоих случаях, записывая/программируя загрузчик/предохранители *и* при попытке загрузить мой код., @Abd-AlRahman Muhammad
Вы можете показать, как это подключено?, @timemage
@timemage, да, дайте мне 5 минут, чтобы загрузить надлежащее изображение, пожалуйста., @Abd-AlRahman Muhammad
@timemage, сообщение отредактировано., @Abd-AlRahman Muhammad
Я вроде как искал фотографию настоящей проводки. Но ваша схема ставит вопрос: у вас нет никаких конденсаторов нагрузки?, @timemage
@timemage, без проблем я могу загрузить изображение фактической проводки, извините за недоразумение. Но, чтобы ответить на ваш вопрос, если под нагрузочными конденсаторами вы подразумеваете конденсаторы, подключенные между контактами кристалла и землей, то нет, они оба отключены. Но если вы имеете в виду разделительные конденсаторы, подключенные между VCC и GND, да, они у меня подключены, один 0,1 мкФ, если быть точным., @Abd-AlRahman Muhammad
Давайте [продолжим эту дискуссию в chat](https://chat.stackexchange.com/rooms/122669/discussion-between-timemage-and-abd-alrahman-muhammad)., @timemage
@jsotola, мне жаль, я просто хотел охватить больше людей в разных областях. Теперь этот пост удален., @Abd-AlRahman Muhammad