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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Обращение к верхнему 1кб ОЗУ pic18f2550. Как?
Roman_V
сообщение Mar 31 2008, 12:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854



Привет! Забил 1 кб ОЗУ, теперь Hitech PICC ругается что нету ОЗУ. Но у ПИКа есть еще 1 кб. Как к нему обратиться из C? USB модуль отключен, в даташите сказано что это ОЗУ мне доступно. На асме не пробовал, но через регистр выбора банка вроде все понятно. А как быть с С? Ведь там просто описываешь массив и все. Си сам заботится о выборе банков. Спасибо за помощь!
Go to the top of the page
 
+Quote Post
dac
сообщение Apr 1 2008, 05:37
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



а чем "верхнее" озу отличается от обычного?
хотя вообще зависит от длины массива и т.д. т.е. область памяти должна быть непрерывно, для обычных переменных - если пытаешься запихать в быстрый доступ - квалификатор near, но ее не много. в общем напиши что именно говорит компилятор
Go to the top of the page
 
+Quote Post
Roman_V
сообщение Apr 1 2008, 05:46
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854



глобально описаны
char buf1[140],buf2[85];
char m_buffer[512];
ну и конечно остальные переменные. Компилятор выдает:

Error[000] : Can't find 0x32 words for psect param in segment RAM
Error[000] : Can't find 0xC words (0xC withtotal) for psect bss in segment RAM

Если делаю размер m_buffer меньшим, то все прокатывает. Просто создаю в HT-PICC18 проект пустой. #include <pic18.h>
#include <pic18f4550.h>

unsigned char i[1024];

void main(void)
{
int y;
for(y=0;y<1023;y++)
i[y]=9;
}

Так все работает. 1 кб памяти использую. Но если я сделаю размер i 1025, то ошибка:
Error[000] : Can't find 0x401 words for psect bigbss in segment BIGRAM

В связи с этим вопрос. как мне долезть до другого 1 кб? Именно на Си. В асме это делается регистром BSR, а тут то как то Си рулит без регистров.
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Apr 1 2008, 06:46
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



Цитата(Roman_V @ Apr 1 2008, 08:46) *
В связи с этим вопрос. как мне долезть до другого 1 кб?

разбить исходник на модули
Go to the top of the page
 
+Quote Post
Roman_V
сообщение Apr 1 2008, 08:26
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854



никогда не подключал. Сейчас попробовал и не получилось. тоже самое пишет... Можно примерчик?
Go to the top of the page
 
+Quote Post
dac
сообщение Apr 2 2008, 15:03
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



для пик18ф4523

объявлены два массива по 700 байт, + мелочь
Data space:
RAM used 7h ( 7) of 600h bytes ( 0.5%)
BIGRAM used 5A2h ( 1442) of 600h bytes ( 93.9%)
COMRAM used 42h ( 66) of 80h bytes ( 51.6%)
NVRAM used 0h ( 0) of 100h bytes ( 0.0%)

делаю чуть больше, не комплит с той же ошибкой. ситуация похожа, осюда выводы:
судя по отчету область памяти под массивы BIGRAM полностью заполнена, но осталось еще столько же в области RAM.
либо надо увеличить область BIGRAM либо положить массив в RAM. дальше вопросы мануалу. я с этим не сталкивался

сорри, ошибся, у меня всего 1,5кБ памяти, поэтому все работает smile.gif
возможно проблема с компилятором. у меня 9,50пл3. в старых (и новых которые 9.60про) на эту тему были ошибки
Go to the top of the page
 
+Quote Post
Roman_V
сообщение Apr 3 2008, 15:03
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854



Ну у меня все еще 8.35PL3 стоит. Искал сейчас и нигде не найду откуда скачать 9.50. Поможете? И еще можно пример кода описания массива и обращения к нему. Может что не так делаю?
Например так могу?
char a[1023];
char b[512];

void main(void)
{
a[1023]=10;
b[510]=2;
}
Go to the top of the page
 
+Quote Post
dac
сообщение Apr 3 2008, 15:40
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(Roman_V @ Apr 3 2008, 19:03) *
Ну у меня все еще 8.35PL3 стоит. Искал сейчас и нигде не найду откуда скачать 9.50. Поможете?

в нем как раз этот глюк присутствует, натыкался в свое время
скачать можно здесь если есть доступ в свои
либо гугль. в принципе могу почтой отправить

Цитата(Roman_V @ Apr 3 2008, 19:03) *
И еще можно пример кода описания массива и обращения к нему. Может что не так делаю?
Например так могу?
char a[1023];
char b[512];

void main(void)
{
a[1023]=10;
b[510]=2;
}

в общем то неправильно, последний элемент массива будет а[1022] так как нумерация с нуля начинается, а так вы залазите в левую область памяти и какую переменную при этом испортите в реальном проекте большой вопрос. но компилятору пофиг, он это съест.
Go to the top of the page
 
+Quote Post
Roman_V
сообщение Apr 4 2008, 06:22
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854



что то я замучался с этой фигней. прочитал об моей проблеме. рекомендуют разбивать прогу на модули. вот разбил. посмотрите плиз правильно или нет. Но все равно та же ошибка. MPlab 7.20. В проекте 2 файла: "temp5.c" и "p1.c". компилю- Can't find 0x6BC words for psect bigbss in segment BIGRAM
Мне надо иметь два массива по 512 байт, 140 байт и 85 байт. Остальное это переменные всякие, но объемом не больше памяти. По поводу версии компилятора разные слухи. кто-то говорит что 9.50 хуже и старые проги будут не компиляться, кто-то наоборот. фиг знает. Мне бы отлаженый пример программки на основе моего примера с описанием ныжных мне массивов. Было бы здорово!
P.S. уже правда для текущего проекта обошелся меньшей памятью, т.к. оптимизировал, но для будущего надо с FAT работать, а там бы иметь 2 массива по 512 байт неплохо. Спасибо!
Прикрепленные файлы
Прикрепленный файл  temp5.rar ( 510 байт ) Кол-во скачиваний: 28
 
Go to the top of the page
 
+Quote Post
Ilya_A
сообщение Apr 4 2008, 07:45
Сообщение #10


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

Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630



Цитата(Roman_V @ Apr 4 2008, 14:22) *
что то я замучался с этой фигней. прочитал об моей проблеме. рекомендуют разбивать прогу на модули. вот разбил. посмотрите плиз правильно или нет. Но все равно та же ошибка. MPlab 7.20. В проекте 2 файла: "temp5.c" и "p1.c". компилю- Can't find 0x6BC words for psect bigbss in segment BIGRAM
Мне надо иметь два массива по 512 байт, 140 байт и 85 байт. Остальное это переменные всякие, но объемом не больше памяти. По поводу версии компилятора разные слухи. кто-то говорит что 9.50 хуже и старые проги будут не компиляться, кто-то наоборот. фиг знает. Мне бы отлаженый пример программки на основе моего примера с описанием ныжных мне массивов. Было бы здорово!
P.S. уже правда для текущего проекта обошелся меньшей памятью, т.к. оптимизировал, но для будущего надо с FAT работать, а там бы иметь 2 массива по 512 байт неплохо. Спасибо!


Нужно сделать так:

Бъем прогу на 3 модуля:

temp5.c :
Код
#include <pic18.h>
//#include <pic18f4550.h>  <<--- это совсем ненужно

void MyProc(void);

unsigned char i[700];
extern char m1[512],m2[512]; //прописываем внешние массивы

void main(void){
  int y;
  for(y=0;y<700;y++)
  i[y]=9;
  MyProc();
}

void MyProc(void){
  int i;
  for(i=0;i<512;i++){
    m1[i]=2;
    m2[i]=3;
  }
  return;
}


И еще 2 файла:

file1.c :
Код
char m1[512];
void func1(void){} // Необходимо объявить хотябы одну фиктивную функию


file2.c :
Код
char m2[512];
void func2(void){} // Необходимо объявить хотябы одну фиктивную функию


Так должно работать! wink.gif


Вот прочитайте:

http://www.htsoft.com/support/faq.html#faq97
Go to the top of the page
 
+Quote Post
Галстук
сообщение Apr 4 2008, 08:01
Сообщение #11


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

Группа: Свой
Сообщений: 112
Регистрация: 5-12-05
Из: Москва, Россия
Пользователь №: 11 818



Цитата(Илья @ Apr 4 2008, 11:45) *

Спасибо за ссылку. Действительно, надо хоть иногда читать документацию.

Вот там еще пишут:

Non-near variables that are not placed into the bss or data psects
are placed in the bigbss and bigdata psects.

Значит ли это, что если объявить переменную far, то можно уже не заботиться о длинах массивов и разбиении на модули, потому что линкер будет ее совать в какой-то bigbss (или bigdata)?
Go to the top of the page
 
+Quote Post
Ilya_A
сообщение Apr 4 2008, 09:46
Сообщение #12


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

Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630



Цитата(Галстук @ Apr 4 2008, 16:01) *
Значит ли это, что если объявить переменную far, то можно уже не заботиться о длинах массивов и разбиении на модули, потому что линкер будет ее совать в какой-то bigbss (или bigdata)?


Проверять надо...

Кстати сейчас специально открыл проект, в котором, в свое время сталкивался с такой проблемой, вернул все объявления в один файл. и компилятор не сругался!!! 07.gif Все откомпилировалось нормально....

P.S. пробывал на PICC18 9.50 PL3
Go to the top of the page
 
+Quote Post
Roman_V
сообщение Apr 4 2008, 09:55
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854



Спасибо за подробности! Но я попробовал и не работает:
Error[000] : Can't find 0x6BC words for psect bigbss in segment BIGRAM
BUILD FAILED: Fri Apr 04 13:56:02 2008

Файлы сделал как вы мне дали. Включил их в проект MPLab как Source Files.
Может и правда от версии HT-PICC зависит. у меня 8.35 PL3
Go to the top of the page
 
+Quote Post
Ilya_A
сообщение Apr 4 2008, 10:15
Сообщение #14


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

Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630



Цитата(Roman_V @ Apr 4 2008, 17:55) *
Спасибо за подробности! Но я попробовал и не работает:
Error[000] : Can't find 0x6BC words for psect bigbss in segment BIGRAM
BUILD FAILED: Fri Apr 04 13:56:02 2008

Файлы сделал как вы мне дали. Включил их в проект MPLab как Source Files.
Может и правда от версии HT-PICC зависит. у меня 8.35 PL3


странно, всегда лечил таким образом - работало без проблем.
Go to the top of the page
 
+Quote Post
Roman_V
сообщение Apr 4 2008, 10:23
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-06
Пользователь №: 21 854



там блин пароль стоит. не пускает...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:51
Рейтинг@Mail.ru


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