jenya7 0 4 марта, 2015 Опубликовано 4 марта, 2015 · Жалоба я сделал програмный RTC с часовым кварцем. проверил все работает и успокоился. но появилось требование калибровать RTC так как за год может набежать весомая погрешность. я решил сделать что то вроде этого: подсоеденить точный рефересный осцилятор к пину прерывания или к таймеру в режиме каунтер, скажем осцилятор = 1мега (1us). значит за десять тиков часового кварца он должен насчитать 30.5(us) * 10 = 305 раз. если насчитал то все хорошо. а вот если посчитал с ошибкой как коректировать эту ошибку в коде? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CrimsonPig 0 4 марта, 2015 Опубликовано 4 марта, 2015 · Жалоба я сделал програмный RTC с часовым кварцем. проверил все работает и успокоился. но появилось требование калибровать RTC так как за год может набежать весомая погрешность. я решил сделать что то вроде этого: подсоеденить точный рефересный осцилятор к пину прерывания или к таймеру в режиме каунтер, скажем осцилятор = 1мега (1us). значит за десять тиков часового кварца он должен насчитать 30.5(us) * 10 = 305 раз. если насчитал то все хорошо. а вот если посчитал с ошибкой как коректировать эту ошибку в коде? Убердевайс-то эксплуатируется при постоянной температуре ? А то частота дешевых часовых кварцев хорошо от нее зависит. Если температура постоянна, то можно что-то придумать, а если она скачет туда-сюда, то фиг чего накомпенсируешь. Недаром в нормальных RTC типа DS3231 унутре кроме кварца есть еще и термометр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 4 марта, 2015 Опубликовано 4 марта, 2015 (изменено) · Жалоба Убердевайс-то эксплуатируется при постоянной температуре ? А то частота дешевых часовых кварцев хорошо от нее зависит. Если температура постоянна, то можно что-то придумать, а если она скачет туда-сюда, то фиг чего накомпенсируешь. Недаром в нормальных RTC типа DS3231 унутре кроме кварца есть еще и термометр. да я думал сделать какой нибудь lookup table по температуре. ну а если принять во вниманее что часовой кварц качественный? он кстати такой и есть. температура скачет - прибор не всегда стоит в помещении с контролируемой температурой. посмотрел в даташит зависимость ppm от температуры. скажем для -10 градусов погрешность -40ppm. я должен отнять 32768-40 и перегрузить новое значение в compare register? Изменено 4 марта, 2015 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 48 4 марта, 2015 Опубликовано 4 марта, 2015 · Жалоба Поставить DS32KHZ термокомпенсированный кварцевый генератор, и будет вам счастье. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 4 марта, 2015 Опубликовано 4 марта, 2015 · Жалоба Поставить DS32KHZ термокомпенсированный кварцевый генератор, и будет вам счастье. да уж...а цена? а футпринт? народ не согласиться со мной. побьют. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 4 марта, 2015 Опубликовано 4 марта, 2015 (изменено) · Жалоба Если термокомпенсированный дороговат, то можно и копеечный M41T00, и по таблице корректировать погрешность. Ну или да, то же самое реализовать в своем программном RTC (что-то типа дробной коррекции, тик таймера вперед или назад через вычисляемый интервал). Для калибровки - я бы сформировал секундный интервал, а уж его внешний частотомером в режиме измерения периода измерял (вполне подойдет микроконтроллер с тактированием от TCXO, имеющий захват таймера), 1E-7 тривиально, и с большим запасом по разрешению и точности. Кстати, не забывайте не только о температурном дрейфе, но и о естественном старении. И, заодно, о правильном выборе нагрузочных емкостей. А вообще с программными RTC надо осторожнее, иногда можно ожидать пакостей от таймера, работающего в асинхронном режиме (как, например, у AVR). Изменено 4 марта, 2015 пользователем rx3apf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 12 4 марта, 2015 Опубликовано 4 марта, 2015 · Жалоба посмотрел в даташит зависимость ppm от температуры. скажем для -10 градусов погрешность -40ppm. я должен отнять 32768-40 и перегрузить новое значение в compare register? ppm = parts per million, или миллионные части, 10-6. Погрешность 40ppm - значит, 40*10-6. На каждый миллион импульсов надо добавить или отнять 40 импульсов. часовой кварц качественный? он кстати такой и есть. Часовые кварцы, даже качественные, имеют погрешность 20ppm. Это означает уход примерно на 45 секунд в месяц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CrimsonPig 0 4 марта, 2015 Опубликовано 4 марта, 2015 · Жалоба да уж...а цена? а футпринт? народ не согласиться со мной. побьют. А может вы озвучите сначала требования к точности ? А то зная ваши попытки соптимизировать все по скорости выполнения программы (даже в тех местах, где особенно не надо), можно продположить, что вы хотите добиться ошибки RTC в 1 секунду за год там, где это нафиг не сдалось, причем программными методами на дешевом китайском кварце... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 4 марта, 2015 Опубликовано 4 марта, 2015 (изменено) · Жалоба Если термокомпенсированный дороговат, то можно и копеечный M41T00, и по таблице корректировать погрешность. Ну или да, то же самое реализовать в своем программном RTC (что-то типа дробной коррекции, тик таймера вперед или назад через вычисляемый интервал). Для калибровки - я бы сформировал секундный интервал, а уж его внешний частотомером в режиме измерения периода измерял (вполне подойдет микроконтроллер с тактированием от TCXO, имеющий захват таймера), 1E-7 тривиально, и с большим запасом по разрешению и точности. Кстати, не забывайте не только о температурном дрейфе, но и о естественном старении. И, заодно, о правильном выборе нагрузочных емкостей. А вообще с программными RTC надо осторожнее, иногда можно ожидать пакостей от таймера, работающего в асинхронном режиме (как, например, у AVR). а как скоректировать ошибку? ppm = parts per million, или миллионные части, 10-6. Погрешность 40ppm - значит, 40*10-6. На каждый миллион импульсов надо добавить или отнять 40 импульсов. Часовые кварцы, даже качественные, имеют погрешность 20ppm. Это означает уход примерно на 45 секунд в месяц. миллион пульсов это 30.6 секунд. это значит я каждые 30.6 секунд должен проверять температуру и отнимать ошибку? А может вы озвучите сначала требования к точности ? А то зная ваши попытки соптимизировать все по скорости выполнения программы (даже в тех местах, где особенно не надо), можно продположить, что вы хотите добиться ошибки RTC в 1 секунду за год там, где это нафиг не сдалось, причем программными методами на дешевом китайском кварце... мне еще точные требования по точности не предъявили но я уже мылю ж...шею так как знаю с кем имею дело. :) Изменено 4 марта, 2015 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 12 5 марта, 2015 Опубликовано 5 марта, 2015 · Жалоба миллион пульсов это 30.6 секунд. это значит я каждые 30.6 секунд должен проверять температуру и отнимать ошибку? Странная идея, как это вам прошло в голову такое? Если ошибка меряется в миллионных частях, это отнюдь не значит, что вас кто-то заставляет отсчитывать именно миллион импульсов. Можете мерять температуру так часто, как вам удобно, например, раз в секунду. А коррекцию можете делать, например, тогда, когда отсчитаете столько импульсов, сколько их набегает в тот момент, когда изменение счетчика на единицу обнулит погрешность. То есть, для того, чтобы скомпенсировать на 40ppm отсчитайте 25000 импульсов и инкрементируйте/декрементируйте счетчик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 марта, 2015 Опубликовано 8 марта, 2015 · Жалоба Странная идея, как это вам прошло в голову такое? Если ошибка меряется в миллионных частях, это отнюдь не значит, что вас кто-то заставляет отсчитывать именно миллион импульсов. Можете мерять температуру так часто, как вам удобно, например, раз в секунду. А коррекцию можете делать, например, тогда, когда отсчитаете столько импульсов, сколько их набегает в тот момент, когда изменение счетчика на единицу обнулит погрешность. То есть, для того, чтобы скомпенсировать на 40ppm отсчитайте 25000 импульсов и инкрементируйте/декрементируйте счетчик. честно говоря не понял логику коррекции. почему 25000? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михась 2 8 марта, 2015 Опубликовано 8 марта, 2015 · Жалоба У STM по этой теме есть аппнота, где все разжёвано и код приведен. но вы не сказали какой мк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 марта, 2015 Опубликовано 8 марта, 2015 · Жалоба У STM по этой теме есть аппнота, где все разжёвано и код приведен. но вы не сказали какой мк. EFM32TG842F32 но я не думаю что есть большая разница. апнот поищу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 12 8 марта, 2015 Опубликовано 8 марта, 2015 · Жалоба честно говоря не понял логику коррекции. почему 25000? "Тоже мне, бином Ньютона"(с). Если 1 миллион разделить на 40, то будет 25000. Если у вас погрешность 40 ppm, то корректируя на +-1 после каждого 25-тысячного импульса, вы обнуляете погрешность. я уже мылю ж...шею так как знаю с кем имею дело. :) После ваших ответов, вспомнилось бессмертное от Козьмы Пруткова: "Не робей перед врагом. Злейший враг человека - он сам!". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 марта, 2015 Опубликовано 8 марта, 2015 · Жалоба "Тоже мне, бином Ньютона"(с). Если 1 миллион разделить на 40, то будет 25000. Если у вас погрешность 40 ppm, то корректируя на +-1 после каждого 25-тысячного импульса, вы обнуляете погрешность. После ваших ответов, вспомнилось бессмертное от Козьмы Пруткова: "Не робей перед врагом. Злейший враг человека - он сам!". мда...мои мозги салбоваты для такой алгоритмики. :) Трудно поспорить с Козьмой. просто есть люди которе хотят получить определенный результат, не важно позволяет это закон ома или нет. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться