Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

pic 18f4550 i2c

Envoyé par coulox 
pic 18f4550 i2c
lundi 28 avril 2008 14:21:31
bonjour tous le monde

je souhaite communiquer en i2c avec mon pic . Mais a la sortie lorsque je regarde ma clock je vois un signal +5v.j ai mit des résistance de pull up de 4.7k.
J'utilise un PIC 18f4550, MPLAB v8, un programmateur ICD 2 et la librairie i2c.h.


je voudrai savoir si mon initialisation est correcte pour le pic 18f4550 ...



Code:

void UserInit(void)
{
byte i;

//Input/output pins
tris_CS = 1; //Input, not used for I2C
TRISBbits.TRISB0 = 1; //SDA
TRISBbits.TRISB1 = 1; //SCL

//Setup I2C registers
I2C_xfer_done = FALSE;
SSPADD = 0xC0; //I2C address of this micro
PIE1bits.SSPIE = 0; //Turn off I2C/SPI interrupt
PIR1bits.SSPIF = 0; //Clear any pending interrupt
OpenI2C(SLAVE_7,SLEW_ON);
PIE1bits.SSPIE = 1; //Turn on I2C interrupt

//-------------------------
// initialize variables
//-------------------------
for (i=0; i<BUF_SIZE; i++) // initialize input and output buffer to 0
{
inbuffer=0;
outbuffer=0;
}
TimerCounter = 0xF0; //Initial value to start

//Timer 0
TMR0H = 0; //clear timer
TMR0L = 0; //clear timer
T0CONbits.PSA = 0; //Assign prescaler to Timer 0
T0CONbits.T0PS2 = 1; //Setup prescaler
T0CONbits.T0PS1 = 1; //Will time out every 51 us based on
T0CONbits.T0PS0 = 1; //20 MHz Fosc
T0CONbits.T0CS = 0; //Increment on instuction cycle

//Enable I2C interrupts
INTCONbits.PEIE = 1; //Turn on peripheral interrupts
INTCONbits.GIE = 1; //Turn on global interrupts




la fonction processio est appelé en boucle dans le Main
Code:

void ProcessIO(void)
{
StartI2C();
WriteI2C(0xA0);

WriteI2C(0xF0);
StopI2C();

}



merci a vous .

Re: pic 18f4550 i2c
mardi 29 avril 2008 13:23:36
Salut,

A priori c'est correct, la document de microchip ne présice que d'utiliser la fonction OpenI2C pour configurer le system

Es-tu sur que ton maitre est bien configuré?

A++

Benjamin
Re: pic 18f4550 i2c
mardi 29 avril 2008 13:54:04
comment ça bien configuré?
je ne comprend pas ta question..
le openi2c ne le configure pas ??
Re: pic 18f4550 i2c
mardi 29 avril 2008 18:04:37
Salut,

Ici ta puce est configurée comme Esclave. Sauf si je ne me trompe, dans une communication I²C tu as un maitre et plusieurs esclave... Est-ce que de l'autre côté de la ligne tu as un Maitre bien configuré dont tu es sur du fonctionnement?

Benjamin
Re: pic 18f4550 i2c
mercredi 30 avril 2008 06:42:00
heuu je veu faire un maitre et j ai déja un esclave configuré avec tous ces protocole (je pilote une machine avec des moteurs).
Re: pic 18f4550 i2c
mercredi 30 avril 2008 08:02:19
Ah ben si tu veux faire un maitre je pense qu'il est mieux pour toi de mettre ici :
OpenI2C(MASTER,SLEW_ON);


Je pense que ça resolvera ton probleme

A++

Benjamin
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter