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!