Ajout d'une mémoire externe EEPROM 24LC256 (bus i2c) à un PIC 18F452

Ajout d'une mémoire externe EEPROM 24LC256 (bus i2c) à un PIC 18F452 - C - Programmation

Marsh Posté le 27-04-2009 à 16:41:59    

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
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

Reply

Marsh Posté le 27-04-2009 à 16:41:59   

Reply

Marsh Posté le 29-04-2009 à 13:06:10    

djkiri a écrit :

[b]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.


C'est pas très clair... De quel genre de mémoire parle-tu ? Une E2PROM, c'est pour faire du stockage (surtout si elle est reliée par I2C). Quel est le type de mémoire que tu voudrais ajouter à ton matériel ?
 
- Mémoire programme (ou 'code') ?
- Mémoire de données rapide (RAM, DRAM, SRAM ?)
- Mémoire de stockage permanent ? (FLASH, E2PROM etc.)
 
Je ne suis pas sûr que ton besoin soit correctement exprimé.
 

Citation :

Mais j'ai un souci en programmation langage microcontroleur C , j'arrive pas à savoir "comment peut-on stocker des informations sur un BUS I2C?"


C'est sûr. Un bus I2C, c'est fait pour transporter des données, pas pour les stocker...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 03-05-2009 à 17:21:57    

le genre de mémoire est un EEPROM , c'est pour stocker des informations.

Reply

Marsh Posté le 04-05-2009 à 01:06:37    

djkiri a écrit :

le genre de mémoire est un EEPROM , c'est pour stocker des informations.


Donc la mémoire sert à stocker les informations. Le bus I2C sert à véhiculer les infos vers la mémoire. (Je suppose que la lecture est de type // classique par bus d'adresse et de données...)
 
Alors quelle était la question, déjà ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed