S
Strallows
Guest
Bonjour
Tout d'abord, je tiens à vous féliciter pour le premier forum que vous avez ici, et si je mai je voudrais ouvrir ma présence à cette question.
Je suis tente de travailler avec le protocole I2C à partir d'un dspic30F6012a et
jusqu'ici je ne peux pas accomplir mon intension.J'ai lu l'ensemble de la section de I2C à partir de la fiche de l'dspic30F6021a et il semble si facile de mettre la I2C à travailler, que je crois que mon mystique est très facile place par vous.
Je vais essayer de donner autant d'infos de mon désordre projet.
J'ai une dspic30F6012a avec un cristal de 24MHz, un PICkit2 programmeur, et je suis en utilisant MPLAB8.20.C30 compilateur et le code que
j'utilise est l'exemple de la C30 compilateur Bibliothèques Outils linguistiques document pag 192.Je suis en train d'utiliser la logique de l'analyseur PICkit2 et
j'ai essayé avec un o-champ d'application, ainsi,
la lecture de la SDA et SCL sur les ports 36 et 37.
Mon code est comme cela à partir de C30:
Code:# define __dsPIC30F6012a__
# include <p30f6012a.h>
# include <string.h>
# include <stdio.h>/ / C30
# include <i2c.h>/ / config
_FOSC (CSW_FSCM_OFF & SH);
_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 de sortie à LED
/ / Baude taux est fixé à 100 kHz
config2 = 218;
/ / I2C pour configurer l'adresse en mode 7 bits
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);
tout (1) (_RB12 = 1;IdleI2C ();
StartI2C ();
/ / Wait till début de séquence est terminée
while (I2CCONbits.SEN);
/ / Ecrire l'adresse des esclaves et de maîtres de la transmission
MasterWriteI2C (0xe);
/ / Wait till adresse est transmise
while (I2CSTATbits.TBF);
while (I2CSTATbits.ACKSTAT);
/ / Chaîne de transmission de données
MasterputsI2C (wrptr);
StopI2C ();
/ / Wait till arrêter la séquence est terminée
while (I2CCONbits.PEN);
CloseI2C ()
)
Tout d'abord, je tiens à vous féliciter pour le premier forum que vous avez ici, et si je mai je voudrais ouvrir ma présence à cette question.
Je suis tente de travailler avec le protocole I2C à partir d'un dspic30F6012a et
jusqu'ici je ne peux pas accomplir mon intension.J'ai lu l'ensemble de la section de I2C à partir de la fiche de l'dspic30F6021a et il semble si facile de mettre la I2C à travailler, que je crois que mon mystique est très facile place par vous.
Je vais essayer de donner autant d'infos de mon désordre projet.
J'ai une dspic30F6012a avec un cristal de 24MHz, un PICkit2 programmeur, et je suis en utilisant MPLAB8.20.C30 compilateur et le code que
j'utilise est l'exemple de la C30 compilateur Bibliothèques Outils linguistiques document pag 192.Je suis en train d'utiliser la logique de l'analyseur PICkit2 et
j'ai essayé avec un o-champ d'application, ainsi,
la lecture de la SDA et SCL sur les ports 36 et 37.
Mon code est comme cela à partir de C30:
Code:# define __dsPIC30F6012a__
# include <p30f6012a.h>
# include <string.h>
# include <stdio.h>/ / C30
# include <i2c.h>/ / config
_FOSC (CSW_FSCM_OFF & SH);
_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 de sortie à LED
/ / Baude taux est fixé à 100 kHz
config2 = 218;
/ / I2C pour configurer l'adresse en mode 7 bits
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);
tout (1) (_RB12 = 1;IdleI2C ();
StartI2C ();
/ / Wait till début de séquence est terminée
while (I2CCONbits.SEN);
/ / Ecrire l'adresse des esclaves et de maîtres de la transmission
MasterWriteI2C (0xe);
/ / Wait till adresse est transmise
while (I2CSTATbits.TBF);
while (I2CSTATbits.ACKSTAT);
/ / Chaîne de transmission de données
MasterputsI2C (wrptr);
StopI2C ();
/ / Wait till arrêter la séquence est terminée
while (I2CCONbits.PEN);
CloseI2C ()
)