Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

SPI sur PIC16 F
Pjbox
Membre
Membre
Messages : 5
Enregistré en : novembre 2016

#1 Message par Pjbox » ven. 4 nov. 2016 21:27

Bonjour, ceci est mon premier poste sur le FORUM FantasPic , je me présente rapidement je suis étudiant titulaire d'un DUT GEII , et actuellement en Licence L3
Pour commencer , je vais m'excuser , car en effet j'arrive sur ce forum chargé de "préjugés" , en effet actuellement pour moi PIC équivaut a échec du projet en cours...et j'aimerai beaucoup que ça change... J'ai commencer la programmation sur des AVR 8bit d’Atmel . J'ai fait beaucoup de projet avec ses microcontrôleurs , mais seulement voila j'aimerai travailler plus tard dans l’électronique embarquée et il me semble important de maitriser toutes les technologies . :geek:

1478291156.png


Alors voila j'en arrive a ma question : Est ce possible de crée une liaison SPI maitre esclave entre un pic16F1827 et un emmeteur nRF24L01 en utilisant les MSSP intégré au micro , je poste sur ce forum car je veux réussir a utiliser des PICs pour faire autre chose que allumer des leds , mais je vous avoue que je suis a deux doigts de laisser tomber mon projets et de basculer sur Atmel...Pour donner une idée il ya mtn quelques mois j'ai deja laisser tomber l'idée d'obtenir une connexion I2C fonctionel sur pic , puis apres acharnement j'ai laisser tomber l'idée de faire fonctionner un ecran lcd 16*02 sur pic ... :mur: soit beaucoup de projet qui sont tomber a l'eau ou alors passés sur atmel

Mais si les PICs se vendent toujours c'est qu'ils doivent marcher lorsqu'ils sont bien paramétrés correctement . Alors quest que je fais mal ?? pourquoi ca plante :furieux: :furieux: je cesse ici de me lamenter , et je m'excuse encore j'ai passer une soirée difficile contre....un PIC 16F1827... :oops:

Donc je laisse ici une image de la connectique et mon code avec l'espoir qu'une bonne âme éclaire ma lanterne :shock:

Actuellement il ne se passe .... rien... je nai pas d'analyseur logique sous la main ni d'oscilo donc j'ai fait du debugage avec des leds ( parce que j'ai pas été foutu de faire marcher L'USART non plus :mur: ) j'ai donc placer des leds sur SCK , MOSI , et MISO pour voir si il y'avait...de l'action...et il semblerai qu'il ne se passe rien donc ou est l'erreur ? je crois ne rien avoir oublié , je vous remercie par avance pour votre aide et vous souhaite un bon week end .

PS : pardon pour le pessimisme :cry:

Compilateur XC8

Code : Tout sélectionner

/* 
 * File:   main.c
 * Author: Pierre
 *
 * Created on 4 novembre 2016, 08:42
 */
// CONFIG1
#pragma config FOSC = INTOSC    // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)

// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF      // PLL Enable (4x PLL disabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include <pic16f1827.h>
 #define _XTAL_FREQ 16000000  // osc interne 16 mhz  
void SPI_INIT();
void spi_w(unsigned char data);

/*
 * 
 */
int main(int argc, char** argv) {
    
    OSCCON 
= 0b01111010 ; // 16 mhz oscilateur interne ??
    TRISBbits.TRISB2 = 0; // portB RB2 en sortie 
    TRISBbits.TRISB7 = 0 ; // portB RB7 en sortie 
    LATBbits.LATB7 = 1 ;//ss=1;
    SPI_INIT();

    while(1) // boule infinie
    {
        LATBbits.LATB2 = 1 ;
         __delay_ms(3000);
         spi_w(0x0F);
        LATBbits.LATB2 = 0;
        
        __delay_ms
(3000);
        
   
    
    
}
 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

SPI sur PIC16 F
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » sam. 5 nov. 2016 08:50

Bonjour Pjbox ,

Bienvenue sur Fantas-Pic, j’espère que tu trouvera des solutions à tes problèmes .

Je programme avec mikroC et non MPLABX , mais les deux sont assez proches. Je suis moi même débutant et ne connais la communication SPI que par le nom ou presque, j'ai très peu travaillé avec !

Je te propose afin d'éviter aux personnes voulant t'aider de fournir la Data-Sheet de ton module nRF24L01 .

Merci à toi.

PS: j'ai modifié ton image pour la mettre sur le serveur Fantas-Pic au lieu de l’hébergeur extérieur :sifflotte: ( voir la procédure pour poster des images.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

SPI sur PIC16 F
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#3 Message par paulfjujo » sam. 5 nov. 2016 09:39

Bonjour PjBox,



Attention, tu n'as pas choisi le PIC le plus facile à maitriser
La nouvelle generation de pic 16F dont le 16F1827
ont des subtilités :
- entrées Analogique par defauts
- usage, fonction des Pin programmable

il faut donc envisager une config Hardwaware un peu plus détaillée
et bien étayée par la lecture de la datasheet

un exemple en mikroC de config hardware
à adapter ..bien sur

Code : Tout sélectionner

void Init_Hardware()
{

 PORTA=0;
 PORTB=0;
 ANSELA = 0;        //Set PORTA  digital  I/O
 TRISA=0b11101111; // RA4 as output

 ANSELB = 0;         //Set PORTB as digital I/O
 TRISB=0b11101111;  // all input   excpet RB4

 APFCON0=0;  // ALTERNATE PIN FUNCTION CONTROL REGISTER 0// page 119
 APFCON0.RXDTSEL=0;
 // RXDTSEL=0  RX/DT function is on RB1
 // SDO1SEL=0  SDO1 function is on RB2
 // SS1SEL =0  SS1 function is on RB5
 // P2BSEL =0  P2B function is on RB7
 // CCP2SEL =0 CCP2/P2A function is on RB6
 // P1DSEL= 0  P1D function is on RB7
 // P1CSEL= 0  P1C function is on RB6
 // CCP1SEL= 0 CCP1/P1A function is on RB3
 APFCON1=0; // ALTERNATE PIN FUNCTION CONTROL REGISTER 1
 APFCON1.TXCKSEL=0; //  TX/CK function is on RB2
 //APFCON1.SDO1SEL= 1; //0 = SDO1 function is on RB2    1 = SDO1 function is on RA6

 CM1CON0=0;       // disable comparators
 CM1CON1=0;
 //MDCARH.MDCHODIS=1;  //0 = Output signal driving the peripheral output pin (selected by MDCH<3:0>) is disabled
 //MDCARL.MDCLODIS=1; //1 = Output signal driving the peripheral output pin (selected by MDCL<3:0>  is disabled

 
 FVRCON
.FVREN=0;  // disble fixed voltage reference
 EECON1.EEPGD=0;  // is the control register for EE memorya Accesses.
 // Option REG
 //  WPUEN INTEDG TMR0CS TMR0SE PSA PS<2:0>
 OPTION_REG=0;
 OPTION_REG.WUE=0;  // // WPUEN=0 enable all pull up
 WPUB=0xFF;
 
 
//INTCON GIE PEIE TMR0IE INTE IOCE TMR0IF INTF IOCF
  INTCON.PEIE=0;
 // PIE1
 //TMR1GIE ADIE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE
 PIE1=0;  // deja a zero sur reset
// PIR1: PERIPHERAL INTERRUPT REQUEST REGISTER 1
// TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF
 PIR1=0;    // deja a zero sur reset
 //   INTCON GIE PEIE TMR0IE INTE IOCE TMR0IF INTF IOCF p89
 INTCON.IOCIE=0;  // disable interrupt PORTB
 INTCON.GIE=0;
 
}


si tu veux basculer dans le monde des PIC autant partir directement sur du 18Fxxx
ex: 18F26K22 ou 46K22
18F87J50 tres confortable en taille RAM et ROM !
Aide toi, le ciel ou FantasPic t'aidera

SPI sur PIC16 F
Pjbox
Membre
Membre
Messages : 5
Enregistré en : novembre 2016

#4 Message par Pjbox » sam. 5 nov. 2016 09:55

Salut Jeremy , et merci

Je poste ici le datasheet du nRF24l01 , mais je précise que ce n'est pour le moment pas lui le problème , le but pour le moment est vraiment de faire marcher le BUS SPI
Le principe du SPI est très simple en fonctionnement si personne ne trouve de solutions je m'en sortirai en faisant du "SPI software" c'est a dire sans le MSSP interne, juste en bougeant les port....c'est juste que se serai bête de devoir faire ça alors qu'il ya un périphérique dédié dans le PIC :langue: En attendant je reste en stand-by et je vais faire le tour des tutoriels étant peu expérimenté en PIC ça ne peut qu’être intéressant :-D


Datasheet : https://www.sparkfun.com/datasheets/Com ... n_v1_0.pdf

SPI sur PIC16 F
Pjbox
Membre
Membre
Messages : 5
Enregistré en : novembre 2016

#5 Message par Pjbox » sam. 5 nov. 2016 10:03

Merci paulfjujo , en effet mais a l'université c'est pas toujours nous qui choisissons le matériel ^^

je jette un coup d'oeuil et je vais faire des essais et je reviendrai vers le forum :)

j'ai jamais réussi a faire marcher l'I2C sur un 18F46k22 :lol: mais je pense que c'est parce que j'applique trop un comportement "Atmel" dessus et que j’étais seul donc ça finissait en crise de nerf :cry: mais maintenant tout est possible avec un Forum Francophone et un peu de détermination ;) don j'ai espoir :) a bientôt

SPI sur PIC16 F
Pjbox
Membre
Membre
Messages : 5
Enregistré en : novembre 2016

#6 Message par Pjbox » sam. 5 nov. 2016 11:42

Bon j'ai essayé d'avoir une configuration plus complète :
j'ai tester ce code en plaçant une led sur RB4 ( SCK ) et il ne se passe rien , j'en déduis que ça ne marche toujours pas ...Alors Pourquoi ? :shock:

je suis conscient que cela peut prendre du temps de vérifier ma configuration , et je remercie ceux qui auront le temps de se pencher dessus Merci !

Code : Tout sélectionner

 /* 
 * File:   main.c
 * Author: Pierre
 *
 * Created on 4 novembre 2016, 08:42
 */
// CONFIG1
#pragma config FOSC = INTOSC    // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)

// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF      // PLL Enable (4x PLL disabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include <pic16f1827.h>
 #define _XTAL_FREQ 16000000  // osc interne 16 mhz 
void SPI_INIT();
void spi_w(unsigned char data);
void Init_Hardware();

/*
 * 
 */
int main(int argc, char** argv) {
    Init_Hardware(); // configuration Hardware
    OSCCON = 0b01111010 ; // 16 mhz oscilateur interne
    TRISBbits.TRISB2 = 0; // portB RB2 en sortie 
    TRISBbits.TRISB7 = 0 ; // portB RB7 en sortie 
    LATBbits.LATB7 = 1 ;//ss=1;
   
    SPI_INIT
();

    while(1) // boule infinie
    {
        LATBbits.LATB2 = 1 ;
         __delay_ms(3000);
         spi_w(0x0F);
        LATBbits.LATB2 = 0;
        
        __delay_ms
(3000);
        
   
    
    
}

    

    return 
(EXIT_SUCCESS);
}
void SPI_INIT()
{
    SSP1CON1bits.SSPEN = 0 ; // mise en service du MSSP
   // REGLAGE I/O POUR SPI 
   // APFCON0bits.SDO1SEL = 1 ; // SDO sur RA6
   // TRISAbits.TRISA6 = 0 ;  //RA6 en sortie ( MOSI)
   // TRISBbits.TRISB1 = 1 ; // RB1 en entrée (MISO)
   // TRISBbits.TRISB4 = 0 ; // RB4 en sortie (SCK MASTER)
    SSP1CON1bits.SSPM = 0010 ; // MODE MASTER 
    SSP1CON1bits.CKP = 0 ; // polarté horloge
    SSP1STATbits.CKE = 0 ;// polarité d'horloge ;
    SSP1CON1bits.SSPEN = 1 ; // mise en service du MSSP
}


 void spi_w(unsigned char data)
{
 
    unsigned char x
;
    LATBbits.LATB7 = 0 ;//ss=0;
    SSPBUF=data;
   // while (!PIR1bits.SSP1IF);  //wait for transmission complete
    x=SSPBUF;
    LATBbits.LATB7 = 1 ;//ss=1;
} 

 void Init_Hardware
()
{

 PORTA=0x00;
 PORTB=0x00;
 ANSELA = 0;  // Mise du portA en mode digital I/O
 TRISB=0b11101111; // RB4 en sortie ( SPI Clock)  RB1 en entrée (MISO)

 ANSELB = 0;         //Mise du portB en mode digital I/O
 TRISA=0b10111111;  // all input   excpet RA6 en sortie ( MOSI)

 APFCON0=0;  // ALTERNATE PIN FUNCTION CONTROL REGISTER 0// page 119
 APFCON0bits.RXDTSEL=0; // RXDTSEL=0  RX/DT function is on RB1
 APFCON0bits.SDO1SEL = 1 ; // SDO sur RA6 MOSI// SDO1SEL=0  SDO1 function is on RB2
 // SS1SEL =0  SS1 function is on RB5
 // P2BSEL =0  P2B function is on RB7
 // CCP2SEL =0 CCP2/P2A function is on RB6
 // P1DSEL= 0  P1D function is on RB7
 // P1CSEL= 0  P1C function is on RB6
 // CCP1SEL= 0 CCP1/P1A function is on RB3
// APFCON1=0; // non implémenté sur 16f1827
 //APFCON1bits.TXCKSEL=0; //  TX/CK function is on RB2
 //APFCON1.SDO1SEL= 1; //0 = SDO1 function is on RB2    1 = SDO1 function is on RA6

 CM1CON0=0;       // disable comparators
 CM1CON1=0;
 //MDCARH.MDCHODIS=1;  //0 = Output signal driving the peripheral output pin (selected by MDCH<3:0>) is disabled
 //MDCARL.MDCLODIS=1; //1 = Output signal driving the peripheral output pin (selected by MDCL<3:0>  is disabled

 
 FVRCONbits
.FVREN=0;  // disble fixed voltage reference
 EECON1bits.EEPGD=0;  // is the control register for EE memorya Accesses.
 // Option REG
 //  WPUEN INTEDG TMR0CS TMR0SE PSA PS<2:0>
 OPTION_REG=0;
 OPTION_REGbits.nWPUEN ;  // // WPUEN=0 enable all pull up
// WPUB = 0x00 ;
  //INTCON GIE PEIE TMR0IE INTE IOCE TMR0IF INTF IOCF
  INTCON = 0;
 // PIE1
 //TMR1GIE ADIE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE
 PIE1=0;  // deja a zero sur reset
// PIR1: PERIPHERAL INTERRUPT REQUEST REGISTER 1
// TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF
 PIR1=0;    // deja a zero sur reset
 //   INTCON GIE PEIE TMR0IE INTE IOCE TMR0IF INTF IOCF p89
 INTCONbits.IOCIE = 0 ;  // disable interrupt PORTB
 INTCONbits.GIE = 0 ;
 
 
}

SPI sur PIC16 F
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#7 Message par Claudius » sam. 5 nov. 2016 14:57

Bonjour à tous,

Je m'adresse plus particulièrement à Pjbox en lui disant avec tous les contributeurs dont je salue le créateur de ce Forum, Jérémy, pour ne pas le citer:

Bienvenu sur ce Forum...

Je ne me placerai pas sur le coté technique car ce qui m'a interpellé dans ton 1st post et qui me semble fondamental pour "te remonter le moral" sont:

    - J'ai fait beaucoup de projets avec ces microcontrôleurs [AVR 8bit d’Atmel]: C'est tout à ton honneur et donc je ne vois pas pourquoi tu n'y arriverais pas avec ces PICs...

    - J'aimerai travailler plus tard dans l’électronique embarquée et il me semble important de maitriser toutes les technologies: Certes, mais n'est-ce pas trop ambitieux...

    - J'ai déjà laisser tomber l'idée d'obtenir une connexion I2C fonctionnel sur PIC...

    - Je n'ai pas été foutu de faire marcher L'USART non plus...

    - Est ce possible de créer une liaison SPI maitre esclave entre un pic16F1827 (que j'ai mis en œuvre également mais en ... Assembleur dans le cadre d'une comparaison entre les Instructions PIC16 (Enhanced Mid-Range) et Simplement Mid-Range ;-) et un 2.4G Wireless nRF24L01p en utilisant les MSSP intégrés au micro: Heureusement que oui...

    - Je n'ai pas d'analyseur logique sous la main ni oscilloscope donc j'ai fait du débogage avec des leds...
Ce dernier point me fait dire que tu ne te donnes pas les moyens d'assouvir ta passion dont tu veux en faire ton métier (cela me rappelle mon parcours ;-) car au vu de ton projet, et je rejoins pour cela paulfjujo, je pense que tu as mis la barre très haute et que l'on analyse pas un bus SPI (I²C, USART, etc.) ... avec des Leds

Donc, et sans prétention de ma part, je te conseillerai d'investir dans un minimum d'outils que sont (maintenant c'est beaucoup moins cher qu'il y a des dizaines d'années ;-); à savoir:

    - un Voltmètre / Ohmmètre pour vérifier les connexions et éventuels court-circuits
    - un Oscilloscope 2 voies - 40 Mhz ( + à mémoire qui est souvent le cas pour le même prix)
Voilà, je t'encourage à persévérer mais encore faut-il te donner les moyens car comme on dit: Les bons outils font les bons ouvriers

SPI sur PIC16 F
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2617
Enregistré en : juillet 2016
Localisation : Terre

#8 Message par Temps-x » dim. 6 nov. 2016 02:46

Bonjour à tous, soit le bienvenu Pjbox sur ce forum, qui est formidable, merci au créateur.

Commencer avec 16F1827, ben, je trouve personnellement que c'est bien, 35 instruction à apprendre an ASM, qui est mon langage.

j'ai moi même commencer la communication Nrf24l01+ en ASM avec la participation de maï, notre gourou du forum, qui a eu la gentillesse
de redessiné le schéma pour moi, pour l'instant j'ai pas le temps de m’occuper de ça, et je m'excuse auprès de lui, je vais y revenir, voici le lien.

viewtopic.php?f=11&t=287

Je devais mettre le code en fin de semaine, mais, je n’est pas pris le temps de l'écrire, si tu comprends l'anglais, on pourras s'entraider.

Qu'en pense tu ? :sifflotte:

Le module Nrf24l01+ et toujours en esclave, c'est le microcontrôleur qui reste maître.

Tu devrais lire le cours de Monsieur Bigonoff sur les PIC® - Part2 (La gamme mid-range par l'étude des 16F87X ), il parle de cela, et les différentes façon de branchement du SPI, la documentation est téléchargeable sur le site de Monsieur Bigonoff, vers la fin de page, voici le lien.

https://www.abcelectronique.com/bigonof ... ?par=5d58e

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

SPI sur PIC16 F
Pjbox
Membre
Membre
Messages : 5
Enregistré en : novembre 2016

#9 Message par Pjbox » dim. 6 nov. 2016 09:31

Salut Temps-X :wink: , je comprends globalement assez bien l'anglais technique donc oui on peut s'entraider ;) +1

toutefois j'aimerai rester en C...je connais l'assembleur ( vue ya deux ans dans mes études ) et il me semble que c’était vraiment le chantier :lol:

Mais je sais aussi que quand je compile en C le compilateur transforme mon code C en code ASM , puis enfin le compilateur ASM transforme ça en .HEX
Donc je suis convaincu que ça vaut le coup , imaginons on fait tourner ce petit bordel en ASM je devrai me débrouiller pour le mettre en C enfin peut être..

Dans tout les cas je vais jeter un coup d'oeuil ;) merci de ta participation Temps-X


Edit : Pour répondre a claudius , juste avant de voir ton message j'avais eu un raisonnement similaire et j'ai investi dans un petit analyseur logique 8 canaux 25 mhz , j'espere pouvoir me debrouiller avec ça , l’oscilloscope j'en avais acheter un en deux voies USB qui n'est pas capable de se synchroniser correctement..( j'avais le sentiment de mette bien faire avoir a l’époque :furieux: , mais en tant qu’étudiant j'ai un budget limité )

SPI sur PIC16 F
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#10 Message par paulfjujo » dim. 6 nov. 2016 15:22

bonjour,


Est-tu sur que ton programme tourne ?

en mettant en commentaire l'init SPI et l'ecriture SPI
pour voir si , dans la boucle while , si la led sur RB2 clignote bien au rythme imposé .
est-ce l'init SPI qui coince ou l'ecriture ?

APFCON1.TXCKSEL=1; // TXCKSEL=0 choix RB2 (par defaut) TXCKSEL=1 choix RB5
RB2 serait affecté à TX au reset .. voir si il n'y a pas conflit

Je ferais un test SPI avec mon 16F1847 ( pas de 16F1827 sous la main) ...
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 47 invités