нужна помощь с fuse-ами при настройке работы от внешнего кварца

Deamount
Offline
Зарегистрирован: 07.05.2012

использую atmega328p от ардуино мини, т.к. есть под рукой. 

впаял её в свою плату, с кварцем 14.7456МГц. прошиваю USBasp + SinaProg

сначала прочитал фьюзы - LOW byte был 0xFF. записываю туда 0хF0, чтобы CKSEL был 0000, т.е. работа от внешнего кварца. 

и всё... кирдык. SinaProg не видит больше этот чип.

Подскажите что я сделал не так и как оживить чип?

 

p.s. (странно, но предыдущий чип после похожих каких-то не помню каких манипуляций нормально заработал и шился раз 50, потом перестал быть виден, я подумал, что сдох.)

Condensator
Offline
Зарегистрирован: 02.06.2017

http://arduino.ru/forum/programmirovanie/fuse-bity#comment-6011

http://arduino.ru/forum/programmirovanie/proshivka-hex-failov-pri-pomoshchi-arduino-i-sinaprog

Вы уверены, что плата для кварцевого, а не керамического резонатора? У них разные схемы включения -  отличие в  2 конденсаторах.

Deamount
Offline
Зарегистрирован: 07.05.2012

вот такой с двумя конденсаторами. а будет отличие в фьюзах при кварцевом и керамическом ?

Condensator
Offline
Зарегистрирован: 02.06.2017

Deamount пишет:

вот такой с двумя конденсаторами. а будет отличие в фьюзах при кварцевом и керамическом ?

Во фьюзах отличий  быть не должно

Deamount
Offline
Зарегистрирован: 07.05.2012

а, вот кстати ошибка какая из sinaprog :

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1 
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.
Deamount
Offline
Зарегистрирован: 07.05.2012

Короче я не дочитал/неправильно понял datasheet. И затактировал контроллер от какого-то вывода EXTCLK...

значение CKSEL должно быть от 1000 до 1111 для моего кварца... а точнее 111Х , т.к. он в пределах 8 до 16 мгц

даже не знаю где вывод EXTCLK в микросхемы... нада бы подать туда сигнал, чтобы восстановить фьюзы.

короче просто перепаяю новый чип. 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

вот только собрался написать гневный посто про разницу между внешним кварцем и внешним  генератором, а ТС уже сам ошибку нашел - малацца!

Твой фьюз - 0xFF. а старший - зависит от того, что ты писать собрался. Если бутлоадер не мешает - то можно вообще ничего от ардуинки не менять.

Deamount
Offline
Зарегистрирован: 07.05.2012

да вот, переношу с ардуины nano на конечную плату плату с другим кварцем (14 мгц).

и не работает. точнее как будто тормозит. не могу понять почему... копал кварц, фьюзы.

писал программу в среде ардуино и ничего вроде не должно зависеть от частоты.

простейшая программа с двумя внешними прерываниями. когда одно задействую, вроде все норм, как подключаю точно такой же обработчик второго прерывания - жуткие тормоза.

в прерывании тупо замеряется длина импульса через micros(). если она правильная - то меняю глобальную переменную. всё. что тут может тормозить пока понять не могу.

Condensator
Offline
Зарегистрирован: 02.06.2017

Deamount пишет:
да вот, переношу с ардуины nano на конечную плату плату с другим кварцем (14 мгц). и не работает. точнее как будто тормозит. не могу понять почему... копал кварц, фьюзы. писал программу в среде ардуино и ничего вроде не должно зависеть от частоты. простейшая программа с двумя внешними прерываниями. когда одно задействую, вроде все норм, как подключаю точно такой же обработчик второго прерывания - жуткие тормоза. в прерывании тупо замеряется длина импульса через micros(). если она правильная - то меняю глобальную переменную. всё. что тут может тормозить пока понять не могу.

До выхода из прерывания  значение micros() не изменяется тк вычисляется в прерывании,  кстати, какая версия IDE Arduino у Вас ?

Если бы были  прерывания по таймеру, могли "уплыть" прескалеры в другой диапазон деления. Здесь могу предположить - из-за снижения тактовой частоты прерывание не успевает отрабатывать и конкурирующее пропускается.

А вообще, если временно обойтись без внешнего обмена с другими синхронными устройствами, то ничего кроме кварца менять не нужно. Вы выбрали другую тактовую частоту для точных таймингов?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Deamount пишет:

в прерывании тупо замеряется длина импульса через micros(). если она правильная - то меняю глобальную переменную. всё. что тут может тормозить пока понять не могу.

Хрустальный Шар поменял на самогонку... не могу указать на ошибку, по кофейной гуще код плохо виден.

micros() с другим кварцем - ессно использовать - смешно.