Estouro de memoria Ram no compilador C18.

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Estouro de memoria Ram no compilador C18.

Mensagempor HC908 » 10 Jan 2009 16:51

Bom pessoal o microcontrolador q estou trabalhando o pic18f45j10 tem 1k de ram. + neste exemplo simples abaixo o compilador não deixar compilar. Abaixo o erro

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x00000204
Errors : 1

Alguem trabalha com o compilador C18 da microchip, acho q vou voltar para o CCS.kkkkk


char buffer[512];
void main(void)
{

buffer[0]=27;

}
HC908
Byte
 
Mensagens: 248
Registrado em: 26 Mar 2007 09:55

Re: Estouro de memoria Ram no compilador C18.

Mensagempor Rodrigo_P_A » 10 Jan 2009 17:00

HC908 escreveu:Bom pessoal o microcontrolador q estou trabalhando o pic18f45j10 tem 1k de ram. + neste exemplo simples abaixo o compilador não deixar compilar. Abaixo o erro

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x00000204
Errors : 1

Alguem trabalha com o compilador C18 da microchip, acho q vou voltar para o CCS.kkkkk


char buffer[512];
void main(void)
{

buffer[0]=27;

}


tive um problema parecido, vc tem que configurar o arquivo do linker:

adicionei isto no arquivo do linker:
DATABANK NAME=big_scn START=0x200 END=0x5FF PROTECTED

e para declarar a variável fiz isto:

// variáveis globais
#pragma udata big_scn
char mem_dados[1024];


e assim, funcionou, mas faz tanto tempo ... hehehe

mas lembro que funcionou.

Obs. eu estava usando um PIC18F4550, mas o compilador era o mesmo, o C18, que na minha opnião é horrível
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Estouro de memoria Ram no compilador C18.

Mensagempor HC908 » 10 Jan 2009 17:42

Opa Rodrigo fiz o q vc mandou e deu certo de primeira. obrigado. pq vc acha o C18 horrivel? pq se for ruim assim eu largo desta bomba. sempre usei o CCS. + fiz o mesmo programa com o C18 e o codigo saiu menor do q eu esperava cerca de 1k de diferença.

Rodrigo_P_A escreveu:
HC908 escreveu:Bom pessoal o microcontrolador q estou trabalhando o pic18f45j10 tem 1k de ram. + neste exemplo simples abaixo o compilador não deixar compilar. Abaixo o erro

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x00000204
Errors : 1

Alguem trabalha com o compilador C18 da microchip, acho q vou voltar para o CCS.kkkkk


char buffer[512];
void main(void)
{

buffer[0]=27;

}


tive um problema parecido, vc tem que configurar o arquivo do linker:

adicionei isto no arquivo do linker:
DATABANK NAME=big_scn START=0x200 END=0x5FF PROTECTED

e para declarar a variável fiz isto:

// variáveis globais
#pragma udata big_scn
char mem_dados[1024];


e assim, funcionou, mas faz tanto tempo ... hehehe

mas lembro que funcionou.

Obs. eu estava usando um PIC18F4550, mas o compilador era o mesmo, o C18, que na minha opnião é horrível
HC908
Byte
 
Mensagens: 248
Registrado em: 26 Mar 2007 09:55

Re: Estouro de memoria Ram no compilador C18.

Mensagempor Rodrigo_P_A » 10 Jan 2009 17:45

HC908 escreveu:Opa Rodrigo fiz o q vc mandou e deu certo de primeira. obrigado. pq vc acha o C18 horrivel? pq se for ruim assim eu largo desta bomba. sempre usei o CCS. + fiz o mesmo programa com o C18 e o codigo saiu menor do q eu esperava cerca de 1k de diferença.

Rodrigo_P_A escreveu:
HC908 escreveu:Bom pessoal o microcontrolador q estou trabalhando o pic18f45j10 tem 1k de ram. + neste exemplo simples abaixo o compilador não deixar compilar. Abaixo o erro

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x00000204
Errors : 1

Alguem trabalha com o compilador C18 da microchip, acho q vou voltar para o CCS.kkkkk


char buffer[512];
void main(void)
{

buffer[0]=27;

}


tive um problema parecido, vc tem que configurar o arquivo do linker:

adicionei isto no arquivo do linker:
DATABANK NAME=big_scn START=0x200 END=0x5FF PROTECTED

e para declarar a variável fiz isto:

// variáveis globais
#pragma udata big_scn
char mem_dados[1024];


e assim, funcionou, mas faz tanto tempo ... hehehe

mas lembro que funcionou.

Obs. eu estava usando um PIC18F4550, mas o compilador era o mesmo, o C18, que na minha opnião é horrível


eu acho o CCS horrível hehe,
não cara, o C18 funciona bem, mas acho que pqp, se eu num me engano, o PIC18F num tem paginaçào, correto? ele acessa a RAM direto, sem banco? ou eu estou errado?

pra que eu tenho que definir no LINKER isso? pra que? pq ele num aloca sozinho ?
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Estouro de memoria Ram no compilador C18.

Mensagempor HC908 » 10 Jan 2009 22:38

A memoria ram da familia 18F é divididade em banco rodrigo veja um trecho do datasheet.
"The data memory in PIC18 devices is implemented as
static RAM. Each register in the data memory has a
12-bit address, allowing up to 4096 bytes of data
memory. The memory space is divided into as many as
16 banks that contain 256 bytes each; PIC18F45J10
family devices implement all 16 banks. Figure 5-6
shows the data memory organization for the
PIC18F45J10 family devices."


Rodrigo valeu pela ajuda.

Rodrigo_P_A escreveu:
HC908 escreveu:Opa Rodrigo fiz o q vc mandou e deu certo de primeira. obrigado. pq vc acha o C18 horrivel? pq se for ruim assim eu largo desta bomba. sempre usei o CCS. + fiz o mesmo programa com o C18 e o codigo saiu menor do q eu esperava cerca de 1k de diferença.

Rodrigo_P_A escreveu:
HC908 escreveu:Bom pessoal o microcontrolador q estou trabalhando o pic18f45j10 tem 1k de ram. + neste exemplo simples abaixo o compilador não deixar compilar. Abaixo o erro

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x00000204
Errors : 1

Alguem trabalha com o compilador C18 da microchip, acho q vou voltar para o CCS.kkkkk


char buffer[512];
void main(void)
{

buffer[0]=27;

}


tive um problema parecido, vc tem que configurar o arquivo do linker:

adicionei isto no arquivo do linker:
DATABANK NAME=big_scn START=0x200 END=0x5FF PROTECTED

e para declarar a variável fiz isto:

// variáveis globais
#pragma udata big_scn
char mem_dados[1024];


e assim, funcionou, mas faz tanto tempo ... hehehe

mas lembro que funcionou.

Obs. eu estava usando um PIC18F4550, mas o compilador era o mesmo, o C18, que na minha opnião é horrível


eu acho o CCS horrível hehe,
não cara, o C18 funciona bem, mas acho que pqp, se eu num me engano, o PIC18F num tem paginaçào, correto? ele acessa a RAM direto, sem banco? ou eu estou errado?

pra que eu tenho que definir no LINKER isso? pra que? pq ele num aloca sozinho ?
HC908
Byte
 
Mensagens: 248
Registrado em: 26 Mar 2007 09:55

Re: Estouro de memoria Ram no compilador C18.

Mensagempor Rodrigo_P_A » 11 Jan 2009 18:41

que isso, num foi nada, é que qdo eu vi seu post, eu lembrei de como fiquei puto tentando alocar apenas 1Kbyte usando o C18, e como eu havia "penado " pra achar a solução.

faz tempo que num uso pic hehe pra mim o PIC18 num tinha pagina, era direto mas blz, t+
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor HC908 » 11 Jan 2009 21:49

o q nao tem paginação é a memoria flash.
HC908
Byte
 
Mensagens: 248
Registrado em: 26 Mar 2007 09:55


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x