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

Probleme Programmation Registre CONFIG1H PIC18F18f4431



  1. #1
    Gotego

    Unhappy Probleme Programmation Registre CONFIG1H PIC18F18f4431


    ------

    Slt je voudrai configuration l'horloge externe avec PLL du pic i8f4431 mais mplab me dit qu'il ne reconnait pas le registre CONFIG1H..Comment pensez vous que je doit faire.0.g vrément tout fait mais ça ne donne rien est ce que vous avez une idée..merci d'avance.

    -----

  2. Publicité
  3. #2
    kevin8z

    Re : Probleme Programmation Registre CONFIG1H PIC18F18f4431

    Salut,

    Tu utilise MPLABX ?
    Sous celui-ci tu peut configurer via une fenêtre tout les fusibles et ensuite ça t'exporte le code que tu copie colle dans ton programme en entête

  4. #3
    Gotego

    Re : Probleme Programmation Registre CONFIG1H PIC18F18f4431

    Non j'utilise MPLAB 8 voici ma configuration divice:

    #pragma config OSC=HSPLL
    #pragma config FCMEN = OFF
    #pragma config IESO = OFF
    #pragma config PWRTEN = OFF
    #pragma config BOREN = OFF
    #pragma config WDTEN = OFF
    #pragma config WINEN = OFF
    #pragma config T1OSCMX = OFF
    #pragma config HPOL = HIGH
    #pragma config LPOL = HIGH
    #pragma config PWMPIN = ON
    #pragma config MCLRE = ON
    #pragma config PWM4MX = RB5
    #pragma config FLTAMX = RD4
    #pragma config STVREN = OFF
    #pragma config LVP = OFF
    #pragma config DEBUG = OFF
    #pragma config CP0 = OFF
    #pragma config CP1 = OFF
    #pragma config CP2 = OFF
    #pragma config CP3 = OFF
    #pragma config CPB = OFF
    #pragma config CPD = OFF
    #pragma config WRT0 = OFF
    #pragma config WRT1 = OFF
    #pragma config WRT2 = OFF
    #pragma config WRT3 = OFF
    #pragma config WRTB = OFF
    #pragma config WRTC = OFF
    #pragma config WRTD = OFF
    #pragma config EBTR0 = OFF
    #pragma config EBTR1 = OFF
    #pragma config EBTR2 = OFF
    #pragma config EBTR3 = OFF
    #pragma config EBTRB = OFF

    Le probleme je pense que c'est la configuration des registres CONFIG1H:FOSC<3:0> que mplab 8 me dit qu'il ne reconnait pas

  5. #4
    satinas

    Re : Probleme Programmation Registre CONFIG1H PIC18F18f4431

    Salut
    Les registres CONFIGn sont des registres de configuration hardware du pic. La directive pragma config permet de fixer leurs valeurs. Le programmateur ira écrire ces registres situés à la fin de l'espace mémoire du pic.
    En faisant "#pragma config OSC=HSPLL" tu fais Fosc<3:0> = 0110, et cela renseigne les 4 bits bas de CONFIG1H pour configurer l'horloge en HS PLL
    voir la doc hlpPIC18ConfigSet.chm dans le dossier doc de C18
    Dernière modification par satinas ; 08/06/2015 à 13h46.

  6. #5
    Gotego

    Re : Probleme Programmation Registre CONFIG1H PIC18F18f4431

    Merci beaucoup à tous les deux....vous m'avez beaucoup aidé..Est ce que vous avez une idée de comment on configure la periode du module pwm.En fait j'utilise les pwm0 et pwm1 en mode complementaire mais le probleme c'est qu'à la sortie j'obtient pas la frequence desirée...je veux avoir une mli de 10kHz avec l'oscillateur externe de 20MHz donc FOSC= 4*20MHz(4*PLL).j'ai ainsi chargé dans le registre PTPER la valeur 1999 (PTPERH=0b0111 et PTPERL=0b11001111)...je n'obtient pas la bonne valeur à l'oscillo....merci d'avance je compte encore sur vous...je doit rapidement finir ce travail pour pouvoir avant le 15 juin et vrément je n'est plus aucune idée.voici mon programme:

    #include <stdio.h>
    #include <stdlib.h>
    #include "p18f4431.h"
    #include<math.h>
    #include<timers.h>
    #include<pwm.h>
    /////////////////////////////declaration des variables/////////////////////////////////////////////////
    #define rapport_cyclique_max 0.755 //
    #define VAL_14_bit 16383 //2puissance(4)-1: 14bits de rappot cyclique correspond à 1
    float temps=0.0;//La base de temps
    float rapport_cyclique=0.0; //pour le rapport cyclique calcule
    int rapport_cyclique_bin; //rapport cyclique en binaire
    //------------------------------------------configuration DEVICE-----------------------------------------//
    #pragma config OSC=HS
    #pragma config FCMEN = OFF
    #pragma config IESO = OFF
    #pragma config PWRTEN = OFF
    #pragma config BOREN = OFF
    #pragma config WDTEN = OFF
    #pragma config WINEN = OFF
    #pragma config T1OSCMX = OFF
    #pragma config HPOL = HIGH
    #pragma config LPOL = HIGH
    #pragma config PWMPIN = ON
    #pragma config MCLRE = ON
    #pragma config PWM4MX = RB5
    #pragma config FLTAMX = RD4
    #pragma config STVREN = OFF
    #pragma config LVP = OFF
    #pragma config DEBUG = OFF
    #pragma config CP0 = OFF
    #pragma config CP1 = OFF
    #pragma config CP2 = OFF
    #pragma config CP3 = OFF
    #pragma config CPB = OFF
    #pragma config CPD = OFF
    #pragma config WRT0 = OFF
    #pragma config WRT1 = OFF
    #pragma config WRT2 = OFF
    #pragma config WRT3 = OFF
    #pragma config WRTB = OFF
    #pragma config WRTC = OFF
    #pragma config WRTD = OFF
    #pragma config EBTR0 = OFF
    #pragma config EBTR1 = OFF
    #pragma config EBTR2 = OFF
    #pragma config EBTR3 = OFF
    #pragma config EBTRB = OFF
    //-------------------------declaration des fonctions utilisées-----------------------------------------//
    void init(void);
    void acquisition(void);
    void pwm_isr (void);
    void regulation(void);

    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    //----------------------------programme principale-----------------------------------------------------//
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    #pragma code
    void main(void)
    {
    init();
    while(1);
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    //------------------------------ Programme initialisation-----------------------------------------------//
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    void init(void)
    {
    //----------------------oscillator frequency at 80Mhz----------------------------------------------------//
    OSCCONbits.SCS1=0;
    OSCCONbits.SCS0=0;
    INTCONbits.GIE_GIEH=0;
    INTCONbits.PEIE_GIEL=0;
    //------------------------------ Programme init PWM----------------------------------------------------//

    PTCON1=0b01000000;//comptage du pwm vers le bas
    PTCON0=0b00000000;//postscalaire et prescalair à 1 et choix de fosc/4
    PWMCON0=0b00100000;//active PWM0 et PWM1 en mode complementaire//
    PWMCON1=0b00000000;//configurations supplémentaires pour le duty cycle et autres
    //-------------configuration de la frequence de 10kHz--------------------------------------------------//
    PTPERL=0b11001111;
    PTPERH=0b0111;
    PIE3bits.PTIE=1; //interruption base de temps pwm activée
    IPR3bits.PTIP=0; //active l'interruption basse priorité pwm //////////////////
    PIR3bits.PTIF=0; //effaccer le bit d'interruption pwm
    PTCON1=0b11000000;//activer base de temps pwm
    RCONbits.IPEN=1;
    INTCONbits.GIE_GIEH=1;
    INTCONbits.PEIE_GIEL=1;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //------------------------------------------ programme d'interruption--------------------------------------------------//
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #pragma code interruption = 0x18 //declaration du programme d'interruption à l'adresse 0x08
    void HIGHT_isr(void)
    {
    _asm goto pwm_isr _endasm// Bouclage sur le programme d'interruption

    }
    #pragma code// Fin d'interruption, reprise du programme principal
    #pragma interrupt pwm_isr //fonction d'interruption
    void pwm_isr (void)
    {
    if(PIR3bits.PTIF==1)
    {

    if(temps >= 0.01)
    {
    temps=0.0;
    }
    rapport_cyclique=(VAL_14_bit*( 0.5+0.255*sin(2.0*3.14159*50.0 *temps)))/rapport_cyclique_max ;//produit du rapport cyclique et de la commande pour la régulation
    rapport_cyclique_bin=rapport_c yclique;
    PDC0H=rapport_cyclique_bin >> 8;//chargement
    PDC0L=rapport_cyclique_bin;//chargement du rapport cyclique
    temps+=0.0001;
    PIR3bits.PTIF=0;//on remet à 0 le bit de test d'interruption

    }
    }
    eseke vous voyez une erreur oubien savez vous pourquoi j'obtient pas la frequence pwm desirée .merci

  7. A voir en vidéo sur Futura
  8. #6
    kevin8z

    Re : Probleme Programmation Registre CONFIG1H PIC18F18f4431

    Oublis pas que la fréquence de travaille du PIC c'est FOSC / 4. Tu obtient 2.5Khz ?

  9. Publicité
  10. #7
    RISC

    Re : Probleme Programmation Registre CONFIG1H PIC18F18f4431

    Salut GOTEGO,

    Pour ne pas avoir ce genre de problème , il suffit d'utiliser MPLAB X qui génère pour toi les bits de configuration.

    a+
    Ma marotte ? les microcontrôleurs ;=)

Sur le même thème :

Discussions similaires

  1. Probleme Programmation Registre CONFIG1H PIC18F14K22
    Par gigi82000 dans le forum Électronique
    Réponses: 4
    Dernier message: 25/05/2011, 12h39
  2. Config1H pic 18f2525
    Par DonGonis38 dans le forum Électronique
    Réponses: 2
    Dernier message: 03/04/2009, 16h57
  3. probleme registre
    Par minaini dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/08/2008, 21h27
  4. Réponses: 12
    Dernier message: 18/04/2008, 07h08
  5. Problème registre
    Par Fistos dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 04/09/2006, 09h23