| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Как в PIC 16f877 переключать страницы памяти?
12.06.2012, 16:16
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от Bumbarra
|
|
Всё это в даташите описано.
|
На заборе тоже написано!!! 
Однако... все компиляторы имеют свои баго-фичи...
Был бы здесь сейчас tester... он бы подсказал на возможность/невозможность такого варианта события в данном компилере...
Если ТС выложит main.h ... то, как вариант, попробовать собрать в другом компиляторе... и посмотреть, что получится...
|
|
|
|
12.06.2012, 16:40
|
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Ну дак ясен перец то.
Если есть проблемы с переходом между страницами у компилятора, значит, надо самому, вручную указывать номер страницы в регистре-защелке PCLATH перед командой перехода. Аппаратно так и реализуется. Потому что разрядность памяти программ - 14 бит, старшие 3 бита определяют команду перехода (101 и 100), а биты от 0 до 10 - содержат именно адрес для перехода. Как раз в пределах одной страницы.
А вот в стек помещается все 13 бит адреса.
|
|
|
|
12.06.2012, 16:49
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от Bumbarra
|
|
Если есть проблемы с переходом между страницами у компилятора, значит, надо самому, вручную указывать номер страницы в регистре-защелке PCLATH перед командой перехода.
|
Не... лучше уж читайте то, что на заборе написано...
|
|
|
|
12.06.2012, 16:54
|
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
А то я вижу, что ты уже прочел на заборе и советуешь потому
|
|
|
|
12.06.2012, 17:01
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Раскрой свой бред во всей красе!!! 
Вот не компилится у чела прожка... расскажи ему, куда пихать твои "чудо команды"... повесели нас...
|
|
|
|
12.06.2012, 17:11
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Вполне возможно, что включена оптимизация программы на быстродействие и поэтому delay_ms(), заменяется вставками (inline).
|
|
|
|
12.06.2012, 17:22
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
|
Цитата:
|
|
младшие 8 бит содержатся в регистре PCL, а старшие - в PCLATH.
|
В PCLATH пишутся старшие биты счетчика адреса для команд условных переходов.
Прямая запись в PCLATH не приводит к непосредственному переходу на другую страницу. При прямой записи в PCL происходит переход в пределах 256-словной страницы.
|
Цитата:
|
|
Надо бы посмотреть как осуществляется реализация SWITCH оператор в этом компиляторе, возможно он не может адресовать из одной в другую страницу.
|
Весьма возможное объяснение.
__________________
misterdi<@>i.ua
|
|
|
|
12.06.2012, 17:35
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
конечно хорошо что теория развивается тут, но вот хочется узнать всётаки сам он делает переходы, или вручную надо, или оптимизация включена и не компилит?.... main.h кину чуть позже...
|
|
|
|
12.06.2012, 17:39
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
main.h обещанный
|
|
|
|
12.06.2012, 17:40
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от miwutka
|
|
но вот хочется узнать всётаки сам он делает переходы,
|
А что тут непонятного, должен делать, но могуть быть ошибки самого компилятора, в определенной мере Вы и сами ответственны за эту ошибку.
Последний раз редактировалось nonamedov; 12.06.2012 в 17:56.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:51.
|
|