реклама на сайте
подробности

 
 
> #pragma bank pic16f887, проблема с памятью в мк
Mikron
сообщение Dec 21 2012, 09:08
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 1-03-10
Пользователь №: 55 731



Здравствуйте, есть проблема с программой, не хватает памяти.
Вот что пишет компилятор CC5X
Код
Error[1] C:\pic\pr2\main.c 1241 : No space for global variable 'blink_b'
(Too few RAM locations (within a specific bank or shared) are available.
#pragma rambank or bank type modifiers (bank0 ..) can be used to move
variables to another bank)
RAM : -------- -------- -------- -------- ======== ======== =======. ........
  40h: ........ ........ ........ ........ ........ ........ ........ .*******
  80h: --...--- --..---- -------- -------- ******** ******** ******** ********
  C0h: ******** ******** ******** ******** ******** ******** -------- --------
100h: -------- -------- ******** ******** ******** ******** ******** ********
140h: ******** ******** ******** ******** ******** ******** -------- --------
180h: -------- -------- ******** ******** ******** ******** ******** ********
1C0h: ******** ******** ******** ******** ******** ******** -------- --------
RAM usage: 89 bytes (23 local), 279 bytes free



Вот что если убрать немного кода
Код
Codepage 0 has 1961 word(s) :  95 %
Codepage 1 has    0 word(s) :   0 %
Codepage 2 has    0 word(s) :   0 %
Codepage 3 has    0 word(s) :   0 %
Total of 1961 code words (23 %)


Вопрос, как сделать так, что бы программа была и на других codepage, с использованием pragma rambank я так понимаю?

Спасибо за помощь(
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
xemul
сообщение Dec 21 2012, 13:41
Сообщение #2



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Mikron @ Dec 21 2012, 13:08) *
Здравствуйте, есть проблема с программой, не хватает памяти.
Вот что пишет компилятор CC5X
Код
Error[1] C:\pic\pr2\main.c 1241 : No space for global variable 'blink_b'
...
RAM usage: 89 bytes (23 local), 279 bytes free
...
Total of 1961 code words (23 %)

Вопрос, как сделать так, что бы программа была и на других codepage, с использованием pragma rambank я так понимаю?

CODE(page) и RAM(bank) в пиках непосредственно никак не пересекаются. Под программу у Вас используется только 23% наличной памяти.
В программе действительно нужны (89-23)=(64+1) байтов под глобальные переменные? (+1 - это как раз тот байт, под который не хватает памяти в bank0 _этого_ контроллера)
С глобальными переменными у компиляторов под пики проблемы - они размещаются только в bank0.

Со словом bank всё просто. Вы можете объявить глобальную или статическую локальную как
(static) bank1(2, 3, ...) int my_var;

По #pragma rambank могу только предложить почитать мануал компилятора, т.к. посредством #pragma описываются чудеса конкретного компилятора.
(скорее всего для размещения переменных в разных банках CC5X предполагает конструкцию типа
#pragma rambank 1
<переменные в bank1>
#pragma rambank 2
<переменные в bank2>
...
#pragma rambank // возвращает контроль за размещением переменных компилятору
)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01761 секунд с 7
ELECTRONIX ©2004-2016