Dspic30F I2C non funziona

S

Strallows

Guest
Ciao

Prima di tutto vorrei congratularmi con lei per la prima classe, forum che si sono qui, e se posso vorrei iniziare con la mia presenza a questa domanda.

I m cercando di lavorare con il protocollo I2C da un dspic30F6012a e finora non posso realizzare il mio t intenzione.Ho letto l'intera sezione del I2C dalla scheda del dspic30F6021a e sembra così facile per mettere il I2C a lavorare, credo che il mio fascino è molto facile da voi posto.

Io cercherò di dare quante più informazioni del mio progetto disordinato.

Ho un dspic30F6012a con uno 24MHz cristallo, uno PICkit2 programmatore, e io sto usando MPLAB8.20.Compilatore C30 e il codice che sto utilizzando è l'esempio dal compilatore C30 Strumenti per le lingue Biblioteche documento pag 192.Sto usando la logica analizzatore dal PICkit2 e ho provato con un campo di applicazione o-bene, la lettura da SDA e SCL sulle porte 36 e 37.

Il mio codice è proprio come il C30 da questo:
Codice:# define __dsPIC30F6012a__

# include <p30f6012a.h>

# include <string.h>

# include <stdio.h>/ / C30

# include <i2c.h>/ / config

_FOSC (CSW_FSCM_OFF & SA);

_FWDT (WDT_OFF);

_FBORPOR (PBOR_OFF & MCLR_DIS);

_FBS (CODE_PROT_OFF);

_FSS (CODE_PROT_OFF);

_FGS (CODE_PROT_OFF);

_FICD (ICS_NONE);int main () (unsigned int config2, config1;

unsigned char * wrptr;

unsigned char tx_data [] =

( 'M', 'I', 'C', 'R', 'O', 'C', 'H', 'I', 'P', '\ 0');

wrptr = tx_data;TRISBbits.TRISB12 = 0; / / config uscita LED
/ / Baude aliquota è fissata per 100 kHz

config2 = 218;

/ / Configure I2C indirizzo a 7 bit per la modalità

config1 = (I2C_ON & I2C_IDLE_CON & I2C_CLK_HLD

I2C_IPMI_DIS & & I2C_7BIT_ADD

I2C_SLW_DIS & & & I2C_SM_DIS

I2C_GCALL_DIS & I2C_STR_DIS &

I2C_NACK & I2C_ACK_DIS & I2C_RCV_DIS &

I2C_STOP_DIS & I2C_RESTART_DIS

& I2C_START_DIS);

OpenI2C (config1, config2);

while (1) (_RB12 = 1;IdleI2C ();

StartI2C ();

/ / Start Attendere fino sequenza è completata

while (I2CCONbits.SEN);

/ / Write Slave impostare l'indirizzo e il master per la trasmissione

MasterWriteI2C (0xE);

/ / Attendere fino indirizzo è trasmesso

while (I2CSTATbits.TBF);

while (I2CSTATbits.ACKSTAT);

/ / Stringa di trasmissione dei dati

MasterputsI2C (wrptr);

StopI2C ();

/ / Attendere fino a fermare la sequenza è completata

while (I2CCONbits.PEN);

CloseI2C ();)

)

 

Welcome to EDABoard.com

Sponsor

Back
Top