Как в PIC 16f877 переключать страницы памяти?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

Пишу примитивную прогу в CCS_PCWHD компиляторе. Дописал до 25% памяти и все - пишет типа нехватка памяти и т.д. Подскажите как в программе написать чтобы пошло обращение к след странице? И потом в конце всей проги надо опять к первой возвращаться или он сам вернеться?
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение urry »

может, все-таки банки, а не страницы ??? :)
я совсем не знаю ццс, чтобы что-то толковое советовать, но попробуйте на какой-нить объемный массив в оперативке навесить не unsigned char array[] ,а bank1 unsigned char array[]
Компилятор распоряжается "автоматически" только 0 банком, остальные нужно подключать ручками.
Реклама
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

мне не переменную туда надо писать а текст программы... У меня оператор switch на всю память 2к залазит с большим вложением. Вот мне надо чтобы прога пошла в 4к область памяти. Как это сделать?
Korneus
Встал на лапы
Сообщения: 81
Зарегистрирован: Пн мар 29, 2010 21:34:12

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение Korneus »

Память программ на банки не делится, а делится память данных.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение urry »

Была когда-то проблема с каким-то компилятором - если файл, скажем, main.c , занимает больше какого-то размера, компиляция не происходит. Лечилось разбиением на несколько файлов.
и 2-х килобайтовый свитч... это нечто...
размер функции желательно выбирать такой, чтобы она влезала в размер экрана. Если не влазит - бить на отдельные функции.
Отладка ускоряется и ошибок меньше.
Реклама
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

Хорошо, память данных. Но от этого суть проблемы не меняется ))
Реклама
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

разбивал функцию по 1му кейсу. Всего 8 кейсов в свиче. ничего
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение urry »

я предложить разбить файл на несколько, что тогда ?
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

никогда не разбивал. Как это правильно сделать? Создать несколько Си файлов, подключить к проекту и компилятор потом сам откомпилит?
Korneus
Встал на лапы
Сообщения: 81
Зарегистрирован: Пн мар 29, 2010 21:34:12

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение Korneus »

Регистр PCLATH используется для адресации требуемой страници.
Им надо переключать страница.
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

как к этому регистру обращаться из моего компилятора? RA0 RA1 в этом регистре страницы переключает. Но как это записать?
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

Текст проги
main.txt
Текст программы...
(13.99 КБ) 363 скачивания
Korneus
Встал на лапы
Сообщения: 81
Зарегистрирован: Пн мар 29, 2010 21:34:12

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение Korneus »

На асемблере так
BSF PCLATH,3 ; устанавливаем бит 3 в 1 выбор страницы 1 (800h-FFFh)
CALL метка ; переход на траницы 1 (800h-FFFh)
.
.
метка
.
RETURN ; назад
Korneus
Встал на лапы
Сообщения: 81
Зарегистрирован: Пн мар 29, 2010 21:34:12

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение Korneus »

Переходы могу адресовать только 2к слов
miwutka07
Открыл глаза
Сообщения: 60
Зарегистрирован: Вт авг 24, 2010 17:07:25

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение miwutka07 »

я незнаю как в этом компиляторе напрямую к регистрам обратиться.... Может кто знает подскажите... В атмегах такой проблемы не встречал...((((((((
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение urry »

Посмотрел код. Ну ужас.
Попробуйте воспользоваться массивами 4 байтных слов.
Аватара пользователя
бгкот
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Пт фев 20, 2009 21:45:04
Откуда: Болгария
Контактная информация:

Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение бгкот »

miwutka07 писал(а):Пишу примитивную прогу в CCS_PCWHD компиляторе. Дописал до 25% памяти и все - пишет типа нехватка памяти и т.д. Подскажите как в программе написать чтобы пошло обращение к след странице? И потом в конце всей проги надо опять к первой возвращаться или он сам вернеться?
Здесь дело попахивает "палённым" компилятором, что-то вроде демо-версии или подобное.
В подобных случаях ограничен размер кода, обычно до 2К.
Нормальный компилятор всё сам должен "переключать" и вообще в ум не может прийти заниматься переключением страниц, если, конечно, это не вызвано какими-то другими соображениями.
©"Good indian is dead one!"
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»