|
|
  |
Нужно скорректировать частоту таймера, очень аккуратно |
|
|
|
Feb 20 2013, 04:58
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Добрый день. Задача такая: есть у меня платка оцифровщика, основные узлы -процессор ARM9 (at91sam9g45) и внешний АЦП. Процессор с помощью своего таймера генерирует тактовый сигнал, которым запускаются преобразования в АЦП. Частота импульсов таймера = 100,1кГц получается делением половинной частоты системного клока (133,333МГц/2) на 666 Однако заказчику хотелось бы иметь частоту дискретизации ровно 100кГц. Алгоритм работы с АЦП такой, таймер молотит положительные импульсы на выходной пин, который запускает АЦП, одновременно с этим генерируется прерывание, по которому я вычитываю АЦП. Что тут можно придумать, чтобы уменьшить частоту на 0,1%? Пробовал добавить в прерывании задержку - переключал тактирование таймера на источник (133,333МГц/8), затем пару nop'ов и обратно на (133,333МГц/2) -в результате получил 100,00кГц частоту, по частотомеру - вполне устойчивую. Но потом при рассмотрении спектра синуса, записанного с АЦП увидел жуткий подъем вблизи палки синуса и отношение сигнал/(шум+гармоники) был около 40дб. Для сравнения - в спектре этого же синуса, записанного с частотой АЦП 100,1 (без коррекции частоты таймера) палка синуса четкая на фоне шума, без подъема, и отношение сигнал/(шум+гармоники) около 80дБ. Выходит, что задержка, которую я реализовал вносит значительный джиттер? У кого какие соображения? Как можно скорректировать частоту не добавляя джиттер в тактовый сигнал?
|
|
|
|
|
Feb 20 2013, 10:15
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(Tanya @ Feb 20 2013, 11:17)  Поделить на 667 - будет лучше. А что такое "ровно" 100МГц? Вообще-то кГц (килогерц). Но помоему, Вы все прекрасно поняли  На 667 действительно лучше, в 2 раза. Но отличие в 50Гц это 5*10Е-4 - тоже много. С имеющимся кварцем я могу иметь точность 2*10Е-5 Цитата(VCO @ Feb 20 2013, 10:12)  Или внешней логикой... К сожалению, устройство уже собрано, поэтому думал скорректировать программно. В крайнем случае подпаять пару проводков.
|
|
|
|
|
Feb 20 2013, 17:16
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
Цитата(Alexashka @ Feb 20 2013, 13:15)  поэтому думал скорректировать программно. Есть алгоритмы изменения частоты дискретизации. Используются например чтобы переделать звук оцифрованный с 48 кГц в оцифрованный с 44,1 кГц. АЦП работает с частотой 100,1 кГц. И из каждых 1001 отсчётов с АЦП вычислениями получается 1000 выходных отсчётов. Довольно сложно, но можно.
|
|
|
|
|
Feb 21 2013, 07:49
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Всем спасибо за идеи  Вообщем доработка получилась несложная -кинул один провод с выхода PCK (programmable clock output, частота 12/8=1,5МГц) на тактовый вход таймера с делителем на 15. (Гыыы..пока писал сообщение понял что у меня ошибка в программе). Теперь по частотомеру стабильные 100кГц, колеблется только цифра в 8 знаке. Эту же частоту хочу завести на вход синхронизации DC/DC, чтобы избавиться от нескольких спуров, которые наблюдаются в спектре записанного сигнала. Таким образом убиваем двух зайцев. Цитата(demiurg_spb @ Feb 21 2013, 09:28)  Тоже над подобной задачей думаю, но у меня мега162 и кварц 7372800, а нужно получить 1 кГц тик. Самое точное, что можно аппаратно получить - это использовать 16-ти битный CTC-таймер с делителем 1 и считать до 7372+1 получается частота 999.9728Гц. Хочется точнее и и без джиттера... В Вашем случае возможно удастся подстроить частоту кварца увеличив нагрузочную емкость. Нужно всего на 200Гц сдвинуть.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|