Página 1 de 1

Estouro de memoria Ram no compilador C18.

MensagemEnviado: 10 Jan 2009 16:51
por HC908
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;

}

Re: Estouro de memoria Ram no compilador C18.

MensagemEnviado: 10 Jan 2009 17:00
por Rodrigo_P_A
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

Re: Estouro de memoria Ram no compilador C18.

MensagemEnviado: 10 Jan 2009 17:42
por HC908
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

Re: Estouro de memoria Ram no compilador C18.

MensagemEnviado: 10 Jan 2009 17:45
por Rodrigo_P_A
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 ?

Re: Estouro de memoria Ram no compilador C18.

MensagemEnviado: 10 Jan 2009 22:38
por HC908
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 ?

Re: Estouro de memoria Ram no compilador C18.

MensagemEnviado: 11 Jan 2009 18:41
por Rodrigo_P_A
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+

MensagemEnviado: 11 Jan 2009 21:49
por HC908
o q nao tem paginação é a memoria flash.