Внешний генератор тактовой частоты для контроллеров Atmega328P-AN

5N62V
Offline
Зарегистрирован: 25.02.2016

Всем бобра!

Долгое время мурыжил свой проект, но благодаря в частности и данному форуму, все работает, тьфу-тьфу. Теперь настала пора переходить к разводке платы, и отказу от девелоперских плат. Дело в том, что проект объеденяет в себе пять ардуин про мини. Чтоб построить плату на голых процессорах, нужно их затактовать. Лепить 5 кварцев к каждому камню, наверное, глупо. Есть идея поставить какой-нить TXCO на 16 МГц, и засунуть тактирующий сигнал на XTAL1 пин. Где-то я читал, что так сделать можно. 

Собственно вопрос: нужно ли менять фьюзы, и нужно ли делать развязку между камнями по этой шине? Я бы конечно по пару кОм резюки поставил бы, но это так, с потолка, ибо гугл внятного ответа не дал. Хотя может и невнятно спрашивал. :) Такое бывает. 

Буду благодарен за подсказки, ссылки. Вот! :)

a5021
Offline
Зарегистрирован: 07.07.2013

Если  нет особых требований по стабильности, то можно TXCO и не ставить. На одну атмегу ставим кварц, как обычно и к пину XTAL2 подцепляем вход триггера Шмитта (напр. 74HC1G14).  С выхода этого триггера раздаем тактовую другим атмегам на входы XTAL1. Фьюзы CKSEL на атмегах, получающих тактирование извне, устанавливаются в 0000. Не забываем про требование насчет минимальных длин проводников. В остальном, никаких сложностей быть не должно, если конечно вы не планируете жестко-синхронной работы всех МК на плате.

Coolerr
Offline
Зарегистрирован: 30.06.2014

Дополню, ПОМНИ если прошьешь эти фьюзы то последующие прошивки только с внешней тактовой, кварц не катит.

a5021
Offline
Зарегистрирован: 07.07.2013

На сей счет существует известная байка:

"Но что делать если зуд нестерпимый, контроллер залочен, а никакой микросхемы для реанимации под рукой нету? Тут иногда прокатывает метод пальца. Прикол в том, что на тело человека наводится весьма нефиговая наводка частотой примерно 50Гц. Всякий кто хватался за щупы осциллографа руками помнит какие шняги тут же возникают на экране — вот это оно! А почему бы эту наводку не заюзать как тактовый сигнал? Так что припаиваешь к выводу XTAL1 провод, хватаешься за него рукой, и жмешь на чтение или запись контроллера :) Предупреждаю сразу, метод работает через жопу, далеко не с первого раза, читает долго и порой с ошибками, но на перезапись FUSE битов в нужную сторону должно хватить. Пару раз у меня такой фокус получался."

Рецепт приписыватью некоему DI HALTу. :)

5N62V
Offline
Зарегистрирован: 25.02.2016

a5021   Спасибо! Я подумаю.  Я тут еще вычитал , что бит CKOUT разрешает раздачу тактирующего сигнала на другие устройства через ногу PB0. Может это еще проще решение? Только бы не оказалось , что там где-то делитель по дороге стоит.... Не знаю где смотреть. 

 

5N62V
Offline
Зарегистрирован: 25.02.2016

Coolerr пишет:

Дополню, ПОМНИ если прошьешь эти фьюзы то последующие прошивки только с внешней тактовой, кварц не катит.

Ага, спасибо за напоминание. 

5N62V
Offline
Зарегистрирован: 25.02.2016

Да, делитель на 8 таки стоит, но активирован он или нет определяется фьюзом CKDIV8. 

http://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny23...

5N62V
Offline
Зарегистрирован: 25.02.2016

Coolerr пишет:

Дополню, ПОМНИ если прошьешь эти фьюзы то последующие прошивки только с внешней тактовой, кварц не катит.

Дошли руки до запуска atmega328P на моей плате. И тут я как всегда натупил :))

Видимо я не допонял данный совет. Использую USBasp программатор и AVRDUDE_PROG 3.3.  Че-то я подумал, что внешнее тактирование должно потсупать от программатора, и все будет ОК. Ага. :)  До прошивки фьюзов камень читался, после прошивки молчит как рыба.

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: error: programm enable: target doesn't answer. 1 
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
 

И че делать теперь?  В нете по этому поводу такая каша!

Буду благодарен за подсказку.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

5N62V, в чём каша-то? Вы уже даже отквотили ответ на ваш вопрос. USBAsp тактирует только шину SPI, а нужно затактировать системные клоки.

5N62V
Offline
Зарегистрирован: 25.02.2016

dimax пишет:

5N62V, в чём каша-то? Вы уже даже отквотили ответ на ваш вопрос. USBAsp тактирует только шину SPI, а нужно затактировать системные клоки.

  не совсем понял ... дело в том, что у меня внешнее тактирование присутствует: 16МГц поступают на XTAL1....... Бляааааааааааха муха! Оказалось, что импульсы поступали на XTAL2. :) ну ёпрст! Перекинул перемычкой на XTAL1, и все заработало! :))) Ну, бывает :) 

Спасибо! Благодаря Вам глянул на разводку открытыми глазами, и нашел проблему.

5N62V
Offline
Зарегистрирован: 25.02.2016

Оказывается мои злоключения не закончились на этом.

Есть еще один неприятный нюанс: при внешнем тактировании частотой 16МГц и попытках использования МК как ардуину вылазит проблема бодрейта УАРТа. Мне , чтоб заставить МК печатать в сериал пришлось делать так:

void setup(){  
Serial.begin(96000);  
UBRR0H = 0;
UBRR0L = 0xCF;
}

  void loop(){

 Serial.println("I am here");
    delay(250);
  }

Регистр UBRR как раз отвечает за скорость бодрейта. В мануале обнаружил формулу UBRR = Fosc/16/Bodrate - 1;  Странно , но чтоб у меня заработало на скорости 9600, мне пришлось в формулу ставить бодрейт 4800. 

И что печально, заливать прошивку через уарт не получается :( IDE ничего не пишет, просто висит.  Адаптер CP2102, hex заливал тот, который с бутлоадером.   Подскажите плз куда копать?

 

ПС. подозреваю что скорость шин I2C  и ISP тоже надо будет устанавливать.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

5N62V, внешнее тактирование не влечёт за собой никаких проблем ни с уартом, ни с чем бы то ни было. Ищите косяки в своём монтаже.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну явно же где то делитель тактовой. Гм... умножитель ? :)

5N62V
Offline
Зарегистрирован: 25.02.2016

dimax пишет:

5N62V, внешнее тактирование не влечёт за собой никаких проблем ни с уартом, ни с чем бы то ни было. Ищите косяки в своём монтаже.

Да пиццот раз уже проверил. Раз шьется и читается,  и главное, программа работает, то скорее всего монтаж ок. На проц пока ваще ничего не подключено. Тактовая 15,998 МГц, если верить осциллографу. 

 

Во фьюзах менял только LOW BYTE :    11100000

ПС. Проц в сериал и отправляет, и читает из него. Но не прошивается через сериал :(