MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

Калибровка внутреннего генератора 12F675

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Калибровка внутреннего генератора 12F675
Автор: ra4fcr ()
Дата:   18/07/2004 09:39

Как сделать ее на Си?

У меня, почему-то на вот это
#asm
	BSF	STATUS,RP0
	CALL 0x3FF
	MOVWF OSCCAL
	BCF STATUS,RP0
#endasm

компилер ругается.

По адресу 0х3FF записано 0х3498.


 
 Re: Калибровка внутреннего генератора 12F675
Автор: oll ()
Дата:   18/07/2004 10:40

была проба - каккой проц. не помню, скорее всего 16с505 - но может и подойдет

static volatile unsigned char CALIB @ 0x3FF;
.
.
.
.
main()

{
OSCCAL=CALIB;
.
.
.
.
.
}


 
 Re: Калибровка внутреннего генератора 12F675
Автор: Vova_27 ()
Дата:   18/07/2004 12:55


const unsigned char CALIB @ 0x3FF;


 
 если на HiTECH
Автор: L.A. ()
Дата:   18/07/2004 13:25

то можно написать так:

OSCCAL = _READ_OSCCAL_DATA();


 
 Re: Калибровка внутреннего генератора 12F675
Автор: KYV ()
Дата:   18/07/2004 17:33

На www.microchipc.com есть пример.

Я знаю, что ничего не знаю.
Сократ.


 
 Re: Калибровка внутреннего генератора 12F675
Автор: Sergey ()
Дата:   18/07/2004 23:19

А я так пробовал SCCAL = _READ_OSCCAL_DATA(); не получается


 
 Re: Калибровка внутреннего генератора 12F675
Автор: Max2 ()
Дата:   19/07/2004 04:49

Я кода не видел и не знаю какими словами ругается компилятор, по этому могу только предположить
такую ситуацию.
Если этот код на асме, расположен по вектору сброса, т.е начиная с нулевого адреса, то до
вектора прерываний остается всего четыре ячейки памяти. У Вас этот код уже занимает четыре
ячейки, но наверное есть еще какие-нибудь команды. Переход на инициализацию например.
Получается наезд на вектор прерываний. Вот компилятор и ругается. Можно сначала call _init, а
там уже сходить за калибровочной константой.




 
 Re: Калибровка внутреннего генератора 12F675
Автор: Bomgik ()
Дата:   19/07/2004 06:36

А нафига его калибровать он на заводе откалиброван ! Вроде не плохо. 3498 записывается при
програмировании в последнюю ячейку(из программы не получилось а при програмировании получилось)
это и есть калибровочная константа !(интересно она визде одинакова ???у меня такая же зашита)
Но в этом пике можно програмно частоту менять ! Ну это я не делал т.к. не надо это он и так
мало кушает а если усыпить его ...


 
 Re: Калибровка внутреннего генератора 12F675
Автор: ra4fcr ()
Дата:   19/07/2004 09:32

Спасибо за ответы!
Я все пробывал - вроде не ругается больше. Но особого эффекта от этой константы не
заметил. По моим подсчетам в моем случае тактовый работает на 1 МГц, а не 4 МГц. С
чем это связано?


 
 Re: Калибровка внутреннего генератора 12F675
Автор: ra4fcr ()
Дата:   19/07/2004 11:33

И еще вопрос. А как записать в нужную ячейцу памяти, например, в ту-же 0x3FF какое-
то значение?


 
 ну и фигли??
Автор: Vova ()
Дата:   19/07/2004 11:35

там лежит retlw туда ф-цию делать надо, а не
переменную


#define _READ_OSCCAL_DATA() (*(unsigned char(*)())0x3FF)()


asm("\tpsect caldata,class=CODE,delta=2,abs,ovrld");\
asm("org 03FFh"); \
asm("retlw
00h");


 
 на форуме есть ПОИСК!!
Автор: Vova ()
Дата:   19/07/2004 11:37

http://www.microchip.ru/phorum/read.php?f=2&i=19862&t=19857#reply_19862


 
 Спасибо за помощь!
Автор: ra4fcr ()
Дата:   19/07/2004 14:14

Еще один вопрос. По адресу 0х3FF было записано 0х3498.
А OSCCAL то шестиразрядный. Что в него записывается?
И что-же нужно записать в 0х3FF испльзуя вышеприведенный код?


 
 Re: Калибровка внутреннего генератора 12F675
Автор: Max2 ()
Дата:   19/07/2004 14:27

34 - это код команды retlw, а сама константа = 98


 
 а в чем вопрос-то?
Автор: Vova ()
Дата:   19/07/2004 14:31

0x3498 - это 11 0100 1001 1000b

старшие 4 бита - опкод команды retlw, далее два бита не используются,
далее 8 бит константы, в нашем случае 0x98

OSCAL-то шестибитный, только не используются младшие
два бита, а не старшие. итого в регистр ляжет 1001 10xx

а какая разница-то? ;)


 
 Re: Калибровка внутреннего генератора 12F675
Автор: Max2 ()
Дата:   19/07/2004 14:45


>И еще вопрос. А как записать в нужную ячейцу памяти, например, в ту-же 0x3FF какое-
то значение?

В конце кода программы пишешь:


org 0x3FF
retlw 0x98





 
 Re: Калибровка внутреннего генератора 12F675
Автор: ra4fcr ()
Дата:   20/07/2004 10:20

Всем спасибо - просветили.

Но все-же почему то тактовый работает где-то 1 МГц, а не 4 МГц.


 
 Re: Калибровка внутреннего генератора 12F675
Автор: edrebol ()
Дата:   20/07/2004 10:56

>Но все-же почему то тактовый работает где-то 1 МГц, а не 4 МГц.

А как ты понял, что 1 МГц? Осцилографом смотрел?
Частота тактов процессора в 4 раза меньше частоты тактов осцилятора.