Bonjour à tous, Actuellement, je suis un projet en BTS Systeme Electronique ( ANALYSEUR DE VERRE DE LUNETTE DE SOLEIL SGA).Fonction mémorisation.
Mon projet nécessite l'utilisation d'un PIC18F452, mais comme il n'a pas une grande mémoire( seulement 32ko de mémoire), on a du faire appel à un bus I2C ,EEPROM 24LC256 qui contient 256ko de mémoire.
Mais j'ai un souci en programmation langage microcontroleur C , j'arrive pas à savoir "comment peut-on stocker des informations sur un BUS I2C?"
Si quelqu'un pourrai m'aidez a savoir comment par exemple stocker des information d'un afficheur ou autre .J'ai commencé déjà à taper le programme , j'utilise un quartz 16Mhz.
#include <p18f452.h>
#include "initxlcd.c"
#define Fosc 16E6
#define FI2C 4E3
void ack(coid) //attend ackonledge
{
while(SSAPSTATbits.R_W);
while (SSPCON2bits.ACKSTAT); // attend fin ACK esclave
}
//retourne le contenu du registre cmd dans TC74
signed char lit_i2c(unsigned char adresse, unsigned char registre)
{ signed char t;
SSPCON2bits.SEN=1; //START
while (SSPCON2bits.SEN);
SSPBUF=adresse<<1; //adresse ecriture
ack();
SSPBUF=registre; //adresse registre
ack();
SSPCON2bits.RSEN=1; //RESTART
while (SSPCON2bits.RSEN);
SSPBUF=(adresse<<1) |0b00000001; //adresse lecture
ack();
SSPCON2bits.RCEN=1; //passe ne nmode lecture d'un octet
while (SSPCON2bits.RCEN); //attend recption terminée
t=SSPBUF; //mémoire température
SSPCON2bits.ACKDT=1; //NON-ACK
SSPCON2bits.ACKEN=1;
while (SSPCON2bits.ACKEN);
SSPCON2bits.PEN=1; //STOP
while (SSPCON2bits.PEN);
return (t);
}
}
void init_i2c(void)
{ DDRCbits.RC3 = 1;
DDRCbits.RC4 =1;
SSPCON1=0b00101000;
//efface WCOL ET SSPOV, active I2C, I2C mode maitre horloge=FOSC/(4*(SSPADD+1))
SSPSTATbits.SMP=1;
SSPADD=9; // Horloge=16Mhz/4*(SPADD+1)=400Khz ; SPADD=(16Mhz/1600khz)-1;SPADD=9
-----