28.12.2017, 09:55
|
|
Временная регистрация
Регистрация: 26.10.2008
Адрес: москва
Сообщений: 92
Сказал спасибо: 15
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
|
Pic16F676 два ORG'а
Добрый день уважаемые! Возник вопрос, реализуется ли физически следующий код:
; these first 4 instructions are not required if the internal oscillator is not use
call 0x3FF ; retrieve factory calibration value
bsf STATUS,RP0 ; set file register bank to 1
movwf OSCCAL ; update register with factory cal value
bcf STATUS,RP0 ; set file register bank to 0
.................................................. .............................
.................................................. ...................................
.................................................. ...............................
;считывание заводской калибровочной константы для внутреннего RC генератора
ORG 0x3FF
retlw .128
и еще:
; initialize eeprom locations
ORG 0x2100
DE 0x00, 0x01, 0x02, 0x03
может вопрос и ламерский, но я нигде не нашел толкового ответа. По первому примеру более-менее понятно. Непонятно только, надо ли включать данный кусок в программу? То по-второму, непонятно записывает ли физически этот кусок в ЕЕПРОМ, эти 4 ячейки. В мплаб они отражаются, как записанные.
|
|
|
|
28.12.2017, 11:32
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
|
Re: Pic16F676 два ORG'а
Nick19, а вдумчиво прочитать все семейство документации по пациенту, семейству,… - DS, UG, PG, Errata, AN,…
Модель памяти и размещение значений с возможными режимами доступа…
Внимательно читать и понять комментарии.
Собственно ответ на вопрос в самом сообщении почти весь есть, кроме нюансов.
Надо сначала смотреть в тот самый FM, который надо RT , а потом уже в любой программе понимать происходящее.
По второму примеру измените значения данных и посмотрите на результат в памяти при останове на первой команде.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
28.12.2017, 11:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Pic16F676 два ORG'а
1. Не обязательно. Если не планируете калибровать генератор, то и этот кусок ни к чему.
2. Записывается.
|
|
|
Сказали "Спасибо" alvadep
|
|
|
28.12.2017, 14:57
|
|
Прописка
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
|
Re: Pic16F676 два ORG'а
Сообщение от Nick19
|
; initialize eeprom locations
ORG 0x2100
DE 0x00, 0x01, 0x02, 0x03
... записывает ли физически этот кусок в ЕЕПРОМ, эти 4 ячейки. В мплаб они отражаются, как записанные.
|
Сообщение от alvadep
|
2. Записывается.
|
Немного позанудствую
Этот "кусок" кода записывает значения в HEX-файл. А физически они запишутся в EEPROM при "заливке" прошивки (HEX-файла) в PIC программатором.
|
|
|
|
28.12.2017, 15:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Pic16F676 два ORG'а
Сообщение от tsb
|
Этот "кусок" кода записывает значения в HEX-файл. А физически они запишутся в EEPROM при "заливке" прошивки (HEX-файла) в PIC программатором.
|
Естессно!
Ну тогда и я немного позанудствую. Без "заливки" ТС и так видит, что
Цитата:
|
В мплаб они отражаются, как записанные.
|
|
|
|
|
28.12.2017, 17:02
|
|
Временная регистрация
Регистрация: 26.10.2008
Адрес: москва
Сообщений: 92
Сказал спасибо: 15
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
|
Re: Pic16F676 два ORG'а
alvadep, Еще раз спасибо. А если нужно калибровать? Каждый раз перезаписывать константу? И как контролировать?
Если нужно что-то поменять в ЕЕПроме, то я это делаю программно, вставив соответствующий кусок кода чтения/записи ЕЕПРОМа?
Последний раз редактировалось Nick19; 28.12.2017 в 17:07.
|
|
|
|
28.12.2017, 17:37
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 748
Сказал спасибо: 365
Сказали Спасибо 822 раз(а) в 386 сообщении(ях)
|
Re: Pic16F676 два ORG'а
Nick19, ИМХО неважно, где хранить калибровочную константу - важно, чтобы она вовремя попала в регистр OSCCAL. В Вашем примере (и в даташите) ее возвращает "подпрограмма" из одной команды по адресу 3FF. Вы можете калибровочную константу хранить в ЕЕПРОМе, главное - считать ее оттуда и загнать в регистр OSCCAL где-нибудь в начале выполнения программы, перед тем как настраивать остальную (критичную к тактовой частоте) периферию.
|
|
|
|
28.12.2017, 18:36
|
|
Прописка
Регистрация: 24.02.2007
Адрес: Вольногорск, Украина
Сообщений: 59
Сказал спасибо: 0
Сказали Спасибо 33 раз(а) в 18 сообщении(ях)
|
Re: Pic16F676 два ORG'а
Давно не писал на ассемблере, но нужно модифицировать регистр PCLATH перед вызовом константы. А так по идее должно работать.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:57.
|
|