Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Modules MRF89XAM8A-I



  1. #1
    Apostech

    Modules MRF89XAM8A-I


    ------

    Bonjour,

    Depuis deux semaines je tente de faire fonctionner deux modules MRF89XAM8A-I (http://ww1.microchip.com/downloads/e...Doc/70622B.pdf).

    Mon but étant de communiquer entre les deux pour pouvoir faire un petit projet d'un côté, puis une commande de base qui allumera des LEDs en fonction de l'état de mon projet (ouverture, fermeture, stand-by, etc.).

    J'ai déjà deux petits codes, le code de l'émetteur me semble pas mal car j'arrive à avoir des signaux sur IRQ1, ainsi que les pates SDK et SDI.

    Je suis preneur de toute information, merci d'avance !

    Code émetteur :
    Code:
    #include <18f26j50.h>           //Bibliothèque du PIC
    #device ADC=8                   //ADC sur 8 bits si ADC=8
    #fuses INTRC, WDT256            //Fuses nécessaires au fonctionnement du PIC
    #use delay (clock=8000000)      //Clock du PIC
    
    #use spi(MASTER, DO = PIN_C7 , CLK = PIN_B4, BITS=8, MODE=0)
    
    #define RESET       PIN_C6
    #define CSCON       PIN_B0
    #define IRQ0        PIN_B1
    #define CSDATA      PIN_B2
    #define IRQ1        PIN_B3
    
    
    //**********************************VARIABLES*********************************//
    int16 rec_ms=0, vanne_open_rec=0, vanne_open=0, tps_open=0, selection=0;
    int etat=0;
    int etat_bouton=1, ancien_etat=0, anti_rebond=0;
    int etat_bouton2=0, ancien_etat2=0, anti_rebond2=0;
    int16 ms=0;
    
    //**********************************FONCTIONS*********************************//
    void init();                //Fonction d'initialisation
    void timer0_interrupt();    //Interruption timer 0
    void radio();               //Fonction d'envoie des données
    
    //**********************************PROGRAMME*********************************//
    void main()  //Fonction principale
    {
        init();     //Appel de init pour faire les premières initialisations
        
        while(1)    //Boucle principle du programme
        {   
    
            if(ms>=500)
            {
            radio();
            ms=0;
            }
        }
    }
    
    void init()
    {
        enable_interrupts(GLOBAL);            //Active les interruptions globales
        enable_interrupts(INT_TIMER0);        //Active l'interruption du timer 0
    
        setup_timer_0(T0_DIV_32 | T0_INTERNAL | T0_8_BIT);  //Init du timer0
        set_timer0(193);    //set le timer pour début à 1 ms
        
        output_low(CSCON);
        spi_xfer(0x01<<1);
        spi_xfer(0b10101000);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x05<<1);
        spi_xfer(0b00001111);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x0D<<1);
        spi_xfer(0b00001000);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x0E<<1);
        spi_xfer(0b00010001);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x00<<1);
        spi_xfer(0b10010000);
        output_high(CSCON);
        
        delay_ms(5);
    }
    
    void radio()
    {
        
        output_low(CSDATA);
        spi_xfer(0x00);
        output_high(CSDATA);
        delay_us(5);
        output_low(CSDATA);
        spi_xfer(0x00);
        output_high(CSDATA);
        delay_us(5);
        output_low(CSDATA);
        spi_xfer(0x00);
        output_high(CSDATA);
        delay_us(5);
        output_low(CSDATA);
        spi_xfer(0x00);
        output_high(CSDATA);
        delay_us(5);
        
        output_low(CSDATA);
        spi_xfer(0x29);
        output_high(CSDATA);
        delay_us(5);
        output_low(CSDATA);
        spi_xfer(0x54);
        output_high(CSDATA);
       
    }
    
    #INT_TIMER0
    void timer0_interrupt()
    {
        set_timer0(193);    //remet à 1 ms lors d'un débordement
        rec_ms++;           //incr. variable
        tps_open++;         //incr. variable
        anti_rebond++;      //incr. variable
        anti_rebond2++;     //incr. variable
        selection++;        //incr. variable
        ms++;
    }
    Code récepteur :
    Code:
    #include <18f26j50.h>           //Bibliothèque du PIC
    #device ADC=8                   //ADC sur 8 bits si ADC=8
    #fuses INTRC, WDT256            //Fuses nécessaires au fonctionnement du PIC
    #use delay (clock=8000000)      //Clock du PIC
    
    #use spi(MASTER, DO = PIN_C7 , CLK = PIN_B4, BITS=8, MODE=0)
    
    #define RESET       PIN_C6
    #define CSCON       PIN_B0
    #define IRQ0        PIN_B1
    #define CSDATA      PIN_B2
    #define IRQ1        PIN_B3
    
    //**********************************VARIABLES*********************************//
    int valeurtest;
    
    //**********************************FONCTIONS*********************************//
    void init();
    void reception();
    void microchip();
    
    //**********************************PROGRAMME*********************************//
    void main()
    {
        init();
        
        while(1)
        {
            output_toggle(PIN_A0);  //Changement LED pour test
            delay_ms(200);          //petit délai de test
            
    
            microchip();            //Appel de la fonction microchip
        }
    }
    
    
    void init()
    {
       
        
        output_low(CSCON);
        spi_xfer(0x01<<1);
        spi_xfer(0b10101000);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x05<<1);
        spi_xfer(0b00001111);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x0D<<1);
        spi_xfer(0b10111000);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x0E<<1);
        spi_xfer(0b01100001);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x012<<1);
        spi_xfer(0b00111000);
        output_high(CSCON);
        
        output_low(CSCON);
        spi_xfer(0x00<<1);
        spi_xfer(0b01110000);
        output_high(CSCON);
        
        delay_ms(5);
    
    }
    
    void microchip()
    {
        if(input(IRQ1)==1)
        {
        output_low(CSDATA);
        valeurtest=spi_xfer(0x46);
        output_high(CSDATA);
        delay_us(100);
        output_low(CSDATA);
        valeurtest=spi_xfer(0x72);
        output_high(CSDATA);
        }
    }

    -----

  2. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?

Discussions similaires

  1. Modules
    Par math123 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 18/06/2014, 09h26
  2. le choix des modules TOR (API)
    Par lila lila dans le forum Électronique
    Réponses: 9
    Dernier message: 12/04/2014, 11h27
  3. CAN USB les modules
    Par P4l4din dans le forum Électronique
    Réponses: 3
    Dernier message: 04/12/2013, 15h25
  4. modules radio
    Par ABN84 dans le forum Électronique
    Réponses: 12
    Dernier message: 14/09/2009, 09h54
  5. modules
    Par LECOEURKIBAT dans le forum Secourisme spécial Croix-Rouge
    Réponses: 0
    Dernier message: 02/09/2005, 23h26
Découvrez nos comparatifs produits sur l'informatique et les technologies.