J'utilise le 16f88 pour une petite interface SPI, mais un probleme se pose que je ne parviens pas a resoudre. Le bit CKE (SPI Clock Edge), qu'il soit a 1 ou a 0, ca ne change absolument rien au diagram. Je veux que la donnee a transmettre soit disponible sur le front montant de l'horloge, et l'etat IDLE de la clock doit etre bas. J'ai donc CKP = 0 et CKE = 1. Mais la donnee change d'etat exactement en meme temps que le front montant de la clock, et ce quelque soit l'etat de CKE...
Franchement ca fait deux jours que je suis dessus a lire et relire le datasheet, mais pas moyen... Si l'un d'entre vous a une idee...
OK merci de la reponse, finalement j'ai trouve tout seul. Je passe l'info pour qui ca interesserait:
Erreur de debutant:
Le registre SSPSTAT est en BANK 1 et le registre SSPCON est en BANK 0. Comme ils sont expliques a la suite dans le datasheet, j'ai pas fait gaffe a ca, mais il faut bien se positionner... OUAIS!!! Youpi!!
27/06/2009 - 18h55
pont2
Date d'inscription
mai 2009
Messages
381
Re : pic 16f88 et SPI
Bonjour,
Peux-tu me passer ta ligne de configuration sur PIC16F88? J'ai un pb avec la mienne et je ne vois pas ce que c'est.
Merci
02/07/2009 - 22h37
pont2
Date d'inscription
mai 2009
Messages
381
Re : pic 16f88 et SPI
Bonjour,
Et bien merci pour la non-réponse sur la ligne de configuration du PIC16F88, heureusement qu'un autre copain sur un autre forum m'a donné la réponse.
pont
03/07/2009 - 00h22
Jack
Date d'inscription
avril 2003
Localisation
Metz
Messages
10 783
Re : pic 16f88 et SPI
Son dernier message datant de plus de 2 ans, ça ne m'étonne pas trop qu'il n'ait pas répondu
Son dernier message datant de plus de 2 ans, ça ne m'étonne pas trop qu'il n'ait pas répondu
Merci Jack de votre sollicitude, mais quel manque de constance de ce correspondant, j'espère bien que dans deux ans je serai encore là, (si un modérateur ne m'a pas jeté?) Et justement, je voulais vous demander quelque chose, mais je ne rappelle plus quoi. Et je vous suis toujours reconnaissant de m'avoir gentiment accueilli sur ce forum. Ah, je crois que c'est l'histoire des 2 minutes pendant lesquelles on peut corriger son texte lesquelles sont souvent mangées ou écourtées par les difficultés de transmission des serveurs des fournisseurs d'accès, serait-il possible que vous portiez ce temps à 30minutes, (sur certains forums il y a un temps d'une heure, sauf réponse intermédiaire).?
Merci
pont
08/07/2009 - 10h16
MacArell
Date d'inscription
juillet 2009
Messages
10
Re : pic 16f88 et SPI
Bonjour, pour info, peut-on m'expliquer le positionnement par rapport aux BANK:
Le registre SSPSTAT est en BANK 1 et le registre SSPCON est en BANK 0. Comme ils sont expliques a la suite dans le datasheet, j'ai pas fait gaffe a ca, mais il faut bien se positionner...
pour ma part j'essaye depuis une semaine de faire marcher ma liaison SPI entre mon PIC 18F24K20 (maitre donc) et mon accéléromètre MMA7455
void initialise_SPI()
{
SSPEN = 0; //Enable bit must be cleared to configure SPI
TRISC = TRISC | 0b00010000; //Setup the TRIS register
CKP = 0; //IDLE state for clock is a low level
CKE = 1; //Output data changes on clock transition from active to idle
SMP = 0; //Input data sampled at the middle of data output time
SSPCON1 = SSPCON1 | 0b00000010; //Speed: Fosc/64
SSPEN = 1; //Enable the serial port
}
et le code pour la lecture (à une adresse donnée) et l'écriture d'un bit à une adresse donnée:
Code:
//SPI write command function
void spi_w(unsigned char reg, unsigned char data){
unsigned char x;
CS=lo;
SSPBUF=(((reg &0x3F)<<1)|0x80);
while (!SSPIF); //wait for transmission complete
x=SSPBUF; //dummy read
SSPBUF=data;
while (!SSPIF); //wait for transmission complete
x=SSPBUF;
CS=hi;
}
//SPI read function
unsigned char spi_r(unsigned char reg){
CS=lo;
SSPBUF = 0x00; // initiate bus cycle
while ( !BF ); // wait until cycle complete
CS=hi;
return ( SSPBUF ); // return with byte read
}
Le fait est que je n'arrive à observer à l'oscillo aucune activité sur les ligne SDO et SDA, l'horloge SCL fonctionne...
08/07/2009 - 10h53
simon.
Date d'inscription
août 2006
Messages
380
Re : pic 16f88 et SPI
Envoyé par pont2
Merci Jack de votre sollicitude, mais quel manque de constance de ce correspondant, j'espère bien que dans deux ans je serai encore là, (si un modérateur ne m'a pas jeté?)
Ça va pas non ?
Ton comportement est intolérable pour plusieurs aspects:
- On ne reproche pas à quiconque une non réponse. Si tu veux absolument une réponse, tu paies un consultant !
- "un copain m'a filé la réponse par ailleurs..." ça te ferait mal de la poster ici pour la postérité, la réponse, maintenant que tu l'as ?
- Déterrer un sujet vieux de 2 ans, c'est mal. Quand on le fait pour de bonnes raisons, on s'en excuse. Ça évite aux gens de perdre leur temps.
08/07/2009 - 13h36
MacArell
Date d'inscription
juillet 2009
Messages
10
Re : pic 16f88 et SPI
Concernant "mon" dernier post j'ai fait une erreur dans le code de lecture d'adresse sur le SPI:
Code:
//SPI read function
unsigned char spi_r(unsigned char reg){
CS=lo;
SSPBUF = 0x00; // initiate bus cycle
while ( !BF ); // wait until cycle complete
CS=hi;
return ( SSPBUF ); // return with byte read
}
le bon code c'est celui là:
Code:
//SPI read function (send read register commands to the accelerometer and output resultant read byte)
unsigned char spi_r(unsigned char reg)
{
unsigned char temp;
CS = lo; // pull the CS low to start transmission
SSPBUF=((reg&0x3F)<<1); // // send register affress to the accelerometer with read command
while(!SSPIF);// wait for transmit to finish
temp=SSPBUF; // reading SSPBUF clears the BF bit
while(!SSPIF); // wait for receive to finish
temp=SSPBUF; // reading SSPBUF clears the BF bit
CS = hi; // pull the CS high to stop transmission
return temp;
}
Le fait est que je n'arrive à observer à l'oscillo aucune activité sur les ligne SDO et SDA, l'horloge SCL fonctionne...
SCL et SDA concernent l'I2C, pas la SPI.
A+
08/07/2009 - 13h55
MacArell
Date d'inscription
juillet 2009
Messages
10
Re : pic 16f88 et SPI
Merci, pour la réponse je me suis mélanger dans les termes pour SCL il faut comprendre SCK et pour SDA > SDI
08/07/2009 - 14h07
Jack
Date d'inscription
avril 2003
Localisation
Metz
Messages
10 783
Re : pic 16f88 et SPI
Ok. Et donc aucune donnée ne semble circuler alors que SCK fonctionne. SI rien ne fonctionnait, j'aurais pensé que la SPI n'était pas validée, mais là...
Bon, je ne connais pas trop le hard de ton pic non plus.
Tu est sur d'être sur la bonne patte et que tes soudures sont bonnes?
Mes soudures et mes pattes semblent bonnes en fait j'ai un Kit déjà cablé
par contre comme dit David est-ce qu'il faut câbler dans ce sens?
SCK --> SCK
SDO --> SDI
SDI <-- SDO
RB3 --> CS
En fait avec mon nouveau code sur la fonction Read j'ai quelque chose sur SDO et SDI:
Sur SDI j'ai ca autour de Zero:
et sur SDO (niveau logique respectés):
En enlevant le Kit j'ai les mêmes signaux sauf sur SDO où je n'ai plus le signal au tiers à la fin...
Dernière modification par MacArell ; 08/07/2009 à 15h12.