Например TDA7294

Форум РадиоКот • Просмотр темы - Как при помощи регистра OSCCAL изменит частоту с 4,8 до 6 M
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт июл 25, 2025 23:50:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 31 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Как при помощи регистра OSCCAL изменит частоту с 4,8 до 6 M
СообщениеДобавлено: Сб апр 14, 2012 11:08:54 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
Имеется контроллер 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 ни как понять не могу
:(

_________________
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн

“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до
СообщениеДобавлено: Сб апр 14, 2012 13:14:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
Странно, что вы не нашли всю информацию в даташите.
для того чтобы настроить ваш контроллер на требуемую частоту (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]
Скачиваний: 3069
Комментарий к файлу: фьюзы
fuses.PNG [13.43 KiB]
Скачиваний: 2949

_________________
Ставим плюсы: )
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до
СообщениеДобавлено: Сб апр 14, 2012 18:55:10 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
ребятки, а может проще после запуска на заводских установках (9,6МГц) изменить значение в CLKPR?! :shock:


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

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
Думаю из 9,6МГц получить 6 МГц с помощью целочисленных делителей из ряда 1, 2, 4, 8, 16.... будет как минимум проблематично. :)

_________________
Ставим плюсы: )


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

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
так речь идет не о тактовой генератора, а о системном тактировании - есть вероятность подгонки вида 6/8=0,75, а это близко к 9,6/16=0,6 :)


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

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
Катяра писал(а):
если, как я понимаю, запись в регистр OSCCAL происходит однократно при сбросе контролера.
Вы ошибаетесь. прочтите цитату из даташита, которую я привел в предыдущем сообщении. Все должно встать на свои места.

_________________
Ставим плюсы: )


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до
СообщениеДобавлено: Вс апр 15, 2012 01:40:52 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
Цитата:
Странно, что вы не нашли всю информацию в даташите.
для того чтобы настроить ваш контроллер на требуемую частоту (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 02:12:13, всего редактировалось 11 раз(а).

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

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
BOB51 писал(а):
так речь идет не о тактовой генератора, а о системном тактировании - есть вероятность подгонки вида 6/8=0,75, а это близко к 9,6/16=0,6 :)


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

_________________
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн

“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла


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

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
так легче подкорректировать незначительное расхождение между 0,75 и 0,6, тем более, что начальное значение калибровки при 9,6 загружается автоматически, а при 4,8 его еще сначала хитрым способом достать надо 8)
ну и на крайний случай внешний генератор на 6МГц...
хотя... а зачем такой садомазо- внутренний таймер с предделителем любую подгонку выполнить в состоянии, а аппаратных приемопередатчиков в 13й вроде как не имеется :cry:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до
СообщениеДобавлено: Вс апр 15, 2012 09:31:15 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
Ваш приведенный код должен работать. Смысл того текста, который я процитировал из даташита, заключался именно в том, что нужно изменять регистр OSCCAL за несколько итераций, которые бы сильно не меняли частоту контроллера.
А вообще, раз уж разобрались, расскажите для чего вам именно 6МГц? мне тоже интересно))) в этой тиньке нет аппаратных приемопередатчиков, следовательно все подгонки по частоте можно реализовать и программно, без шаманства с системной тактовой.

_________________
Ставим плюсы: )


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

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
ibiza11 писал(а):
Ваш приведенный код должен работать. Смысл того текста, который я процитировал из даташита, заключался именно в том, что нужно изменять регистр OSCCAL за несколько итераций, которые бы сильно не меняли частоту контроллера.
А вообще, раз уж разобрались, расскажите для чего вам именно 6МГц? мне тоже интересно))) в этой тиньке нет аппаратных приемопередатчиков, следовательно все подгонки по частоте можно реализовать и программно, без шаманства с системной тактовой.


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

_________________
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн

“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла


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

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
Вопрос который до сих пор остаётся открытым
Как понимать нижеприведённую таблицу????
Изображение

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

_________________
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн

“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла


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

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
????!
24 килогерца и такой садомазо??? :shock:
(9600000/8)/24000=50 + режим аппаратного ШИМ на выбор


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

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
BOB51 писал(а):
????!
24 килогерца и такой садомазо??? :shock:
(9600000/8)/24000=50 + режим аппаратного ШИМ на выбор


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

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

_________________
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн

“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла


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

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
так есть возможность поднять ее вплоть до 9,6 !
9,6 - 4,8 - 2,4 - 1,2(по умолчанию)
кроме того у таймера есть возможность подключить предделитель...
то же 4800000/200=24000 (и это при внутренней тактовой 4,8(исполнение команд) а основная 9,6)
да... совсем склероз, я ж ассемблерист... :cry:


Последний раз редактировалось BOB51 Вс апр 15, 2012 12:32:13, всего редактировалось 2 раз(а).

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

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
"И незачем так орать" (с) :) Увеличение шрифта сообщения не прибавит понимания.
Рекомендую читать оригинальный даташит, если не получается понять смысл вырезанной таблицы.
Смотрим, читаем, переводим, вкуриваем!!!
Изображение


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

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


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

_________________
Ставим плюсы: )
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как при помощи регистра OSCCAL изменит частоту с 4,8 до
СообщениеДобавлено: Вс апр 15, 2012 12:37:59 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
BOB51 писал(а):
да... совсем склероз, я ж ассемблерист... :cry:


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

_________________
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн

“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла


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

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
разжувываю:
запускаемся на установках "по умолчанию" - RC генератор с заводской калибровкой на 9,6 МГц,
меняем значение в CLKPR на коэффициент деления 2, тем самым сохраняя заводскую точность калибровки и повышая внутреннюю тактовку до 4,8МГц против исходных 1,2 (0,000000208s/команда вместо 0,000000833s/команда), а в таймере коэффициент деления 200
если еще хочется позаморачиваться теперь можно немножко "подергать" содержимое OSCCAL, благо там уже записано содержимое, соответствующее базовому значению частоты в 9,6МГц
зато и частота ШИМ в пределах, и диапазон вариаций 200 шагов и быстродействие/стабильность соблюдены
:beer:


Последний раз редактировалось BOB51 Вс апр 15, 2012 12:59:08, всего редактировалось 1 раз.

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

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
BOB51 писал(а):
разжувываю
+1 :beer:

_________________
Ставим плюсы: )


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

Карма: 1
Рейтинг сообщений: -4
Зарегистрирован: Сб янв 17, 2009 01:12:10
Сообщений: 129
Откуда: Минск
Рейтинг сообщения: 0
ibiza11 писал(а):
"И незачем так орать" (с) :) Увеличение шрифта сообщения не прибавит понимания.
Рекомендую читать оригинальный даташит, если не получается понять смысл вырезанной таблицы.
Смотрим, читаем, переводим, вкуриваем!!!
Изображение

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

_________________
"Разум, единожды раздвинувший свои границы, никогда не вернется в границы прежние"
Альбе́рт Эйнште́йн

“Так что же такое электричество? Уже на протяжении всей жизни я задаю себе этот вопрос.”
Никола Тесла


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 31 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y