18.11.2013, 23:23
|
|
Прописка
Регистрация: 07.02.2010
Адрес: Калининград
Сообщений: 148
Сказал спасибо: 72
Сказали Спасибо 23 раз(а) в 20 сообщении(ях)
|
Табличная адресация+PIC+ASM=вылет за пределы страницы памяти.
Здравствуйте Друзья.
Извините за детский вопрос, но меня давно мучает проблема с табличной адресацией. Раньше я решал проблему вылета за границы страницы памяти размещением таблицы в самом начале листинга. Сейчас у меня там достаточно большая подпрограмма обработки прерываний и таблица попадает где то на границу страниц памяти, при этом контролер вылетает и сбрасывается WD. Вопрос состоит в том: можно ли как нибудь предугадать где это произойдет и как нибудь задать положение таблицы принудительно в адресах.
С уважением Максим.
P.S. на форуме не нашел такой темы поэтому спросил.
__________________
Лужу, паяю, ЭВМ починяю.....
|
|
|
|
18.11.2013, 23:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Табличная адресация+PIC+ASM=вылет за пределы страницы памяти.
Директива org.
|
|
|
Сказали "Спасибо" alvadep
|
|
|
19.11.2013, 16:13
|
|
Прописка
Регистрация: 24.02.2007
Адрес: Вольногорск, Украина
Сообщений: 59
Сказал спасибо: 0
Сказали Спасибо 33 раз(а) в 18 сообщении(ях)
|
Re: Табличная адресация+PIC+ASM=вылет за пределы страницы памяти.
Например так.
Код:
|
...
movlw high(table)
movwf PCLATH
...
call table
org XXX
table andlw b'00001111'
addwf PCL
; abcdefgh
retlw b'11111100' ; 0
retlw b'01100000' ; 1
retlw b'11011010' ; 2
retlw b'11110010' ; 3
retlw b'01100110' ; 4
retlw b'10110110' ; 5
retlw b'10111110' ; 6
retlw b'11100000' ; 7
retlw b'11111110' ; 8
retlw b'11110110' ; 9
retlw b'11101110' ; a
retlw b'00111110' ; b
retlw b'10011100' ; c
retlw b'01111010' ; d
retlw b'10011110' ; e
retlw b'00000000' ; off |
В принципе это все есть в ДШ.
AN556, Implementing a Table Read - Microchip
Последний раз редактировалось t_ruslan_w; 19.11.2013 в 16:41.
|
|
|
Сказали "Спасибо" t_ruslan_w
|
|
|
19.11.2013, 23:19
|
|
Прописка
Регистрация: 07.02.2010
Адрес: Калининград
Сообщений: 148
Сказал спасибо: 72
Сказали Спасибо 23 раз(а) в 20 сообщении(ях)
|
Re: Табличная адресация+PIC+ASM=вылет за пределы страницы памяти.
Сообщение от t_ruslan_w
|
Например так.
org XXX
table andlw b'00001111'
addwf PCL
; abcdefgh
retlw b'11111100' ; 0
retlw b'01100000' ; 1
retlw b'11011010' ; 2
retlw b'11110010' ; 3
retlw b'01100110' ; 4
retlw b'10110110' ; 5
retlw b'10111110' ; 6
retlw b'11100000' ; 7
retlw b'11111110' ; 8
retlw b'11110110' ; 9
retlw b'11101110' ; a
retlw b'00111110' ; b
retlw b'10011100' ; c
retlw b'01111010' ; d
retlw b'10011110' ; e
retlw b'00000000' ; off
[/code]
В принципе это все есть в ДШ.
AN556, Implementing a Table Read - Microchip
|
Здесь все понял.
Проверил: таблицу закинул повыше он её туда разместил.
Прочитал AN556 полностью и теперь не пойму выражение:
movlw high(table)
movwf PCLATH
...
call table
Что оно дает мне, и обязательно ли оно?
Если не трудно поясните, хочу распедалить этот вопрос до конца.
__________________
Лужу, паяю, ЭВМ починяю.....
|
|
|
|
20.11.2013, 00:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.01.2005
Адрес: Воронеж
Сообщений: 1,384
Сказал спасибо: 24
Сказали Спасибо 243 раз(а) в 182 сообщении(ях)
|
Re: Табличная адресация+PIC+ASM=вылет за пределы страницы памяти.
Здесь нужно понимать , что при переполнении PCL не увеличивается PCLATH. Как это происходит с другими регистрами. Поэтому :
movlw high(table) ; загрузим старший байт адреса метки table
movwf PCLATH ; в регистр
MOWFW TEMP ; забираем то что нужно перекодировать через таблицу
CALL table ; переход на метку таблицы
org XXX
table andlw b'00001111' ; маска на старший байт
addwf PCL ; таблица может располагаться в любом месте ,
;но не должна быть длинее 0F
================================================== =
Чтобы иметь таблицу длиной FF нужно её располагать по адресам кратным 0х100.
Перед переходом в таблицу установить нужный бит в PCLATH .
|
|
|
|
20.11.2013, 00:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Табличная адресация+PIC+ASM=вылет за пределы страницы памяти.
Если вкратце, программный счетчик PC (другими словами адрес команд) в среднем семействе пиков 13-ти разрядный и складывается из PCH и PCL. Вот PCH как раз и загружается из PCLATH.
А вообще, скачайте на microchip.ru справочник по среднему семейству микроконтроллеров PICmicro. Там найдете ответы на все свои вопросы. Пункт 6.2.4 Счетчик команд PC.
|
|
|
Сказали "Спасибо" alvadep
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Linux-ваше мнение
|
Tvenn |
Делимся опытом |
6169 |
23.08.2015 08:57 |
Адресация к памяти I2C по адресу
|
Lexil |
Proteus |
2 |
12.12.2012 12:40 |
Как в PIC 16f877 переключать страницы памяти?
|
miwutka |
Микроконтроллеры, АЦП, память и т.д |
117 |
15.06.2012 08:58 |
Литература по микроконтроллерам (AVR, PIC, ПЛИС и т.д.). Сборка книг - (256 книг+ 27 CD c примерами из книг) [обновление 2011, PDF, DJVU]
|
yurinform |
Микроконтроллеры, АЦП, память и т.д |
5 |
05.07.2011 19:00 |
Размещение констант в памяти программ в PIC
|
ST_Senya |
Микроконтроллеры, АЦП, память и т.д |
10 |
15.10.2009 20:12 |
Часовой пояс GMT +4, время: 18:20.
|
|