Bonjour tout le monde,
Je suis nouveau sur ce site, je suis actuellement en fin d'étude et doit réaliser un projet qui au final devra controler trois moteurs qui composeront une imprimante de PCB.
Mais là je suis encore au début du projet et je bloque sur la liaison i2c entre les pic. J'ai fais 2 codes (master et slave) qui devrait en fait envoyer un octet et en fonction de cet octet le slave réagit ici fait clignoter une led.
Est ce que quelqu'un peut jeter un coup à mon code et me dire si il y voit une faute flagrante.
Merci d'avance.
MASTER
/*
* File: main.c
* Author: Administrateur
*
* Created on 24 octobre 2015, 17:23
*/
#include "p18f4550.h"
#include "i2c.h"
#include <xc.h>
#include <p18cxxx.h>
#define NODE_ADDR 0x20
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
void initialisation(void)
{
//configuration horloge interne du pic à 32 MHz
OSCCON = 0x70; //pas de prédiviseur => 8MHz
//OSCTUNE = 0x40; //
//désactiver le convertisseur analogique numerique
ADCON1=0x0F;
//désactiver le module CCP
CCP1CON=0;
SSPSTAT=0b00000000;
SSPCON1=0x28;
SSPCON2=0x00;
SSPADD=0x02;
//direction des ports 0=Output, 1= Input
TRISBbits.TRISB0=0; //SDA
TRISBbits.TRISB1=0; //SCL
}
void main(void) {
initialisation();
i2c_Start();
i2c_Address(NODE_ADDR,0);
if (SSPCON2 && 0b01000000){ // test pour voir s'il y a un ACK
i2c_Restart();
i2c_Write (0b11111111);
}
i2c_Address(NODE_ADDR,1);
void i2c_Stop();
return;
}
-----