Communication SPI entre PIC et autre circuit
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Communication SPI entre PIC et autre circuit



  1. #1
    number8one

    Communication SPI entre PIC et autre circuit


    ------

    Bonjour,
    je tente d effectuer une communication SPI entre un PIC18F4580 et un potentiometre programmable MCP41050.
    Cependant, la broche RC3 du PIC qui devrait delivrer une horloge pour la communication ne donne rien.
    Avez vous une idee de la solution?
    Merci

    #include "p18f4580.h"
    #include "adc.h"
    #include <stdlib.h>
    #include "delays.h"
    #include <stdio.h>
    #include "pwm.h"
    #include "timers.h"
    #include <spi.h>

    #pragma config OSC = IRCIO67 //Oscillateur interne 8 MHz, RA6 et RA7 sont des ports normaux
    #pragma config MCLRE = OFF //désactiver la pin de Reset
    #pragma config LVP = OFF //Low Voltage Programming désactivé => RB5 I/O normale
    #pragma config PBADEN = OFF //PORTB<4> and PORTB<1:0> Configured as Digital I/O Pins on Reset
    #pragma config DEBUG = OFF //débug désactivé => RB6 et RB7 normal I/O
    #pragma config FCMEN = OFF //Fail-Safe Clock désactivée
    #pragma config IESO = OFF //Oscillator Switchover mode désactivé
    #pragma config PWRT = OFF //Power-up Timer désactivé
    #pragma config BOREN = OFF //Reset dû a une tension trop basse désactivé
    #pragma config BORV = 2 //Brown-out Reset Voltage
    #pragma config WDT = OFF //Watchdog désactivé
    #pragma config WDTPS = 1024 //prédiviseur du watchdog
    #pragma config LPT1OSC = OFF //Low-Power Timer 1 Oscillator Disable ==> high power
    #pragma config XINST = OFF //Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
    #pragma config BBSIZ = 1024 //1K words (2K bytes) Boot Block
    #pragma config STVREN = OFF //pas de reset du à la pile

    #define SPI_CS LATDbits.LATD2

    void init_config(void)
    {
    SPI_CS = 1;
    OSCCON = 0b01110011; // 8mhz
    TRISD = 0x00; //Initialisation du port D en sortie
    TRISDbits.TRISD2 = 0; // pin RD2 configurée en sortie
    //PORTDbits.RD2 = 1;
    TRISCbits.TRISC3 = 0; // pin RC3 configurée en sortie
    TRISCbits.TRISC5 = 0; // pin RC5 configurée en sortie
    TRISCbits.TRISC4 = 1; // pin RC4 configurée en sortie,inutilisée
    Conversion_AN ();
    OpenPWM1 (255); // PWM period =[(period ) + 1] x 4 x TOSC x TMR2 prescaler,
    // PWM period = PWM Duty_Dycle max = 1023 TOSC avec TOSC = 125ns d'où period=255
    OpenSPI(SPI_FOSC_16, MODE_11, SMPEND);
    SPI_CS = 0;
    WriteSPI( 0x11 );
    writeSPI(0);
    SPI_CS = 1;
    }

    void main (void)
    {
    init_config ();
    while(1);
    }

    -----

  2. #2
    invite74119562

    Re : Communication SPI entre PIC et autre circuit

    RC 4 = entrée et non sortie...
    Tu a mis ton SPI enable? Tu as choisi ta fréquence?

    Il ne faut que lire la datasheet et travailler registre pa registre...tout ira bien...Courage

  3. #3
    number8one

    Re : Communication SPI entre PIC et autre circuit

    Ma frequence est choisie. J utilise l oscillateur interne 8MHz et j ai configuré: OpenSPI(SPI_FOSC_16, MODE_11, SMPEND);

  4. #4
    invite74119562

    Re : Communication SPI entre PIC et autre circuit

    normalement avec lensemble des regsitre tu dous pouvoir arriver à faire fonctionner la SPI...revérifie le tout.
    Envois ta fonction que l'on regarde ce qu'il y à dedans!

  5. A voir en vidéo sur Futura
  6. #5
    number8one

    Re : Communication SPI entre PIC et autre circuit

    J ai lu sur d autres sites que c est normal, il faut envoyer des donnees pour que le SCK fournisse une clock.
    je crois que le module SPI fonctionne.
    En fait je tente de programmer un potentiometre programmable MCP41050 mais mon programme d init n y arrive pas.
    Apparemment, le potentiometre refuse d executer les donnees car il faut que l horloge qu on lui fournit soit un multiple de 16.
    Quelqu un aurait une idee?
    Merci

    le programme que j utilise est decrit plus haut: init_config()

  7. #6
    invite74119562

    Re : Communication SPI entre PIC et autre circuit

    tu connais microC pro for PIC...télécharge la version d'évaluation et te casse pas la tête, la SPI est simple à utiliser dessu et tu es ceratin que ça va marcher, crois moi...

    Mais dis moi, pq tu te plain que ça marche pas si t'a pas testé...t'es zarb toi...^^

    Fais comme je t'ai dit, faut pas se casser la tête si les outils fonctionnent mais normalement la datasheet est suffisante, c'est comme ça que j'ai appris les PIC...sans tuto, mais seulement avec la datasheet!

  8. #7
    number8one

    Re : Communication SPI entre PIC et autre circuit

    a moustiqu3:
    Je sais pas si c est pas mechant ce que tu me dis mais tu ne devrais pas parler ainsi a quelqu un sur un forum.

    Par ailleurs, je pensais au debut que dès que tu initialise le SPI, l horloge se mettait en marche, ce qui, je m en suis rendu compte, n est pas vrai.
    Et j ai reussi a le faire fonctionner hier, y avait tout simplement une erreur dans le datasheet de mon MCP.
    Merci

Discussions similaires

  1. communication série entre PIC et PC
    Par invite4b36df62 dans le forum Électronique
    Réponses: 3
    Dernier message: 05/05/2009, 10h46
  2. distance communication entre 2 pic
    Par alainav1 dans le forum Électronique
    Réponses: 6
    Dernier message: 15/09/2008, 09h57
  3. Réponses: 3
    Dernier message: 30/05/2008, 10h48
  4. cherche code pour communication SPI entre deux PICs...
    Par invite8f8ffe44 dans le forum Électronique
    Réponses: 1
    Dernier message: 24/04/2008, 19h12
  5. communication entre pic et pc
    Par alainav1 dans le forum Électronique
    Réponses: 9
    Dernier message: 16/02/2008, 12h38
Découvrez nos comparatifs produits sur l'informatique et les technologies.