Uso modulo I"C con dsPIC30F4013


#1

Muy buenos dias a todos, en estos dias pasados he querido poder comunicar 2 microcontroladores solo para transmitir datos que dispongo en el maestro hacia el esclavo, y que el esclavo me los muestre en 8 leds que tengo conectados en el puerto B.

He usado la herramienta visual initializer para configurar el Maestro, y también el esclavo, pero no se si este quede bien configurado ya que solo modifico en la parte de I2C las pocas caracteristicas que tiene el esclavo.
Este es el codigo que tengo tanto para el maestro como para el esclavo:

;========== MASTER =====================;
.INCLUDE “P30F4013.inc”
#INCLUDE “init_dsPIC30F4013.sinit_vi.inc” ;inclusión archivo fuente I2C
;CONFIG __FWDT,WDT_OFF
;CONFIG __FOSC,CSW_FSCM_OFF & XT_PLL8

.TEXT
.GLOBAL __reset

__reset: MOV #0X0800,W15
MOV #0X08FE,W0
MOV W0,SPLIM
GOTO INICIO

;DELAY DE 1 SEG
DELAY: MOV #17,W3
TRES: MOV #200,W2
DOS: MOV #100,W1
UNO: DEC W1,W1
BRA NZ,UNO
DEC W2,W2
BRA NZ,DOS
DEC W3,W3
BRA NZ,TRES
RETURN

INICIO:
.GLOBAL _VisualInitialization ;inicialización modulo I2C

;ENVIO_PRIMER_DATO

;Primero:dirección del esclavo y bit de dirección de dato.
MOV #0X06,W0 ; Dirección: 0000_011 escritura: 0
MOV W0,I2CTRN

;segundo: envio del byte data.

MOV #0XFF,W0
MOV W0,I2CTRN
CALL DELAY

;Primero:dirección del esclavo y bit de dirección de dato.
MOV #0X06,W0 ; Dirección: 0000_011 escritura: 0
MOV W0,I2CTRN

;segundo: envio del byte data.

MOV #0XF0,W0
MOV W0,I2CTRN
CALL DELAY

;Primero:dirección del esclavo y bit de dirección de dato.
MOV #0X06,W0 ; Dirección: 0000_011 escritura: 0
MOV W0,I2CTRN

;segundo: envio del byte data.

MOV #0X0F,W0
MOV W0,I2CTRN
CALL DELAY

;Primero:dirección del esclavo y bit de dirección de dato.
MOV #0X06,W0 ; Dirección: 0000_011 escritura: 0
MOV W0,I2CTRN

;segundo: envio del byte data.

MOV #0X00,W0
MOV W0,I2CTRN
CALL DELAY
.END

;============ SLAVE ===================;

.INCLUDE “P30F4013.inc”
#INCLUDE “init_dsPIC30F4013.sinit_vi.inc” ;inclusión archivo fuente I2C
.TEXT
.GLOBAL __reset

__reset: MOV #0X0800,W15
MOV #0X08FE,W0
MOV W0,SPLIM
GOTO INICIO

;DELAY DE 1 SEG
DELAY: MOV #17,W3
TRES: MOV #200,W2
DOS: MOV #100,W1
UNO: DEC W1,W1
BRA NZ,UNO
DEC W2,W2
BRA NZ,DOS
DEC W3,W3
BRA NZ,TRES
RETURN

INICIO:
.GLOBAL _VisualInitialization

MOV I2CRCV,W0
MOV W0,PORTB

.END

La verdad tengo muchas dudas, no se si pueda tener los dos codigos fuentes en un mismo proyecto o tengo que hacer un proyecto por cada uno y configurar para cada micro un diferente modulo I2C.
Tampoco estoy seguro si el mismo modulo se encarga de los tiempos necesarios para esperar por el bit ACK o si yo debo configurar eso como tal.

espero me puedan ayudar, muchas gracias.