Précédent   Forum FS Generation > Futura-Techno : les forums de l'informatique et des technologies > Électronique
Mot de passe oublié ? Inscrivez-vous !


Réponse
 
Outils de la discussion Modes d'affichage
Vieux 31/05/2007, 18h07   #1
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
reception 2 octets en I2C

bonjour à tous,
voilà, je communique entre mes 2 PIC16F876a via l'i2c, j'arrive à envoyer un octet, mais le soucis c'est que maintenant je dois en envoyer 2 d'un coups!
et je vois pas comment faire au niveau de la reception...si vous pouviez me donner un coup de main...ça serai gentil,
voici mon prog(en gros...) pour la réception d'un octet via interruption:

bsf STATUS,RP0 ; sélectionner banque1
btfss PIE1,SSPIE ; tester si interrupt autorisée
goto restorereg ; et fin d'interrupt
bcf STATUS,RP0 ; oui, sélectionner banque0
btfss PIR1,SSPIF ; oui, tester si interrupt en cours
goto restorereg ; et fin d'interrupt
call intI2C ; oui, traiter interrupt
bcf PIR1,SSPIF ; effacer flag interupt
goto restorereg ; et fin d'interrupt

intI2C
movf SSPBUF,w ; charger octet reçu
btfss SSPSTAT,D_A ; tester si octet de donnée
return ; non, retour
movwf data_i2c ; oui, le charger dans variable data_i2c
bsf flag,0 ; mettrele flag à 1
bsf PORTB,7 ; allumer LED pour indiquer réception OK
return ; retour


merci à tous et bonne fin de journée
noisyboxes est déconnecté   Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

   
Vieux 31/05/2007, 21h38   #2
 
Date d'inscription: juillet 2004
Messages: 813
Re : reception 2 octets en I2C

Salut,

La 3ème ligne de ton code pose problème car un fois tu es en BANK1 et une autre tu es en BANK0, ce qui inévitablement cause un sérieux bug dans ton programme...

David.
DavidDB est déconnecté   Réponse avec citation
Vieux 01/06/2007, 09h00   #3
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

ok, merci, je vais corriger ça, pourtant ça marche nikel pour un octet...
et pour deux, vous avez pas d'idées du comment faut faire??
au niveau du maître je dois envoyer un repeat start et mon deuxième octet, mais au niveau de l'esclave...comment je le receptionne???....
noisyboxes est déconnecté   Réponse avec citation
Vieux 01/06/2007, 09h21   #4
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

j'ai modifié, et ça marche plus...et j'ai vérifié, je uis bien dans les bonnes bank,
PIE1 est en banque1 et PIr1 en banque 0, donc c'est normal que je change de banque!
noisyboxes est déconnecté   Réponse avec citation
Vieux 01/06/2007, 14h55   #5
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

personne n'a d'idée pour la réception de deux octets???
et même l'emmission (je suis pas sur qu'il faille juste envoyer un repeat start puis la donnée).
noisyboxes est déconnecté   Réponse avec citation
Vieux 01/06/2007, 17h42   #6
 
Date d'inscription: juillet 2004
Messages: 813
Re : reception 2 octets en I2C

Salut,

C'est le "restorreg" qui pose problème!!!!

Tu as au minimum une erreur de BANK et de ce fait, il est probable que la réception du première octet fonctionne correctement avant plantage de ton programme...

David.
DavidDB est déconnecté   Réponse avec citation
Vieux 01/06/2007, 19h27   #7
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

salut David,
je ne vois vraiment pas ou tu vois un problème, enfin je ne comprends pas.
Si tu sais qu'il y a une erreur est-ce que tu peux être plus explicite, parce que la je ne comprends pas vraiment.
Je teste si le bit SSPIE est à 1 (registre PIE1 en banque1)
si non , fin d'interruption et donc le restorereg,
et si oui je vais tester le bit SSPIF, mais comme il est en banque 0 je passe d'abord en banque 0 ...
donc je ne vois vraiment pas, mais si tu es sur de toi, eclaire moi STP
bonne soirée
noisyboxes est déconnecté   Réponse avec citation
Vieux 01/06/2007, 19h53   #8
 
Date d'inscription: juillet 2004
Messages: 813
Re : reception 2 octets en I2C

Dans le premier restorreg, tu sorts de la routine sans repasser en BANK0...

bsf STATUS,RP0 ; sélectionner banque1
btfss PIE1,SSPIE ; tester si interrupt autorisée
goto restorereg ; et fin d'interrupt

Je ne peux pas être plus clair que celà...

David.
DavidDB est déconnecté   Réponse avec citation
Vieux 04/06/2007, 09h14   #9
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

bonjour,
et merci david, je vais modifier ça ce matin!
et pour la réception de deux octets, personne n'a de solutions???
noisyboxes est déconnecté   Réponse avec citation
Vieux 04/06/2007, 14h51   #10
 
Date d'inscription: juillet 2004
Messages: 813
Re : reception 2 octets en I2C

Salut,

Modifie cette partie du code, et cela devrait fonctionner, car le reste de la routine semble correct.

Si cela ne fonctionne pas, place ton code sur le forum.

David.
DavidDB est déconnecté   Réponse avec citation
Vieux 04/06/2007, 16h58   #11
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

j'ai changé la partie du prog, ça a l'air de marcher.
mais je ne sais toujours pas comment faire pour recevoir mon deuxième octet?
quel bit il faut tester dans l'interruption?? parceque je ne peut pas en sortir, sinon je vais écraser le premier...bref, si quelqu'un sait comment on fait...
vous avez bien deja utilisé l'I2C quand même....
noisyboxes est déconnecté   Réponse avec citation
Vieux 04/06/2007, 17h21   #12
 
Date d'inscription: juillet 2004
Messages: 813
Re : reception 2 octets en I2C

Au lieu de placer SPBUFF dans "data_i2c" range les données dans un buffer circulaire soft.
Ensuite, tu disposes de tes données et tu peux les manipuler comme tu l'entends...

David.
DavidDB est déconnecté   Réponse avec citation
Vieux 04/06/2007, 18h06   #13
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

ouais c'est une idée, mais je sais pas trop faire ce genre de truc, j'avais deja essayé pour une autre appli, sans grand succées!
et pour juste deux octets je vois pas trop l'intéret d'utiliser un buffer...mais je me trompe surement...
par contre ça me dit toujours pas comment recevoir cet octet....
en tout cas merci quand même de ton aide, mon prog à l'air de mieu marcher pour un octet deja!!!!
noisyboxes est déconnecté   Réponse avec citation
Vieux 04/06/2007, 18h15   #14
 
Date d'inscription: juillet 2004
Messages: 813
Re : reception 2 octets en I2C

Bon,

Si je te donne un exemple pour recevoir deux octets, le premier dans data_i2c et le deuxième dans data_i2c+1, cela te suffirait-il pour exploiter les données ?

David.
DavidDB est déconnecté   Réponse avec citation
Vieux 04/06/2007, 18h57   #15
 
Date d'inscription: juillet 2004
Messages: 813
Re : reception 2 octets en I2C

Allez, un bout de code pour te dépanner...

A mettre à la place de "IntI2C"

Code:
	flags	       res .1		; flag divers
	    data_i2c	res .2

#define	FlagDon	       flags, 0		       ; deuxième donnée à réceptionner ?
#define	FlagTrait	flags, 1		; traiter les deux octets

intI2C	btfss	SSPSTAT,D_A 	     ; tester si octet de donnée
	return 			              ; non, retour
	movf	SSPBUF, w		; charger donnée dans registre de travail
	btfss	FlagDon		           ; réception du deuxième octet ?
	goto	PremDon		          ; non, alors ranger dans data_i2c
	movwf	data_i2c + 1	        ; oui, alors ranger dans data_i2c + 1
	bsf	FlagTrait		     ; indiquer qu'il faut traiter les données
	bcf	FlagDon		            ; replacer pour prochaine réception
	return			               ; retour
	
PremDon	movwf	data_i2c		; première octet, placer dans data_i2c
	bsf	FlagDon	                      ; indiquer que le première octet est reçu
	return			                 ; et retour
	
	; dans la boucle principale, traiter les deux données si FlagTrait est à un
	; une fois les données traitées, effacer FlagTrait
David.
DavidDB est déconnecté   Réponse avec citation
Vieux 05/06/2007, 09h43   #16
 
Date d'inscription: mars 2007
Âge: 23
Messages: 58
Re : reception 2 octets en I2C

bonjour,
merci beaucoup david, je vais essayé ça aujourd'hui, si jamais j'ai des soucis je viendrai te faire signe...
en esperant que ça marche!
noisyboxes est déconnecté   Réponse avec citation






Réponse

Tags
reception, octets, i2c

Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
octets amirine Logiciel - Software - Open Source 6 21/11/2007 15h25
envoyer des octets sur RC6/TX avec logipic ? chawkiz Électronique 2 23/06/2007 18h18
Octets envoyés ?! freesbeep Internet - Réseau - Sécurité générale 155 25/01/2007 22h25
bits et octets frgo84 Internet - Réseau - Sécurité générale 5 04/12/2005 20h56
imagerie médicale : pixels/ octets/ couleurs... vero0oo Logiciel - Software - Open Source 4 09/03/2005 23h55


Les dernières actualités
14/10 09:31 - Le rover Mars Science Laboratory s'envolera bien en 2009
13/10 17:59 - En bref : les Garriott, astronautes de père en fils
13/10 17:31 - Le Soleil n'est pas rond, la faute à son champ magnétique
13/10 16:53 - En bref : Open Office 3.0 est sorti
13/10 15:36 - Climatiseur solaire : la plus grande installation européenne en Allemagne
13/10 13:33 - Le premier réseau informatique géant avec cryptage quantique
13/10 11:35 - Peut-on déceler en radio les immenses cordes cosmiques ?

Fuseau horaire GMT +2. Il est actuellement 11h16.


Édité par : vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. Tous droits réservés.