Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: MEMÓRIAS EEPROM I2C >>> 24C02C  (Lida 387 vezes)
tiagobarbosa94
Transistor
**
Offline Offline

Mensagens: 78


WWW
« em: Agosto 20, 2008, 23:59:38 »

BOAS, ESPERO QUE ME POSSAM AJUDAR!

EU VENHO TRABALHANDO COM A MEMÓRIA 24C02C QUE TRABALHA POR I2C, EU SEI TRABALHAR COM I2C E REPARO QUE NO DATASHEET DESTA MEMÓRIA A COMUNICAÇÃO É LIGEIRAMENTE DIFERENTE, OU SEJA, TENHO DE FAZER UMAS COISAS DIFERENTES, E PRECISAVA QUE ALGUEM QUE JA FIZESSE CODIGO EM C OU ASSEMBLY (EU PERCEBO DAS DUAS LINGUAGENS) QUE ME EXPLICASSE DE FORMA CLARA COMO EU COMUNICO COM ESTE TIPO DE MEMORIAS (EU SEI COMO SE COMUNICA EM I2C!), QUERIA SO UMA EXPLICAÇÃO BREVE, TIPO OLHA PARA ESCREVERES FAZES ISTO: DAS O START, MANDAS O ENDEREÇO PARA SELECCIONARES A MEMORIA, MANDAS O ENDERECO PARA ACESSAR A UMA POSIÇÃO DA MEMÓRIA, ETC, ESTÃO A PERCEBER O QUE PRETENDO? EU QUERO SABER COMO ESCREVO NUMA DETERMINADA POSIÇÃO E COMO LEI-O UMA DETERMINA POSIÇÃO NA MEMÓRIA.

ALGUEM ME PODE AJUDAR?

AGRADEÇO AJUDA URGENTE!
Registado

Cumprimentos, Tiago Barbosa
Visitem www.dimitri.com.sapo.pt
bettencourt
Moderador Global
Chip
*****
Offline Offline

Mensagens: 608



« Responder #1 em: Agosto 21, 2008, 22:30:04 »

atenção ao Caps Lock
Registado
tiagobarbosa94
Transistor
**
Offline Offline

Mensagens: 78


WWW
« Responder #2 em: Agosto 21, 2008, 22:46:52 »

atenção ao Caps Lock

sim eu sei descuideime peço desculpa nao era com intenção. e que eu tava a programar em assembly e vim escrever no forum e nao desliguei o caps, peço desculpa ao pessoal.

ja me disseram do caps (eu nao sabia o que significava em termos de forum) so depois de me disere, é que percebi, desculpem-me pessoal.
Registado

Cumprimentos, Tiago Barbosa
Visitem www.dimitri.com.sapo.pt
finalreport
Transistor
**
Offline Offline

Mensagens: 82



« Responder #3 em: Agosto 22, 2008, 00:16:10 »

Veja se isto o ajuda, I2C, AN1028 e AN974.

Cumprimentos Sorridente
Registado

Boas Festas
tiagobarbosa94
Transistor
**
Offline Offline

Mensagens: 78


WWW
« Responder #4 em: Agosto 22, 2008, 14:22:26 »

Veja se isto o ajuda, I2C, AN1028 e AN974.

Cumprimentos Sorridente

já é uma ajuda valente obrigado, mas outras ajudas também são bem vindas
Registado

Cumprimentos, Tiago Barbosa
Visitem www.dimitri.com.sapo.pt
sa
André Santos
Socket
**
Offline Offline

Mensagens: 112



« Responder #5 em: Agosto 22, 2008, 15:16:20 »

eu ja fiz um codigo pra gravar numa memoria que foi a 24FC512

Para gravar:
        IdleI2C();
   StartI2C();
   WriteI2C(BASE_ADDR);
   WriteI2C(ender[1]);
   WriteI2C(ender[0]);
   WriteI2C(rotacao[0]);
   WriteI2C(rotacao[1]);
   StopI2C();
   IdleI2C();

Para ler:
                         IdleI2C();
          StartI2C();
          WriteI2C(BASE_ADDR);

          WriteI2C(ender[1]);
          WriteI2C(ender[0]);

          RestartI2C();
      
          WriteI2C(BASE_ADDR+1);
      
          getsI2C(read,2);

          NotAckI2C();
          IdleI2C();
          StopI2C();
          IdleI2C();   


Este código servia pra gravar dados de um sensor na memoria depois quando era preciso ler os dados ia ao PC pela USART ler os valores de um determinado tempo de funcionamento.

edit:

Falta a configuração do I2C

OpenI2C(MASTER, SLEW_ON);//confugaracao do i2c para 400Khz
SSPADD = 9; //Fi2c=Fosc/(4*(SSPADD+1))
« Última modificação: Agosto 22, 2008, 15:21:59 por sa » Registado
tiagobarbosa94
Transistor
**
Offline Offline

Mensagens: 78


WWW
« Responder #6 em: Agosto 22, 2008, 17:17:49 »

eu ja fiz um codigo pra gravar numa memoria que foi a 24FC512

Para gravar:
        IdleI2C();
   StartI2C();
   WriteI2C(BASE_ADDR);
   WriteI2C(ender[1]);
   WriteI2C(ender[0]);
   WriteI2C(rotacao[0]);
   WriteI2C(rotacao[1]);
   StopI2C();
   IdleI2C();

Para ler:
                         IdleI2C();
          StartI2C();
          WriteI2C(BASE_ADDR);

          WriteI2C(ender[1]);
          WriteI2C(ender[0]);

          RestartI2C();
      
          WriteI2C(BASE_ADDR+1);
      
          getsI2C(read,2);

          NotAckI2C();
          IdleI2C();
          StopI2C();
          IdleI2C();   


Este código servia pra gravar dados de um sensor na memoria depois quando era preciso ler os dados ia ao PC pela USART ler os valores de um determinado tempo de funcionamento.

edit:

Falta a configuração do I2C

OpenI2C(MASTER, SLEW_ON);//confugaracao do i2c para 400Khz
SSPADD = 9; //Fi2c=Fosc/(4*(SSPADD+1))


obrigada pela ajuda esclarece-me so estes pa´rametros:

 IdleI2C(); --- verifica se 0 i2c está livre (se nao está a ser usado)
StartI2C();-- dá o start
WriteI2C(BASE_ADDR);----- escreve o byte de controlo
WriteI2C(ender[1]); --------escreve parte do endereço da memoria a acessar
WriteI2C(ender[0]);---------escreve 2º parte do endereço da memoria a acessar
WriteI2C(rotacao[0]); ------dados a ser escrito
WriteI2C(rotacao[1]);------dado a ser escrito
StopI2C();------------ stop na linha (finaliza cominucação
IdleI2C(); ---------- verifca se i2c está livre

é isto? podesme fornecer este código se faz favor? é que eu fiz o meu em assembly pela mesma forma que tu fiseste a unica diferença é que na 24c02c nao preciso de 2 byte para dizer a posição de memoria (digo eu! pelo menos foi o que percebi desta memoria),

se me poderes fornecer o teu codigo agradecia, obrigado pela ajuda!
Registado

Cumprimentos, Tiago Barbosa
Visitem www.dimitri.com.sapo.pt
sa
André Santos
Socket
**
Offline Offline

Mensagens: 112



« Responder #7 em: Agosto 22, 2008, 19:00:14 »

é isso está correcto

código esta em anexo....
apenas pus o txt para ocupar menos espaço...




* projecto.rar (3.3 Kb - transferido 124 vezes.)
Registado
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para: