Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Настройка внутреннего генератора на 7436400 Гц.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
galjoen
Есть мой старый девайс на AT90CAN128 работающий с CAN 500 кбод и UART 57600. Нужно сделать небольшое кол-во девайсов, почти таких же, но скорость UART д.б. 921600. Для этого нужен кварц 7372800, тогда частота поделится на 8 и получится как раз 921600. Но для обеспечения 500 кбод у CAN ближайшее значение частоты д.б. 7500000, тогда при TQ=15 как раз получится 500 кбод. И UART и CAN допускают небольшую погрешность по частоте, но при любом значении частоты (и 7372800 и 7500000) эта погрешность будет великовата, на границе допустимой (или для UART или для CAN). А вот если принять среднюю частоту, т.е. 7436400, то и там и там всё будет нормально. НО таких кварцев не бывает.
Вот я и подумал, а что если подстроить частоту внутреннего генератора за счёт регистра OSCAL до требуемого значения?
Часовой кварц к процессору подключен (к таймеру), т.е. сделать это будет несложно. Но допустимо ли такое (на -7%) изменение частоты? Будут ли работать ВСЕ процессоры?
GDI
Если вам нужно выпустить всего несколько устройств, то зачем беспокоиться обо всех процессорах? Достаточно чтоб заработали ваши конкретные процы, имхо. В даташите написано что пределы регулирования RC генератора +/-10%, так что проблема может быть только в невозможности подстроить генератор на заданную частоту, если он изначально как то неудачно смещен по частоте, но мне кажется что такое маловероятно. Кстати, можно использовать вместо кварца, внешний кварцевый генератор, а они есть подстраиваемые на любую частоту, только стоят дорого.
galjoen
Да, мне нужно немного, менее 50, а м.б. и всего 30 устройств, поэтому переразводить плату очень не хотелось бы. Уже поэтому вариант с подстраиваемыми генераторами отпадает. Но если, например, 10 шт. процессоров окажутся непригодными для работы в таком режиме, то перепаивать очень не хотелось бы. А м.б. после перепаивания пару процессоров и ещё раз перепаять придётся... Тогда уж лучше кварцы подогнать. Где то читал о такой технологии в домашних условиях.

Даташит читал, судя по нему всё должно нормально работать, т.к. у меня отклонение частоты менее -10%. Но боюсь к.л. неуказанных особенностей. Например слишком большая дискрета изменения частоты, или нелинейность, или вообще немонотонность.
Если 0 в регистре OSCCAL соответствует частота 7.2 мГц, а 0x7F - 14.4 мГц, то такой процессор соответствует описанию, но одна дискрета регистра OSCCAL будет 56200 Гц. Т.е., с учётом возможной ошибки на 1 дискрету, это уже хуже, чем просто установка кварца.

Ну м.б. и ещё какие-нибудь подводные камни есть? Если есть возможность, то лучше учится на чужих ошибках.
GDI
из подводных камней мне видится только невозможность с требуемой точностью установить частоту RC генератора, но считать мне лень. У Атмела есть апноут на тему калибровки встроенного генератора. Я думаю, что если у вас все камни будут из одной партии, то и результаты должны быть одинаковые, или на всех заработает, или на всех нет.
А по поводу подстройки кварца - там все описывается просто, надо разобрать кварц и спиливать кристалл до получения требуемой частоты. Естественно, в этом случае подстройка возможна только в сторону увеличения частоты. Но такое практиковалось в прошлом веке для подстройки довольно больших по размеру кварцев, к тому же все они работали на первой гармонике, а сейчас есть кварцы, которые генерят на 3й гармонике. В общем такая методика будет сложна в реализации, имхо. Но интересно было бы узнать о результатах, если возьметесь такое сделать.
muravei
Цитата(GDI @ Aug 6 2010, 16:43) *
. Естественно, в этом случае подстройка возможна только в сторону увеличения частоты. Но такое практиковалось в прошлом веке

В прошлом веке для изменнения частоты кварца -вниз , на него осаждали серебро, вверх -впрыскивали пары йода. Точнее можно узнать в старых журналах "Радио".
KKV2003
И не забывайте, что частота внутреннего генератора плавает от
- напряжения питания
- температуры
- пролетающих низко самолетов smile.gif

Оно нужно ли, если речь идет о точной настройке?
GDI
Его можно подстраивать от часового кварца, правда у самого часового кварца температурная стабильность -140ррм в промышленном диапазоне температур.
defunct
Цитата(galjoen @ Aug 6 2010, 11:42) *
но при любом значении частоты (и 7372800 и 7500000) эта погрешность будет великовата

Почему рассматривали только около-восьмимегагерцовые варианты такта когда проц может работать на 16?


Цитата(galjoen @ Aug 6 2010, 11:42) *
Вот я и подумал, а что если подстроить частоту внутреннего генератора за счёт регистра OSCAL до требуемого значения?

OSCCAL'ом диапазон регулировки может быть очень большой, когда-то эксперементировал и получил
0 ~3Mhz
255 ~14Mhz

шаг ~11Mhz / 256 = ~40-45Khz.

т.е. будет у вас например вместо 7436400 - 7466400 или 7416400, да еще и нестабильных от температуры может плыть вверх или вниз. Подойдет вам такое? Думаю для таких скоростных интерфейсов не подойдет. Калиброванный RC пользовал только для соединений ~9600, для "наповыше" считаю несерьезно его пользовать.
galjoen
Цитата(defunct @ Aug 16 2010, 06:00) *
Почему рассматривали только около-восьмимегагерцовые варианты такта когда проц может работать на 16?

Так там тоже самое. Два варианта 14.7456 или 15 Мгц. В USART проблема, 8 или 16 тактов на бит.
А около-восьмимегагерцовые как раз из-за того, что внутренний генератор можно подстраивать в районе 8 Мгц и выбрал.
Цитата(defunct @ Aug 16 2010, 06:00) *
OSCCAL'ом диапазон регулировки может быть очень большой, когда-то эксперементировал и получил
0 ~3Mhz
255 ~14Mhz

шаг ~11Mhz / 256 = ~40-45Khz.

т.е. будет у вас например вместо 7436400 - 7466400 или 7416400, да еще и нестабильных от температуры может плыть вверх или вниз. Подойдет вам такое? Думаю для таких скоростных интерфейсов не подойдет. Калиброванный RC пользовал только для соединений ~9600, для "наповыше" считаю несерьезно его пользовать.

40...45 Khz это лучше, чем 127 Khz ошибки при установке кварца.
А насчёт термонестабильности что то не понял. Я ведь 128 раз в секунду буду по часовому кварцу проверять реальную частоту RC генератора, и если что - подкорректирую. А за 8 милисекунд сильно убежать не успеет. Или это про термонестабильность часового кварца?
alexeyv
Есть конторы которые изготавливают кварцы на любые частоты.

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

Название конторы к сожалению не помню.
muravei
Цитата(alexeyv @ Aug 17 2010, 08:03) *
Название конторы к сожалению не помню.

Морион , например, делает кварцы в СПб .
drvlas
Цитата(galjoen @ Aug 16 2010, 11:59) *
40...45 Khz это лучше, чем 127 Khz ошибки при установке кварца.
А насчёт термонестабильности что то не понял. Я ведь 128 раз в секунду буду по часовому кварцу проверять реальную частоту RC генератора, и если что - подкорректирую. А за 8 милисекунд сильно убежать не успеет. Или это про термонестабильность часового кварца?


Да все нормально. Не бегает частота, как заяц. Ну, плывет себе по чуть-чуть. В зависимости от Вашей программы, можете ее калибровать и не так часто.

У меня была недавно задачка, подстраивал внутренний генератор под частоту сети. Если интересно - посмотри тему. Там много трепа, но посмотри мое сообщение от 20 августа, рассказано, как я это сделал.
А в ходе делания отметил несколько моментов.
Во-первых, диапазон регулирования очень приличный, не измерял специально, но заведомо больше, чем 500 кГц. Более того, с заводской калибровкой бывает исходная частота на уровне, ЕМНИП, 7,6 МГц.
Во-вторых, не надо пугаться всяких слов про разрывы в характеристике регулирования. На самом деле, ВЫСТАВИТЬ любую частоту в диапазоне можно. Была бы обратная задача - по частоте вычислять значение OSCCAL, то надо думать smile.gif
Так что шаг регулировки - это единственное, что надо учесть, посчитать и сделать вывод.

И, если подстраивать по кварцу, то все влияния температуры, напряжения питания и прочее будут сказываться только на самом кварце. А частота RC генератора будет стоять-стоять, потом поплывет немного, допустим вверх, а с какого-то значения просто прыгнет назад на те самые 40 кГц, о которых написал коллега defunct, и все. И снова стоит, медленно плывет. Потом, нагрелось там или остыло, поплывет вниз, снова прыгнет на 40 кГц в другую сторону - и стоит. Вот так это будет происходить, примерно. Медленная нестабильность, корректируемая с шагом 40 кГц или около того.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.