Ir ao conteúdo
  • Cadastre-se

PIC 24LC16B (blocos, como acessar)


Posts recomendados

Olá pessoal do CDH.

 

Seguinte, estou quebrando a cabeça aqui, pois preciso usar uma eeprom externa com 16Kb de espaço, bem eu uso o comando a seguir para gravar nela:

 

I2C_start(); //start barramento
I2C_Write(0xA0); //identifica disp.
I2C_Write(end);  //Endereço
I2C_Write(dado); //dado
I2C_Stop();      //stop barramento
delay_ms(5);     //atraso

A questão é que se eu uso um for com a variavel de controle sendo o end, ele chega no endereço  0xFF ou 255 e para. Sei que  preciso ir para o proximo bloco para começar gravar a partir do 0 novamente, mas não sei qual comando adicionar ali ↑↑ para mudar o bloco que preciso gravar.

 

para ler uso esse ↓↓ que tambem vai requerer algo a mais para indicar o bloco, no ds da memo só fala algo B2 B1 e B0 nao entendi.

 

I2C_Start();     //start barramento
I2C_Write(0xA0); //dentifica dispos.
I2C_Write(end);  //Endereço
I2C_Start();     //Restart
I2C_Write(0xA1); //Identifica dispositivo para leitura
lido = I2C_Read(0); //Faz a leitura do dado
I2C_Stop(); //stop barramento
delay_ms(5); //Atraso

alguem?

Link para o comentário
Compartilhar em outros sites

Ok, eu agradeço.

Caso puder me citar um exemplo ficarei grato.

 

 

vtrx eu descobri o problema. Na verdade um problema besta hehe, a variavel do laço for era int então ela incrementava somente até 255 e parava a gravação neste endereço, então eu tornei-a int16 e ele gravou até o endereço 2048 da eeprom ext.

 

Comi bronha nisso, e quebrei a cabeça, pois eu estava procurando o defeito em um local e estava em outro :(

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

De fato você precisa enviar 2 bytes de endereço

void grava(unsigned int end, unsigned char dado)
{
I2C_start(); //start barramento
I2C_Write(0xA0); //identifica disp.
I2C_Write(end>>8);  //Endereço MSB
I2C_Write(end);  //Endereço LSB
I2C_Write(dado); //dado
I2C_Stop();      //stop barramento
delay_ms(5);     //atraso
}

//p.ex.
grava(1023,0xaa);

Este é 01 das falhas deste compilador não padrão..

3 horas atrás, rodrigocirilo disse:

a variavel do laço for era int então ela incrementava somente até 255

no meu tempo int em c era 16 bits ... char era 8

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!