16.12.2021, 20:52
|
|
Частый гость
Регистрация: 05.11.2004
Адрес: Одесса
Сообщений: 47
Сказал спасибо: 11
Сказали Спасибо 22 раз(а) в 16 сообщении(ях)
|
Семейство PIC10F: изменить OSCCAL
Приветствую всех на форуме.
Захотелось изменить калибровочную константу в PIC10F222 при помощи PICkit2, не, не получилось. Значение в поле меняется, но частота по факту остается неизменной. Опробовано на двух тушках.
Вопрос, есть кто с таким сталкивался, и как таки решить проблему.
п.с. Ответ искал везде, даже в нете)))
|
|
|
|
16.12.2021, 21:08
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
Что за значение? Там по факту находится инструкция movlw с этой самой константой.
Цитата:
|
In addition, a calibration instruction is programmed into
the last address of memory, which contains the calibra-
tion value for the internal oscillator. This location is
always uncode protected, regardless of the code-pro-
tect settings. This value is programmed as a MOVLW XX
instruction where XX is the calibration value and is
placed at the Reset vector. This will load the W register
with the calibration value upon Reset and the PC will
then roll over to the users program at address 0x000.
The user then has the option of writing the value to the
OSCCAL Register (05h) or ignoring it.
|
|
|
|
|
16.12.2021, 21:32
|
|
Частый гость
Регистрация: 05.11.2004
Адрес: Одесса
Сообщений: 47
Сказал спасибо: 11
Сказали Спасибо 22 раз(а) в 16 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
"Захотелось изменить OSCCAL".
PICkit2 позволяет это проделать, и с PIC12F всё работало, частота тактового генератора менялась. Но с PIC10F не сработало.
Tools-›OSCCAL-›Set Manually-›OSCCAL value - меняем значение константы, жмем ОК.
Значение меняется на установленное, новое введенное значение.
Частота тактового генератора остается без изменений.
|
|
|
|
16.12.2021, 22:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,745
Сказал спасибо: 5,541
Сказали Спасибо 25,239 раз(а) в 5,668 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
В приведенной выше цитате из даташита английским по белому ж написано, что это значение хранится в защищённой от записи области. А у 629 оно в обычной памяти, не защищённой
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/
моя домашняя страничка: http://www.eddy.com.ua/
Последний раз редактировалось Eddy71; 16.12.2021 в 22:14.
|
|
|
|
16.12.2021, 22:35
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 709
Сказал спасибо: 363
Сказали Спасибо 795 раз(а) в 370 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
Приветствую любителей ПИКов!
К моменту выполнения инструкции по адресу 0x000 в рабочем регистре w уже находится то, что называется калибровочной константой и это значение можно либо записать в OSCCAL либо проигнорировать.
Kern, Вы же пишете на Ассемблере? Первой же командой в программе попробуйте выполнить movwf OSCCAL.
|
|
|
Сказали "Спасибо" j-Roger
|
|
|
16.12.2021, 22:53
|
|
Частый гость
Регистрация: 05.11.2004
Адрес: Одесса
Сообщений: 47
Сказал спасибо: 11
Сказали Спасибо 22 раз(а) в 16 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
Получается Eddy71 прав на счет английского на белом. Проверил еще пару тушек, возможности корректировать частоту RC нет. А жаль.
Выходит, предупреждения PICkit2 о потере калибровочной константы - для лохов! Зачем же её помещать в ...
|
|
|
|
16.12.2021, 23:27
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
Да, не. Там написано, что эта область всегда открыта, независимо от конфига. Ну то есть ее можно всегда считать, даже если остальная память закрыта от чтения. Ну а как еще сохранить заводское значение?
Цитата:
|
Erasing the device will also erase the preprogrammed internal calibration value for the internal oscillator. The calibration value must be read prior to erasing the part so it can be reprogrammed correctly later.
|
|
|
|
|
17.12.2021, 02:35
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 709
Сказал спасибо: 363
Сказали Спасибо 795 раз(а) в 370 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
Сообщение от Kern
|
Tools-›OSCCAL-›Set Manually-›OSCCAL value - меняем значение константы, жмем ОК.
Значение меняется на установленное, новое введенное значение.
Частота тактового генератора остается без изменений.
|
Kern, изменить программатором - это лишь пол-дела. Нужно еще в начале программы загрузить это значение в OSCCAL (автоматически данный ПИК этого не делает). Со значением "калибровочной константы" есть оччень неплохой такой нюанс.
Инструкция "movlw XX", предполагаемая в последнем слове флеша, приводит к тому, что к моменту выполнения инструкции по адресу 0x000 в рабочем регистре w уже ТОЧНО находится это самое XX (перефразирую: при старте начальный адрес программного счетчика равен адресу последнего программного слова в памяти программ, затем программный счетчик переполняется и начинает счет с нуля ). А вот что делать с этим XX - смотрим на регистр OSCCAL и анализируем. За калибровку частоты отвечают биты OSCCAL‹7:1›, а бит OSCCAL‹0› отвечает за вывод сигнала Fosc/4 на пин МК ( правда, чтобы этот сигнал появился на пине, нужно еще сбросить бит OPTION‹5›).
Что же касается изменения OSCCAL во время выполнения программы - частота внутреннего тактового генератора прекрасно изменяется. Для иллюстрации: задаем одно за другим ( программно ) три значения OSСCAL и получаем вот такую картину на выводе Fosc/4:
( В иллюстрации для формирования пауз в сигнале на небольшое время сбрасываем бит OSCCAL‹0› - этот бит отвечает за наличие сигнала на пине Fosc/4 МК)
|
|
|
Сказали "Спасибо" j-Roger
|
|
|
17.12.2021, 07:06
|
|
Частый гость
Регистрация: 05.11.2004
Адрес: Одесса
Сообщений: 47
Сказал спасибо: 11
Сказали Спасибо 22 раз(а) в 16 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
Спасибо j-Roger, Вы помогли мне разобраться "как это работает".
Оказывается константа, которую считывает PICkit2 перед загрузкой прошивки в МК, пишется в регистр OSCCAL. И это происходит в первых строках прошивки(программы). Но, если мы потом в программе тронули OSCCAL , то считай потёрли всю калибровочную константу. Записали в него байт 0000001, всё...
По сути с регистром OSCCAL можно работать только с нулевым битом, если не хотим затереть константу. А если таки затерли, то смотрим раздел "4.6 OSCCAL Register" и подбором ее восстанавливаем.
Вот и разобрались, почему изменение константы не давало результата, когда при инициализации МК я очищал регистр OSCCAL. Хто-ж его пёса знал, что в нём сидит та константа)))
|
|
|
|
17.12.2021, 10:37
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: PIC10F изменить OSCCAL
Сообщение от Kern
|
Хто-ж его пёса знал, что в нём сидит та константа)))
|
В даташите же написано об этом)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:22.
|
|