Utilisation de l'I2C sur des PIC série 16F

Base de données sur les questions les plus courantes / Savoir définir une résistance avant des Led / Utilitaires de calcul et schéma automatique.
orpheedulogis
Rang "1 LEDs"
Rang "1 LEDs"
Messages : 30
Enregistré le : 13 déc. 2010, 01:37

Re: Utilisation de l'I2C sur des PIC série 16F

Message non lu par orpheedulogis » 15 déc. 2010, 22:31

C'est bon, j'ai trouvé :)

Pour ceux que ça pourrait intéresser, sous Mikrobasic, voici un exemple de programme "slave" pour PIC16F690. ici il s'occupe de renvoyer la donnée qu'on lui a envoyée incrémentée de 1
program slave
'SDA=RB4
'SCL=RB6

symbol LedCtrl = PORTC.6

' Declarations section
const AdressePic16F690=%11110000 'adresse I2C (7 bits + RW)

dim x1,y1,DonneeAEnvoyer,AdresseRecue,DonneeRecue as byte
dim RxBuffer,xI2c as byte
dim FlagTransferer as boolean


'------------------------------------------------------------

sub procedure interrupt

if PIR1.SSPIF = 1 then ' flag I2C
PIR1.SSPIF = 0
if SSPCON.SSPOV=1 then
SSPCON.SSPOV=0
else
xI2c=SSPSTAT and %00101101 'on ne conserve que les bits DA S RW BF
select case xI2c

case %00001001 ' Mode écriture - Adresse recue
AdresseRecue=SSPBUF

case %00101001
DonneeRecue=SSPBUF ' Mode écriture - Donnee recue

case %00001100 ' Mode lecture
SSPCON.CKP =0 ' met Scl bas pour interdire d'autres opérations
SSPBUF = DonneeAEnvoyer ' charger le buffer avec la donnée à transmettre
SSPCON.CKP =1 ' relâche Scl pour autoriser les transferts

end select
end if
xI2c=SSPBUF ' vide le buffer
end if

end sub

'------------------------------------------------------------

main:
' Main program
'désactivation analogique
ADCON0 = 0
ADCON1 = 0
ANSEL = 0
ANSELH = 0
'désactivation interrupt on change
IOCB = 0
'pas de pull up sur le port B
WPUB=0

'configuration des ports
PORTA=0
TRISA=0
PORTB=0
TRISB=%01010000
PORTC=%00000011
TRISC=0

'configuration module SSP (I2C slave)
SSPSTAT=0
SSPBUF.BF=0
SSPCON.SSPOV=0
SSPCON = %00000110 ' mode 7 bits slave sans interruption START / STOP
SSPCON.CKP=1 'bit qui permet d'occuper l'I2C (interdire d'autres transferts)
SSPADD=AdressePic16F690 '<<1 'transfert de l'adresse I2C (bit0=1 si read, 0 si write)
SSPCON.SSPEN = 1 ' activation module SSP

'départ d'autorisation interruption
PIR1.SSPIF=0
PIE1.SSPIE=1 'autorise interruptions
INTCON.PEIE=1 'autorise tout type d'interruptions
INTCON.GIE=1 'autorise interruptions globales

while true
DonneeAEnvoyer=DonneeRecue+1
wend

end.

Re: Utilisation de l'I2C sur des PIC série 16F

Publicité

Publicité
 

Termi87
Administrateur
Administrateur
Messages : 3628
Enregistré le : 09 juil. 2006, 21:20
Localisation : Limousin

Re: Utilisation de l'I2C sur des PIC série 16F

Message non lu par Termi87 » 16 déc. 2010, 20:13

C'est quoi comme type de langage ? C ? Assembleur ? ... ou tout simplement du Basic en faite (puisque c'est écrit :mrgreen: )

orpheedulogis
Rang "1 LEDs"
Rang "1 LEDs"
Messages : 30
Enregistré le : 13 déc. 2010, 01:37

Re: Utilisation de l'I2C sur des PIC série 16F

Message non lu par orpheedulogis » 17 déc. 2010, 13:41

Juste un truc termi87 : aujourd'hui les langages se ressemblent énormément et il ne faut pas beaucoup de temps pour convertir ça sous MikroC ou MikroPascal ;)

Termi87
Administrateur
Administrateur
Messages : 3628
Enregistré le : 09 juil. 2006, 21:20
Localisation : Limousin

Re: Utilisation de l'I2C sur des PIC série 16F

Message non lu par Termi87 » 17 déc. 2010, 18:36

Je te crois :), pour moi, aucune langage ne se ressemble vu mon niveau :p !

Répondre