Перейти к содержанию
    

ATtiny13 калибровочные байты RC генератора

Нашел у себя Tiny13, подключил к AVRISP. Прочитал два различных калибровочных байта.
Аналогично, только программатор, естественно, avreal.

ATtiny13V

У двух экземпляров

1: 4F, 4D

2: 64, 65.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лишние пару слов тратить из 512-ти имеющихся..

Я бы напротив - поставил 4.8 фузами, и плюнул бы на калибровочные байты (на кой их вообще читать если заводская частота устраивает?).

Хорошее предложение! Вот только с каким разбросом настроены эти генераторы? Судя по описанию регистр OSCCAL по умолчанию в нуле. Согласно даташиту ATTiny13A (другие варианты ATtiny13 сняты с производства) см.график фиг19-51 частота генератора 4.8 Мгц меняется в диапазоне 2-9 МГц при изменении OSCCAL 0-0x7F. На какой частоте будет молотить RC генератор, если не грузить OSCCAL?

На практике проверил с десяток образцов - при выборе фузами генератора 4.8 Мгц разброс частоты не превышает 5%, регистр OSCCAL не загружается. Но ведь при этом OSCCAL=0, а согласно графика 19-51 частота при этом значении равна 2Мгц?

Опять какая то нестыковка.

Мне задают вопрос- почему выбрана частота 4.8 а не 9.6 МГц. Выбор этой частоты диктуется батарейным питанием устройства

(лит. бат) -получается гарантированная работа на напряжении 1.8V.

Хотя справедливости ради можно отметить: проверял несколько экземпляров с частотой 9.6Мгц на напряжении 1.8V- работают! Это при комнатной температуре. А что будет на крайних температурных точках? Согласно даташита работа не гарантируется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот только с каким разбросом настроены эти генераторы?

укладываются в указанные в ДШ +/- 10% при Vcc=3V, T=25C

 

 

регистр OSCCAL не загружается.

Если бы он оставался в 0, то ни о каких 5% не было бы и речи. Имели бы 2Mhz с хвостиком всегда.

 

Мне задают вопрос- почему выбрана частота 4.8 а не 9.6 МГц. Выбор этой частоты диктуется батарейным питанием устройства

(лит. бат) -получается гарантированная работа на напряжении 1.8V.

Да нет проблем, у меня даже вопроса не возникало зачем оно Вам. Раз решили использовать 4.8Mhz, значит так надо.

И тут все просто. Раз документировано, что фузами можно включить 4.8Mhz, значит включится именно 4.8Mhz, а не 2 и не 9Mhz.

Хотя бы из простых соображений -

Уважающий себя производитель не может заявить фичу которая не совпадает ни с документацией и ни со старой ревизией чипа, и вообще хз как работает. Кто б тогда это г. покупал?

 

Хотя справедливости ради можно отметить: проверял несколько экземпляров с частотой 9.6Мгц на напряжении 1.8V- работают!

При 1.8В гарантируется работа МК на частотах 0-4Mhz. Даже 4.8Mhz - это уже существенный оверклок +20%, ДШ рекомендует делить частоту RC ренератора в таком случае на 8, соотв. фузом.

Можно ставить генератор на любую частоту, но надо поделить его так чтобы частота тактирования МК получилась <=4Mhz даже при стартапе если чип питается от 1.8В.

Лично меня бы в этом случае вероятно удовлетворила бы комбинация RC на 9.6 + CKDIV8 (в итоге 1.2Mhz в т.ч. при стартапе).

 

Ну а Вы смотрите, если готовы к оверклоку +20%, и не боитесь огрести проблем, то пробуйте. :)

Можно разве только учесть что:

при 2.7В гарантируется работа на 10Mhz

1.8В гарантируется работа на 4Mhz.

 

Цена каждых 100мв (грубо) равна 6Mhz / 9 = 0.667Mhz

 

Для гарантированной работы на 4.8Mhz надо питать хотя бы от 2.0В.

 

 

Ну а возвращаясь к Вашему изначальному вопросу о калибровочных байтах:

During reset, hardware loads the calibration data into the OSCCAL register and thereby automatically

calibrates the oscillator. There are separate calibration bytes for 4.8 and 9.6 MHz

operation but only one is automatically loaded during reset (see section “Calibration Bytes” on

page 105). This is because the only difference between 4.8 MHz and 9.6 MHz mode is an internal

clock divider.

Internal RC осциллятор всегда стартует на 9.6Mhz, и всегда загружается один и тот же калибровочный байт для частоты 9.6Mhz. Когда фузами программируется частота 4.8Mhz, то просто включается делитель на 2 с выхода генератора. Вот и вся разница.

На вопрос "нафиг нужен второй калибровочный байт?" мой ответ будет таким:

1. для того, чтобы можно было ручками включить 4.8Mhz в программе, когда генератор фузами настроен на 9.6Mhz.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для гарантированной работы на 4.8Mhz надо питать хотя бы от 2.0В.

Полностью согласен с Вашим выводом.

 

Internal RC осциллятор всегда стартует на 9.6Mhz, и всегда загружается один и тот же калибровочный байт для частоты 9.6Mhz. Когда фузами программируется частота 4.8Mhz, то просто включается делитель на 2 с выхода генератора. Вот и вся разница.

Спасибо! Именно эта Ваша фраза и разъясняет ситуацию.

Но вот изречение на стр 105 даташита опять настораживает

There is a separate calibration byte for the internal oscillator in 4.8 MHz mode of operation but

this data is not loaded automatically. The hardware always loads the 9.6 MHz calibraiton data

during reset. To use separate calibration data for the oscillator in 4.8 MHz mode the OSCCAL

register must be updated by firmware.

Зачем тогда на частоте 4.8 Мгц программно обновлять регистр OSCCAL вторым калибровочным байтом?

На вопрос "нафиг нужен второй калибровочный байт?" мой ответ будет таким:

1. для того, чтобы можно было ручками включить 4.8Mhz в программе, когда генератор фузами настроен на 9.6Mhz.

А вот здесь не совсем так:

Значения калибровочных байт для частот 9.6 и 4.8Мгц отличаются всего лишь на несколько дискрет.

Аналогично, только программатор, естественно, avreal.

ATtiny13V

У двух экземпляров

1: 4F, 4D

2: 64, 65.

Поэтому , если первоначальная настройка генератора была на 9.6 Мгц и в ходе выполнения программы генератор перестраивается при помощи команды

OSCCAL=(Cal_byte4.8MHz). Изменения частоты при этом будут незначительными. То есть смысл введения в сигнатуру контроллера второго калибровочного байта остается непонятным

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому , если первоначальная настройка генератора была на 9.6 Мгц и в ходе выполнения программы генератор перестраивается при помощи команды

OSCCAL=(Cal_byte4.8MHz). Изменения частоты при этом будут незначительными. То есть смысл введения в сигнатуру контроллера второго калибровочного байта остается непонятным

Да Вы правы.

Мне почему то ночью показалось, что Real пронумеровал калибровочные байты (и первым поставил второй) :laughing:

Всмысле что 0x64 первый калибровочный байт, а 0x4F - второй.

Прошу прощения за невнимательность. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На вопрос "нафиг нужен второй калибровочный байт?" мой ответ будет таким:

1. для того, чтобы можно было ручками включить 4.8Mhz в программе, когда генератор фузами настроен на 9.6Mhz.

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

3. Для того, чтобы меньше менять при переходе с tiny13 на tiny13А - скрипты/ключи/галочки программаторов, вынимавшие второй OSCCAL для тини13 - будут продолжать работать для tiny13A

А для tiny13 эти байты были разные (причём встречальись и бОльшие различия, более, чем на единичку в двух парах выше) и это было принципиально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу различий между ATtiny13(Rev. 2535I–AVR–05/08) и ATtiny13A( Rev. 8126B–AVR–12/08) различий в даташитах в части описания калибровочных байт нет никаких. В наличии два генератора и два калибровочных байта.

Для ATtiny13( Rev. 2535G–AVR–01/07) имеем два генератора и один калибровочный байт.

А как определить ревизию конкретной мс?

 

Стою на асфальте я , в лыжи обутый........

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О чо нашёл в апноте по калибровке RS генератора:

Version 1.x oscillators

This version is the earliest internal RC for AVR that can be calibrated, though asynchronous operation is not possible. Due to this, parts having this version of the internal oscillator cannot be calibrated using an external crystal and does not appear in Table 6-1.

 

Version 2.x oscillators

This oscillator is offered with a frequency of 1MHz. The dependency between the oscillator frequency and operating voltage and temperature is reduced significantly compared to version 1.x.

 

Version 3.x oscillators

This version was introduced along with the first devices produced in the 35.5k process.

The oscillator system is expanded to offer multiple oscillator frequencies. Four different RC oscillators with the frequencies 1, 2, 4, and 8MHz are present in the device. This version features automatic loading of the 1MHz calibration byte from the Signature Row. Due to the fact that 4 different RC oscillators are present, 4 different calibration bytes are stored in the Signature Row. If frequencies other than the default 1MHz are desired, the OSCCAL register should be loaded with the corresponding calibration byte at run-time.

 

Version 4.x oscillators

A single oscillator frequency of 8MHz is offered in version 4.0. For later 4.x versions, two frequencies are offered: 4 and 8MHz for ATtiny2313, and 4.8 and 9.6MHz for the ATtiny13. The OSCCAL register is changed so that only 7 bits are used to tune the frequency for the selected oscillator. The MSB is not used. Auto loading of the default calibration value and system clock prescaler is present.

 

Version 5.x oscillators

A single oscillator frequency of 8MHz is offered in version 5.0 All 8 bits in the OSCCAL register are used to tune the oscillator frequency. Auto loading of the default calibration value and system clock prescaler is present. The OSCCAL register is split in two parts. As seen in Figure 7-2, the MSB of OSCCAL selects one of two overlapping frequency ranges, while the 7 least significant bits are used to tune the frequency within this range.

AVR055_Using_32kHz_XTAL_run_time_calibration_RC.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О чо нашёл в апноте по калибровке RS генератора:

Это все так, но вопрос то в другом: почему при единственном RC генераторе с частотой 9.6 МГц и внутреннем делителе частоты на 2 в контроллере предусмотрено два калибровочных байта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ответ техподдержки с Atmel:

Dear Customer,

For the ATtiny13A, the 4.8 MHz clock is indeed generated by dividing the 9.6 MHz clock.

However, the device still has separate calibration bytes for these two modes.

 

То бишь они признаются , что генератор Один единственный и вторая частота получается делением на 2!

А вот по поводу равенства калибровочных байт для первой и второй частот непонятно, написал еще раз в техподдержку!

Ждем.

Не знаю, насколько это ещё интересно, но...

Зачем при одном генераторе и 4.8=9.6/2 читается два калибровочных байта - понять можно. Для совместимости.

Но почему эти байты разные? Не может же частота 9.6 меняться от того, включен делитель на 2 после генератора или нет.

Просто мимо меня пробежало некоторое количество tiny13A, по четыре штуки середины и конца 2009-го, шесть штук начала 2010-го года. А я про эту тему вспомнил.

 

0923: 45 43

0923: 53 55

0923: 55 55

0923: 5C 5E

 

0951: 4B 46

0951: 60 63

0951: 5E 5F

0951: 57 58

 

1012: 41 3D

1012: 63 65

1012: 46 44

1012: 4B 49

1012: 49 45

1012: 5B 5D

 

Вот и непонятен ответ про один генератор (точнее, думаю, и раньше генератор был один, просто разные источники перезарядного тока были). Байты калибровки все разные, при одном генерирующем элементе и подключаемом делителе на два это как-то неестественно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цитата

Вот и непонятен ответ про один генератор

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

и дело тут не в нестабильности  внутреннего генератора, а в разной точности калибровки с разных заводов изготовителей,

потому,как если точно откалибровать временные интервалы, потом эта точность не плавает и никуда не девается на протяжении длительного времени эксплуатации,

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

решил полезть в ячейку с калибровочными байтами, и самому корректировать,изменяя число записанное в калибровочные ячейки генератора, которое можно считать , например таким простым программатором,как AVRISP   в программе  AVRDUDE, и число это получалось там двух байтное, возник вопрос, как так? регистр ОSCCAL   8 бит,  а показано число 16 бит, что это такое и как это понимать?

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

Цитата

-Просто в OSCCAL нужно загрузить число калибровки. Можно записать сразу нужное значение, скорее всего ничего страшного не произойдет, т.к. значения калибровок для каждого генератора похожи. Где-то была инфа в ДШ, что изменение регистра сразу намного может привести к сбою генератора.

 

- "теория без практики мертва,а практика без теории слепа"(с)

 

поэтому  я взял макетку со своим таймером,точность которого я подогнал по эталону.(добившись точности  секунда в секунду) и загружая разное значение чисел в ячейку ОSCCAL наблюдал,на какую величину происходит изменение точности секундомера моего таймера (количество секунд за минуту больше 60 или меньше стало?)

отталкивался от этих результатов  и величин  вводимых чисел , при некоторых совершенно произвольных значениях , RC генератор иногда  совсем переставал работать , при других значениях , частота либо уменьшалась,либо увеличивалась, стал искать взаимосвязь этих чисел и того числа калибровочного,которое сосчитал  программатором в начале из контроллера, и анализируя результаты ,со временем понял связь,

что означают эти числа, и какое число надо вводить, чтобы вернуться к исходной точности схемы, которая была достигнута перед этими экспериментами,помогла мне разобраться, как раз дискуссия в этой ветке о двух калибровочных величинах

спасибо автору,который открыл эту тему, потому,как нигде никто так "глубоко не копал" а он не унимался и ставил конкретный вопрос, не сползая с темы..)

Изменено пользователем mag58

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...