Например TDA7294

Форум РадиоКот :: Просмотр темы - Как при помощи регистра OSCCAL изменит частоту с 4,8 до 6 M
Форум РадиоКот
https://radiokot.ru/forum/

Как при помощи регистра OSCCAL изменит частоту с 4,8 до 6 M
https://radiokot.ru/forum/viewtopic.php?f=20&t=69476
Страница 1 из 2

Автор:  Катяра [ Сб апр 14, 2012 11:08:54 ]
Заголовок сообщения:  Как при помощи регистра OSCCAL изменит частоту с 4,8 до 6 M

Имеется контроллер ATtiny13
Частоты внутреннего RC генератора составляют 4,8 MHZ и 9,6 MHZ.
Для проекта (EEPROM не используется) необходима частота 6,0 MHZ
Понятно что 4,8 + 25% = 6 MHZ
Как при помощи регистра OSCCAL изменит частоту с 4,8 до 6 MHZ ???
Не могу понять как сделать чтобы частота за один цикл изменялась меньше чем на 2% (согласно datasheet)
если, как я понимаю, запись в регистр OSCCAL происходит однократно при сбросе контролера.
Возможно ли выстроит програмную цепочку чтобы увеличить частоту 4,8 MHZ на 25% для получения 6,0 MHZ ???

И ещё вопрос по таблице из datasheet:
Как для одного значения регистра OSCCAL может быт такая большая разбежка в процентах, к примеру для $7F 75% 150% и что означают эти проценты, как их высчитывать????


Изображение

Заранее всем спасибо!!!

P.S. 10 раз прочитал datasheet, но работу OSCCAL ни как понять не могу
:(

Автор:  ibiza11 [ Сб апр 14, 2012 13:14:20 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

Странно, что вы не нашли всю информацию в даташите.
для того чтобы настроить ваш контроллер на требуемую частоту (6МГц), сначала нужно установить фьюзы для тактирования от 4,8 МГц.Изображение
Далее нужно поменять значение регистра OSCCAL. В даташите написано соответствующее предупреждение о том КАК нужно это делать.
Цитата:
To ensure stable operation of the MCU the calibration value should be changed in small steps. A
variation in frequency of more than 2% from one cycle to the next can lead to unpredicatble
behavior. Changes in OSCCAL should not exceed 0x20 for each calibration. It is required to
ensure that the MCU is kept in Reset during such changes in the clock frequency
Теперь про значения. раздел даташита 19.8 Internal Oscillator Speed скрин:
Изображение
Ну и про точность внутреннего генератора можно почитать в разделе 18.4 Clock Characteristics

Вложения:
Комментарий к файлу: значения OSCCAL
values.PNG [28.41 KiB]
Скачиваний: 3111
Комментарий к файлу: фьюзы
fuses.PNG [13.43 KiB]
Скачиваний: 2988

Автор:  BOB51 [ Сб апр 14, 2012 18:55:10 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

ребятки, а может проще после запуска на заводских установках (9,6МГц) изменить значение в CLKPR?! :shock:

Автор:  ibiza11 [ Сб апр 14, 2012 19:15:52 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

Думаю из 9,6МГц получить 6 МГц с помощью целочисленных делителей из ряда 1, 2, 4, 8, 16.... будет как минимум проблематично. :)

Автор:  BOB51 [ Сб апр 14, 2012 20:01:33 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

так речь идет не о тактовой генератора, а о системном тактировании - есть вероятность подгонки вида 6/8=0,75, а это близко к 9,6/16=0,6 :)

Автор:  ibiza11 [ Сб апр 14, 2012 21:56:09 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

Катяра писал(а):
если, как я понимаю, запись в регистр OSCCAL происходит однократно при сбросе контролера.
Вы ошибаетесь. прочтите цитату из даташита, которую я привел в предыдущем сообщении. Все должно встать на свои места.

Автор:  Катяра [ Вс апр 15, 2012 01:40:52 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

Цитата:
Странно, что вы не нашли всю информацию в даташите.
для того чтобы настроить ваш контроллер на требуемую частоту (6МГц), сначала нужно установить фьюзы для тактирования от 4,8 МГц.

О том как выставить рабочую частоту 4,8 или 9,6 MHZ с помощью фьюзов я прекрасно знаю...
Вопрос состоит в том как правильно организовать алгоритм записи значений в регистр OSCCAL чтобы увеличить
рабочую частоту 4,8 MHZ на 25% и получить тем самым 6 MHZ и не превысить лимит перехода 2% от одной частоты к другой???

Главные открытые вопросы которые остаётся до сих пор открыты:
1) Как понимать нижеприведённую таблицу????
Изображение

2) В datasheet указано (перевод брал из книги A.В.Белова "Самоучитель разработчика устройвств на микроконтроллерах AVR"):
a) Изменение частоты более чем на 2% от одного цикла генератора до следующего может привести к непредсказуемому поведению микросхемы. Вопрос: Как задать это число в OSCCAL чтобы значение приращение было меньше 2% иначе контролер может зависнуть???
b) Изменение регистра OSCCAL не должно превышать 32 (0x20) за один шаг калибровки. Мне кажется здесь противоречие, так как 0x20 явно больше 2%???


Теперь мои предположения:

Изображение

1) Если я правильно понял при записи во фьюзы CKSEL1..0 значения 01 частота внутреннего RC генератора выбирается 4,8 MHZ
и это является эквивалентным тому что в регистр OSCCAL записывается значение (если смотреть по графику) приблизительно 84 (0x54).
2) Чтобы получить частоту 6 MHZ мне нужно изменить значение OSCCAL от 84 (0x54) до 105 (0x69)
3) Изменение OSCCAL от 84 до 105 в данном случае соответствует 25%.
4) 105-84 = 21; изменение OSCCAL на 21 (0x15) меньше максимально допустимого значения изменения 32 (0x20) OSCCAL
5) 25% / 21=1.2%. Получается что при изменении OSCCAL на 1 значение частоты будет увеличиваться на 1,2% от предыдущего.
Что является меньше максимально допустимых 2%.
6) Вот пример моего программного кода:
Код:
for (Cnt = 84; Cnt<106; Cnt++ ) {OSCCAL = Cnt; }

Код:
               ldi  r17,105
               ldi  r16,84
start:         inc r16
               out OSCCAL,r16
               cpse r16,r17
               rjamp start


ПОПРАВЬТЕ ЕСЛИ Я НЕ ПРАВ!!! Так как описание ррегистра OSСCAL брал из книги A.В.Белова "Самоучитель разработчика устройвств на микроконтроллерах AVR" - может неправильный по смыслу перевод и не даёт понять мне самой сути...

Автор:  Катяра [ Вс апр 15, 2012 01:41:54 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

BOB51 писал(а):
так речь идет не о тактовой генератора, а о системном тактировании - есть вероятность подгонки вида 6/8=0,75, а это близко к 9,6/16=0,6 :)


0,6 MHZ - маловато для моего проекта :shock:

Автор:  BOB51 [ Вс апр 15, 2012 07:22:51 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

так легче подкорректировать незначительное расхождение между 0,75 и 0,6, тем более, что начальное значение калибровки при 9,6 загружается автоматически, а при 4,8 его еще сначала хитрым способом достать надо 8)
ну и на крайний случай внешний генератор на 6МГц...
хотя... а зачем такой садомазо- внутренний таймер с предделителем любую подгонку выполнить в состоянии, а аппаратных приемопередатчиков в 13й вроде как не имеется :cry:

Автор:  ibiza11 [ Вс апр 15, 2012 09:31:15 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

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

Автор:  Катяра [ Вс апр 15, 2012 10:58:02 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

ibiza11 писал(а):
Ваш приведенный код должен работать. Смысл того текста, который я процитировал из даташита, заключался именно в том, что нужно изменять регистр OSCCAL за несколько итераций, которые бы сильно не меняли частоту контроллера.
А вообще, раз уж разобрались, расскажите для чего вам именно 6МГц? мне тоже интересно))) в этой тиньке нет аппаратных приемопередатчиков, следовательно все подгонки по частоте можно реализовать и программно, без шаманства с системной тактовой.


Мне нужно чтобы частота выходного ШИМ сигнала составляла 23...24 KHZ. (самая оптимальная частота, выше восприятия человеческим ухом и не сильно нагружает выходной ключ).
Я заметил что во многих устройствах подобного типа используется именно эта частота.
T0 = 6 MHZ / 256 = 23.4 KHZ
С помощью этого ШИМ сигнала будет задаваться скорость вращения электродвигателем.
Думал сначала подогнать программно, но код получиться на порядки сложнее, а из-за задержки прерываний будут
неточности в формировании сигнала.
Я решил пойти по пути наименьшего сопротивления, если будут сбои, тогда уже буду делать программно...

Автор:  Катяра [ Вс апр 15, 2012 11:03:55 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

Вопрос который до сих пор остаётся открытым
Как понимать нижеприведённую таблицу????
Изображение

Как одно число в OSCCAL может иметь такой большой разброс???

Автор:  BOB51 [ Вс апр 15, 2012 11:27:58 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

????!
24 килогерца и такой садомазо??? :shock:
(9600000/8)/24000=50 + режим аппаратного ШИМ на выбор

Автор:  Катяра [ Вс апр 15, 2012 11:48:02 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

BOB51 писал(а):
????!
24 килогерца и такой садомазо??? :shock:
(9600000/8)/24000=50 + режим аппаратного ШИМ на выбор


В моём случае я могу использовать T0 = 255 и тем самым большую точность выбора ШИМ сигнала.
А частота 1,2 MHZ - маловата для моего проекта, мне нужно ещё успевать обрабатывать входные сигналы.
Я посчитал что 6 MHZ как раз будет всё успевать....

P.S. Это не такое уж садо-мазо:
Код:
for (Cnt = 84; Cnt<106; Cnt++ ) {OSCCAL = Cnt; }

Автор:  BOB51 [ Вс апр 15, 2012 12:17:45 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

так есть возможность поднять ее вплоть до 9,6 !
9,6 - 4,8 - 2,4 - 1,2(по умолчанию)
кроме того у таймера есть возможность подключить предделитель...
то же 4800000/200=24000 (и это при внутренней тактовой 4,8(исполнение команд) а основная 9,6)
да... совсем склероз, я ж ассемблерист... :cry:

Автор:  ibiza11 [ Вс апр 15, 2012 12:18:29 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

"И незачем так орать" (с) :) Увеличение шрифта сообщения не прибавит понимания.
Рекомендую читать оригинальный даташит, если не получается понять смысл вырезанной таблицы.
Смотрим, читаем, переводим, вкуриваем!!!
Изображение


BOB51 писал(а):
да... совсем склероз, я ж ассемблерист... :cry:

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

Вложения:
accuracy.PNG [54.24 KiB]
Скачиваний: 3171

Автор:  Катяра [ Вс апр 15, 2012 12:37:59 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

BOB51 писал(а):
да... совсем склероз, я ж ассемблерист... :cry:


Код:
               ldi  r17,105
               ldi  r16,84
start:         inc r16
               out OSCCAL,r16
               cpse r16,r17
               rjamp start

Автор:  BOB51 [ Вс апр 15, 2012 12:54:46 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

разжувываю:
запускаемся на установках "по умолчанию" - RC генератор с заводской калибровкой на 9,6 МГц,
меняем значение в CLKPR на коэффициент деления 2, тем самым сохраняя заводскую точность калибровки и повышая внутреннюю тактовку до 4,8МГц против исходных 1,2 (0,000000208s/команда вместо 0,000000833s/команда), а в таймере коэффициент деления 200
если еще хочется позаморачиваться теперь можно немножко "подергать" содержимое OSCCAL, благо там уже записано содержимое, соответствующее базовому значению частоты в 9,6МГц
зато и частота ШИМ в пределах, и диапазон вариаций 200 шагов и быстродействие/стабильность соблюдены
:beer:

Автор:  ibiza11 [ Вс апр 15, 2012 12:57:44 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

BOB51 писал(а):
разжувываю
+1 :beer:

Автор:  Катяра [ Вс апр 15, 2012 13:04:20 ]
Заголовок сообщения:  Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до

ibiza11 писал(а):
"И незачем так орать" (с) :) Увеличение шрифта сообщения не прибавит понимания.
Рекомендую читать оригинальный даташит, если не получается понять смысл вырезанной таблицы.
Смотрим, читаем, переводим, вкуриваем!!!
Изображение

Прочитал несколько раз, не вкурил!!! :( :o :shock:
Всё равно не могу понять смысл этой таблицы. Может кто объяснит что означают эти проценты.... :write:

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/