Внешний генератор тактовой частоты для контроллеров Atmega328P-AN
- Войдите на сайт для отправки комментариев
Всем бобра!
Долгое время мурыжил свой проект, но благодаря в частности и данному форуму, все работает, тьфу-тьфу. Теперь настала пора переходить к разводке платы, и отказу от девелоперских плат. Дело в том, что проект объеденяет в себе пять ардуин про мини. Чтоб построить плату на голых процессорах, нужно их затактовать. Лепить 5 кварцев к каждому камню, наверное, глупо. Есть идея поставить какой-нить TXCO на 16 МГц, и засунуть тактирующий сигнал на XTAL1 пин. Где-то я читал, что так сделать можно.
Собственно вопрос: нужно ли менять фьюзы, и нужно ли делать развязку между камнями по этой шине? Я бы конечно по пару кОм резюки поставил бы, но это так, с потолка, ибо гугл внятного ответа не дал. Хотя может и невнятно спрашивал. :) Такое бывает.
Буду благодарен за подсказки, ссылки. Вот! :)
Если нет особых требований по стабильности, то можно TXCO и не ставить. На одну атмегу ставим кварц, как обычно и к пину XTAL2 подцепляем вход триггера Шмитта (напр. 74HC1G14). С выхода этого триггера раздаем тактовую другим атмегам на входы XTAL1. Фьюзы CKSEL на атмегах, получающих тактирование извне, устанавливаются в 0000. Не забываем про требование насчет минимальных длин проводников. В остальном, никаких сложностей быть не должно, если конечно вы не планируете жестко-синхронной работы всех МК на плате.
Дополню, ПОМНИ если прошьешь эти фьюзы то последующие прошивки только с внешней тактовой, кварц не катит.
На сей счет существует известная байка:
"Но что делать если зуд нестерпимый, контроллер залочен, а никакой микросхемы для реанимации под рукой нету? Тут иногда прокатывает метод пальца. Прикол в том, что на тело человека наводится весьма нефиговая наводка частотой примерно 50Гц. Всякий кто хватался за щупы осциллографа руками помнит какие шняги тут же возникают на экране — вот это оно! А почему бы эту наводку не заюзать как тактовый сигнал? Так что припаиваешь к выводу XTAL1 провод, хватаешься за него рукой, и жмешь на чтение или запись контроллера :) Предупреждаю сразу, метод работает через жопу, далеко не с первого раза, читает долго и порой с ошибками, но на перезапись FUSE битов в нужную сторону должно хватить. Пару раз у меня такой фокус получался."
Рецепт приписыватью некоему DI HALTу. :)
a5021 Спасибо! Я подумаю. Я тут еще вычитал , что бит CKOUT разрешает раздачу тактирующего сигнала на другие устройства через ногу PB0. Может это еще проще решение? Только бы не оказалось , что там где-то делитель по дороге стоит.... Не знаю где смотреть.
Дополню, ПОМНИ если прошьешь эти фьюзы то последующие прошивки только с внешней тактовой, кварц не катит.
Да, делитель на 8 таки стоит, но активирован он или нет определяется фьюзом CKDIV8.
http://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny23...
Дополню, ПОМНИ если прошьешь эти фьюзы то последующие прошивки только с внешней тактовой, кварц не катит.
Дошли руки до запуска atmega328P на моей плате. И тут я как всегда натупил :))
Видимо я не допонял данный совет. Использую USBasp программатор и AVRDUDE_PROG 3.3. Че-то я подумал, что внешнее тактирование должно потсупать от программатора, и все будет ОК. Ага. :) До прошивки фьюзов камень читался, после прошивки молчит как рыба.
И че делать теперь? В нете по этому поводу такая каша!
Буду благодарен за подсказку.
5N62V, в чём каша-то? Вы уже даже отквотили ответ на ваш вопрос. USBAsp тактирует только шину SPI, а нужно затактировать системные клоки.
5N62V, в чём каша-то? Вы уже даже отквотили ответ на ваш вопрос. USBAsp тактирует только шину SPI, а нужно затактировать системные клоки.
Спасибо! Благодаря Вам глянул на разводку открытыми глазами, и нашел проблему.
Оказывается мои злоключения не закончились на этом.
Есть еще один неприятный нюанс: при внешнем тактировании частотой 16МГц и попытках использования МК как ардуину вылазит проблема бодрейта УАРТа. Мне , чтоб заставить МК печатать в сериал пришлось делать так:
Регистр UBRR как раз отвечает за скорость бодрейта. В мануале обнаружил формулу UBRR = Fosc/16/Bodrate - 1; Странно , но чтоб у меня заработало на скорости 9600, мне пришлось в формулу ставить бодрейт 4800.
И что печально, заливать прошивку через уарт не получается :( IDE ничего не пишет, просто висит. Адаптер CP2102, hex заливал тот, который с бутлоадером. Подскажите плз куда копать?
ПС. подозреваю что скорость шин I2C и ISP тоже надо будет устанавливать.
5N62V, внешнее тактирование не влечёт за собой никаких проблем ни с уартом, ни с чем бы то ни было. Ищите косяки в своём монтаже.
Ну явно же где то делитель тактовой. Гм... умножитель ? :)
5N62V, внешнее тактирование не влечёт за собой никаких проблем ни с уартом, ни с чем бы то ни было. Ищите косяки в своём монтаже.
Во фьюзах менял только LOW BYTE : 11100000
ПС. Проц в сериал и отправляет, и читает из него. Но не прошивается через сериал :(