Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Вт июн 12, 2012 09:49:56
Пишу примитивную прогу в CCS_PCWHD компиляторе. Дописал до 25% памяти и все - пишет типа нехватка памяти и т.д. Подскажите как в программе написать чтобы пошло обращение к след странице? И потом в конце всей проги надо опять к первой возвращаться или он сам вернеться?
Вт июн 12, 2012 12:10:46
может, все-таки банки, а не страницы ???
я совсем не знаю ццс, чтобы что-то толковое советовать, но попробуйте на какой-нить объемный массив в оперативке навесить не unsigned char array[] ,а bank1 unsigned char array[]
Компилятор распоряжается "автоматически" только 0 банком, остальные нужно подключать ручками.
Вт июн 12, 2012 12:15:37
мне не переменную туда надо писать а текст программы... У меня оператор switch на всю память 2к залазит с большим вложением. Вот мне надо чтобы прога пошла в 4к область памяти. Как это сделать?
Вт июн 12, 2012 12:31:34
Память программ на банки не делится, а делится память данных.
Вт июн 12, 2012 12:32:39
Была когда-то проблема с каким-то компилятором - если файл, скажем, main.c , занимает больше какого-то размера, компиляция не происходит. Лечилось разбиением на несколько файлов.
и 2-х килобайтовый свитч... это нечто...
размер функции желательно выбирать такой, чтобы она влезала в размер экрана. Если не влазит - бить на отдельные функции.
Отладка ускоряется и ошибок меньше.
Вт июн 12, 2012 12:33:32
Хорошо, память данных. Но от этого суть проблемы не меняется ))
Вт июн 12, 2012 12:35:25
разбивал функцию по 1му кейсу. Всего 8 кейсов в свиче. ничего
Вт июн 12, 2012 12:44:00
я предложить разбить файл на несколько, что тогда ?
Вт июн 12, 2012 12:45:31
никогда не разбивал. Как это правильно сделать? Создать несколько Си файлов, подключить к проекту и компилятор потом сам откомпилит?
Вт июн 12, 2012 12:46:09
Регистр PCLATH используется для адресации требуемой страници.
Им надо переключать страница.
Вт июн 12, 2012 12:47:54
как к этому регистру обращаться из моего компилятора? RA0 RA1 в этом регистре страницы переключает. Но как это записать?
Вт июн 12, 2012 12:55:46
Текст проги
- main.txt
- Текст программы...
- (13.99 KiB) Скачиваний: 298
Вт июн 12, 2012 12:57:14
На асемблере так
BSF PCLATH,3 ; устанавливаем бит 3 в 1 выбор страницы 1 (800h-FFFh)
CALL метка ; переход на траницы 1 (800h-FFFh)
.
.
метка
.
RETURN ; назад
Вт июн 12, 2012 13:01:28
Переходы могу адресовать только 2к слов
Вт июн 12, 2012 13:16:31
я незнаю как в этом компиляторе напрямую к регистрам обратиться.... Может кто знает подскажите... В атмегах такой проблемы не встречал...((((((((
Вт июн 12, 2012 13:25:09
Посмотрел код. Ну ужас.
Попробуйте воспользоваться массивами 4 байтных слов.
Чт июн 14, 2012 00:14:52
miwutka07 писал(а):Пишу примитивную прогу в CCS_PCWHD компиляторе. Дописал до 25% памяти и все - пишет типа нехватка памяти и т.д. Подскажите как в программе написать чтобы пошло обращение к след странице? И потом в конце всей проги надо опять к первой возвращаться или он сам вернеться?
Здесь дело попахивает "палённым" компилятором, что-то вроде демо-версии или подобное.
В подобных случаях ограничен размер кода, обычно до 2К.
Нормальный компилятор всё сам должен "переключать" и вообще в ум не может прийти заниматься переключением страниц, если, конечно, это не вызвано какими-то другими соображениями.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.