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

Приветствую.

 

Есть одна нетривиальная задача - нужен таймер с разрешением 0.01 сек

 

Посмотрел хитрый блок часов в стм, и понял что не все так просто :crying:

 

Во первых - кварц с частотой 32768 на 100 нацело не делится.

 

Во вторых, счетчик RTC_SSR прибавляется на 1 каждые 1\256 сек, что тоже не то-не се.

 

Вопрос - как-то можно сделать что-то более-менее похожее, исходя из всего этого, или решение только одно - надо где-то искать кварц на 36КГц?

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


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

Есть одна нетривиальная задача - нужен таймер с разрешением 0.01 сек

Таймеров в STM много. Разрешение - хоть микросекунды. Причем тривиально!

Или Вы что-то не договариваете?

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


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

...нужен таймер с разрешением 0.01 сек...искать кварц на 36КГц?

 

я что то не догоняю или....

 

у Вас камень кварцованный(в правильном раскладе) с частотой (вдумайтесь) 168 милионов раз в секунду.

Точность какая при этом у Вас получается? Свои 0,01 Вы сможете смело и достаточно точно получить на любом(практически) таймере поделив

всё это хозяйство на нужное число.будет у вас константа смещение на какую нить там сотую миллионную - Вы такую точность

даже не выбирете ничем - ни каналами ввода выовода, ни пинами, ни мат обработкой...

 

или???

 

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


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

я что то не догоняю или....

 

А в курсе, что камень на своих 168мегах.... в выкл. состоянии не работает?? А часы идут от батарейки? ;)

 

Вот и мне нужно, чтоб они шли не только, когда есть питание..

 

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

 

ЗЫ. Сейчас почитал даташит повнимательнее - оказывается там регистр синхронного делителя 15 бит и плюс еще асинхронный 7 бит (я раньше думал, что он - это старшая часть синхроного :biggrin: )

 

Отсюда вопрос - зачем вообще этот асинхронный делитель? Может сделать проще - задать его значение=1 (0 там помоему нельзя), итого получаем на входе синхронного 16384КГц, я так понимаю, и на счетчик миллисекунд будет поступать эта частота, а ее потом уже и делим на соотв. коефф. чтоб получить мс?

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

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


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

А в курсе, что камень на своих 168мегах.... в выкл. состоянии не работает?? А часы идут от батарейки? ;)

Вот и мне нужно, чтоб они шли не только, когда есть питание..

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

Думаю, Вам стоит еще раз аккуратно объяснить чего Вы желаете.

Нужны энергонезависимые часы с шагом 0.01 сек?

От кварца с частотой 32768Гц не получите, ибо делитель должен быть дробный!

Еще вопросы?

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


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

Думаю, Вам стоит еще раз аккуратно объяснить чего Вы желаете.

Нужны энергонезависимые часы с шагом 0.01 сек?

От кварца с частотой 32768Гц не получите, ибо делитель должен быть дробный!

Еще вопросы?

 

 

Хорошо, попробую :biggrin:

 

1) нужны часы, которые идут от батарейки

 

2) разрешающая способность 0.01 сек (точность +-10мс)

 

Я попробовал так - поставил асинхр. делитель в 0, а синхр в 32767. В рез-те получил тот же 1 Гц на выходе, и декремент регистра миллисек с частотой кварца. рассогласование частоты при делении - 68Гц,

т.е. абс. точность получается при частоте 32700Гц, в принципе - сойдет.

 

Правильно-ли я все понял, и если дел-ль=0 это нормально, или так делать нельзя?

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


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

Хорошо, попробую :biggrin:

 

1) нужны часы, которые идут от батарейки

 

2) разрешающая способность 0.01 сек (точность +-10мс)

 

Я попробовал так - поставил асинхр. делитель в 0, а синхр в 32767. В рез-те получил тот же 1 Гц на выходе, и декремент регистра миллисек с частотой кварца. рассогласование частоты при делении - 68Гц,

т.е. абс. точность получается при частоте 32700Гц, в принципе - сойдет.

 

Правильно-ли я все понял, и если дел-ль=0 это нормально, или так делать нельзя?

Фраза "When both prescalers are used, it is recommended to configure the asynchronous prescaler

to a high value to minimize consumption." из UM говорит, что если используются оба делителя, то

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

 

Надеюсь, на Ваш вопрос ответил. Хотя мне до сих пор не понятно кому "нужны идущие от батарейки часы"

с такой чремерной разрешающей способностью и "никакой" точностью?

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


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

в чём проблема? просыпайтесь каждые 1/256 секунды высчитывайте прошла ли 0.01 алгоритмически и делайте что вам надо, у вас же написано : НЕ ХУЖЕ! а не точно каждые 0.01 сек.

 

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


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

в чём проблема? просыпайтесь каждые 1/256 секунды высчитывайте прошла ли 0.01 алгоритмически и делайте что вам надо, у вас же написано : НЕ ХУЖЕ! а не точно каждые 0.01 сек.

И 1/128 будет достаточно. Вариант уж очень прожорливый, хотя об этой стороне вопроса (энергопотребление) автор темы тоже умалчивает.

Возможно, автор хочет сделать секундомер с выводрм сотых долей, причем не хочет заниматься "всем этим матаном" по пересчету 1/128 в 0.01.

Зачем это надо автор отказывается объяснять.

Почему бы не запустить RTC с обычным секундным интервалом и алгоритмически вычислять сотые на основании RTC->SSR?

Что за "величины" будут в RTC->TR и RTC->DR и что с ними можно сделать вопрос тоже открытый?

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


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

Фраза "When both prescalers are used, it is recommended to configure the asynchronous prescaler

to a high value to minimize consumption." из UM говорит, что если используются оба делителя, то

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

 

Странно однако, это я про делитель...

 

А второе - что значит с никакой точностью? Я написал - погрешность не более 0.01 сек, как-то подругому писать? :biggrin:

 

Да, часы должны работать от батарейки, потребление, конечно, чем меньше-тем лучше, высчитывать миллисекунды из 1\128 это как? Можете объяснить?

 

Почему бы не запустить RTC с обычным секундным интервалом и алгоритмически вычислять сотые на основании RTC->SSR?

Что за "величины" будут в RTC->TR и RTC->DR и что с ними можно сделать вопрос тоже открытый?

 

Он именно так и работает - с секундным интервалом, иначе сами часы будут считать неправильно, логично?

 

Просто с точки зрения математики - чем большее число делить на 100, тем точнее результат, например 32768 \ 100 получаем 327

 

Для проверки 327*100 = 32700, т.е. неточность 68Гц.

Если делитель сделаем больше , скажем 16, до частоты 2048Гц, то получаем 2048 \ 100 = 20

 

проверяем 20*100*16 = 32000, т.е. мы "отстаем " уже на 768Гц, разница ощутима?

 

Зачем это надо автор отказывается объяснять.

 

В смысле зачем? Нужны часы для спортивных тренировок.

 

из UM говорит, что если используются оба делителя, то

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

 

Замерил потребление, как было 1.5 мкА, при асинхр. делителе 128(по умолчанию), так и при полностью откл. делителе.

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


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

вопрос в том насколько плавает кварц, и насколько он изначально расходиться...

 

из 1/128 сделать 0.01 примерно так

1/128 = 0.0078125 === 0

2/128 = 0.015625 === 0.01

3/128 = 0.0234375 === 0.02

4/128 = 0.03125 === 0.03

 

причем у вас нет накопления ошибки, погрешность прибора с ценой деления 0.01 по умолчанию +- 0.005, а через 128 отсчетов у вас будет честная 1, и следующий круг без какой либо накопленной погрешности. Но что-то мне говорит что точность кварца в температуре будет сильно хуже....

 

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


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

вопрос в том насколько плавает кварц, и насколько он изначально расходиться...

причем у вас нет накопления ошибки, погрешность прибора с ценой деления 0.01 по умолчанию +- 0.005, а через 128 отсчетов у вас будет честная 1, и следующий круг без какой либо накопленной погрешности. Но что-то мне говорит что точность кварца в температуре будет сильно хуже....

 

Это все понятно, заказчик не согласен ставить какие-то более качественные кварцы, пусть будет так.

 

А на счет делителя, если на потреблежку от батареи не сильно влияет, больше тут никаких "подводных камней" нет? Если нет - то я так и оставляю, как делал.

 

Все эти деления по точности дают худший результат, плюс округления и пр...

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


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

да можно делить на сколько угодно больше 100

Просто потом из числа насчитанных тактов правильно перевести в 0.01 секунды.

 

 

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


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

Это все понятно, заказчик не согласен ставить какие-то более качественные кварцы, пусть будет так.

А на счет делителя, если на потреблежку от батареи не сильно влияет, больше тут никаких "подводных камней" нет? Если нет - то я так и оставляю, как делал.

Все эти деления по точности дают худший результат, плюс округления и пр...

Для тренеровок сгодится любой часовой кварц.

Насчет точности +-10мс было требование. Можно доказать, что "деления и всякие округления" дадут точность не хуже +-4мс.

Делайте так ((RTC->SSR * 100) >> 8) - так будут Вам сотые доли секунды с заявленной точностью при минимальном потреблении.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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