сколько ни читал, никак не могу понять, загружал значения в osccal (могу сейчас ошибаться в написании) чуть ли не первой командой после определения стека, а ее я пишу первой (или надо раньше?). если есть возможность распишите по пунктам что нужно сделать! очень прошу. мне нужно подогнать частоту хотябы в диапазон от 7,9 до 8,1. кварц использовать нерентабельно и смысла нет.
калибровка внутреннего RC генератора.
Прошу объяснить на пальцах, а то что то никак не пойму. как откалибровать внутренний генератор? вводная, процессор atmega8535, выбран внутренний генератор 8Мгц, но он не много не дотягивает до этих 8 МГц, примерно 500.кгц, это по расчетам по полученным измерениям программки генератора при работе с кварцем (все отлично) и внутренним генератором (частота на выходе занижена).
сколько ни читал, никак не могу понять, загружал значения в osccal (могу сейчас ошибаться в написании) чуть ли не первой командой после определения стека, а ее я пишу первой (или надо раньше?). если есть возможность распишите по пунктам что нужно сделать! очень прошу. мне нужно подогнать частоту хотябы в диапазон от 7,9 до 8,1. кварц использовать нерентабельно и смысла нет.
сколько ни читал, никак не могу понять, загружал значения в osccal (могу сейчас ошибаться в написании) чуть ли не первой командой после определения стека, а ее я пишу первой (или надо раньше?). если есть возможность распишите по пунктам что нужно сделать! очень прошу. мне нужно подогнать частоту хотябы в диапазон от 7,9 до 8,1. кварц использовать нерентабельно и смысла нет.
- Реклама
вы должны считать содержимое OSCCAL и затем понемножку увеличивать (и записывать обратно, естественно) его до тех пор, пока не получите нужную частоту. в последующем можно будет сразу записывать туда нужное значение.
только есть 2 проблемки:
1. 500 кГц - отклонение больше, чем как бы гарантирует производитель. что-то тут не так
2. все эти калибровки будут иметь смысл для неизменной температуры и питающего напряжения. поменяется что-либо - хана вашим калибровкам, уплывет частота
только есть 2 проблемки:
1. 500 кГц - отклонение больше, чем как бы гарантирует производитель. что-то тут не так
2. все эти калибровки будут иметь смысл для неизменной температуры и питающего напряжения. поменяется что-либо - хана вашим калибровкам, уплывет частота
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Отклонение всего 6%. Ничего удивительного, если ТС не загружает OSCCAL нужным значением, т.к. МК при старте загружает калибровочное значение для генератора 1МГц.ARV писал(а):1. 500 кГц - отклонение больше, чем как бы гарантирует производитель. что-то тут не так
нет, специально ничего не загружал, то есть по даташиту я понял, что он в любом случае грузит калибровку для 1 МГц, но как загрузить для 8 - не понял. вот это и хочу узнать, где что брать и как грузить (куда я понял).
Добавлено after 2 minutes 15 seconds:
По поводу температуры я знаю, но если брать графики по даташиту, то изменений частоты мне хватает во всем диапазоне температур для нужной мне на выходе точности, если бы сама центральная частота не ухала куда ни будь изначально...
Добавлено after 2 minutes 15 seconds:
По поводу температуры я знаю, но если брать графики по даташиту, то изменений частоты мне хватает во всем диапазоне температур для нужной мне на выходе точности, если бы сама центральная частота не ухала куда ни будь изначально...
Считываете программатором Calibration. Запоминаете значение для 8МГц.
В программе, в цикле изменяете OSCCAL до нужного значения, прибавляя(вычитая) по единице.
В программе, в цикле изменяете OSCCAL до нужного значения, прибавляя(вычитая) по единице.
- Реклама
я наизусть даташит не помню, но вроде как гарантируется лучше 5%? не?Z_h_e писал(а):Отклонение всего 6%
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Возможно даже 1%, но для этого должен быть загружен OSCCAL значением для соответствующего генератора, чего МК делает сам только для 1МГц.
спасибо, попробую.
итак последовательность такая, сначала для конкретного мк считывается калибровочная константа, далее она записывается в самом начале программы в регистр OSCCAL и проверяется результат по выходной частоте генерируемой мк. Для подгона частоты принудительно меняем значение относительно калибровочной в ту или другую сторону (в какую нужно) контролируем результат. если удовлетворяет - полученное значение сохраняем в программе и при старте загружаем его в OSCCAL
Я правильно понял?
итак последовательность такая, сначала для конкретного мк считывается калибровочная константа, далее она записывается в самом начале программы в регистр OSCCAL и проверяется результат по выходной частоте генерируемой мк. Для подгона частоты принудительно меняем значение относительно калибровочной в ту или другую сторону (в какую нужно) контролируем результат. если удовлетворяет - полученное значение сохраняем в программе и при старте загружаем его в OSCCAL
Я правильно понял?
не могли бы вы ткнуть носом в то место даташита, где это написано?Z_h_e писал(а):МК делает сам только для 1МГц
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Из описания регистра OSCCAL
Добавлено after 4 minutes 26 seconds:
Код: Выделить всё
Writing the calibration byte to this address will trim the Internal Oscillator to remove process
variations from the Oscillator frequency. During Reset, the 1 MHz calibration value
which is located in the signature row high byte (address 0x00) is automatically loaded
into the OSCCAL Register. If the internal RC is used at other frequencies, the calibration
values must be loaded manually. This can be done by first reading the signature row by
a programmer, and then store the calibration values in the Flash or EEPROM. Then the
value can be read by software and loaded into the OSCCAL Register. Просто в OSCCAL нужно загрузить число калибровки. Можно записать сразу нужное значение, скорее всего ничего страшного не произойдет, т.к. значения калибровок для каждого генератора похожи. Где-то была инфа в ДШ, что изменение регистра сразу намного может привести к сбою генератора.1dimon1 писал(а):Я правильно понял?
спасибо, ну я расписал подряд два независимых действа. 1 определение значения и второе обычный режим работы.
А так спасибо, будем пробовать.
А так спасибо, будем пробовать.
благодарюZ_h_e писал(а):Из описания регистра OSCCAL
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
меня тоже весьма интересует калибровка на частотах выше 1 МГц.
повторю кусочек текста из даташита:
"During Reset, the 1 MHz calibration value which is located in the signature row High byte (address 0x00) is automatically loaded into the OSCCAL Register."
да, программатор считывает и показывает все 4 калибровочных байта.
но хотелось бы "автоматизировать" процесс калибровки.
если программатор умеет читать эти байты, то почему бы нам не прочитать нужный байт самим в своей программе?
вот только не понятно, где находится эта "строка сигнатуры" и как к ней обратиться? ясно, что это не просто адрес 0x00 в адресном пространстве, так как этот адрес принадлежит регистру R0.
если существует возможность самим прочитать калибровочный байт, например, для 8 МГц, то желательно не заниматься подбором его значения, а сразе прочитать записать в регистр OSCCAL.
повторю кусочек текста из даташита:
"During Reset, the 1 MHz calibration value which is located in the signature row High byte (address 0x00) is automatically loaded into the OSCCAL Register."
да, программатор считывает и показывает все 4 калибровочных байта.
но хотелось бы "автоматизировать" процесс калибровки.
если программатор умеет читать эти байты, то почему бы нам не прочитать нужный байт самим в своей программе?
вот только не понятно, где находится эта "строка сигнатуры" и как к ней обратиться? ясно, что это не просто адрес 0x00 в адресном пространстве, так как этот адрес принадлежит регистру R0.
если существует возможность самим прочитать калибровочный байт, например, для 8 МГц, то желательно не заниматься подбором его значения, а сразе прочитать записать в регистр OSCCAL.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Нет доступа из программы нИ ко фьюзам, нИ к калибровкам.
Несколько раз делал кой-чего с УАРТом, частота 8МГц отв внутр. RC, а значение калибровки не менял. И ничего, нормуль.
Несколько раз делал кой-чего с УАРТом, частота 8МГц отв внутр. RC, а значение калибровки не менял. И ничего, нормуль.
а жаль...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.



