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

MPLABX XC8 System initialisation
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1874
Âge : 70
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#1 Message par paulfjujo » jeu. 1 avr. 2021 17:17

bonjour à tous,

je voudrais votre avis sur la façon que MCC réalise l'initialisation system

Code : Tout sélectionner


void SYSTEM_Initialize
(void)
{
   INTERRUPT_Initialize();  // étatit  en 1ere position ?
    PMD_Initialize();
    I2C1_Initialize();
    PIN_MANAGER_Initialize();
    OSCILLATOR_Initialize();
  //  ADCC_Initialize();
    NCO1_Initialize();
    TMR2_Initialize();
    PWM5_Initialize();
    EXT_INT_Initialize();
    TMR1_Initialize();
    UART1_Initialize();
    INTERRUPT_Initialize();  // étatit  en 1ere position ?
}
 



l'ordre des differentes initialisations me parait inapproprié :
j'aurais plutôt mis l'ordre suivant :

PIN_MANAGER_Initialize(); // peut concerner RA6 et RA7
OSCILLATOR_Initialize(); // il faut bien que le MCU oscille , autre que Frequnce par defaut
PMD_Initialize(); // pour les annexes
I2C1_Initialize(); // une fois que les PPS relient les bonnes pins
NCO1_Initialize(); // une fois que les PPS relient les bonnes pins
TMR2_Initialize();
PWM5_Initialize(); // une fois que les PPS relient les bonnes pins
EXT_INT_Initialize();
TMR1_Initialize();
UART1_Initialize(); // une fois que les PPS relient les bonnes pins
I NTERRUPT_Initialize(); // une fois que les acteurs d'interrupt sont déja mis en place


idea ! Votre avis m'interesse ..


nota:
j'ai volontairement inhibé l'init ADC ..qui ne marche pas
remplacée par :

Code : Tout sélectionner


y_Init_ADC1
(void)
{
ADCON0bits.FM = 1; //right justify
ADCON0bits.CS = 1; //ADCRC Clock
ADPCH = 0x01; //RA1 is Analog channel
TRISAbits.TRISA1 = 1; //Set RA0 to input
ANSELAbits.ANSELA1 = 1; //Set RA0 to analog
ADCON0bits.ON = 1; //Turn ADC On
}

-----
 usage ------
     CPrint(" Init ADC EA1\r\n");
   My_Init_ADC1();
   CPrint(" 1024 Mesures et Moyenne ADC EA1\r\n");
   j=0;
     EA1_Avg=0;
     while(j<1024)
     { 
        SQA
=1;  // pour mesure duree acquisition
        ADCON0bits.GO = 1; //Start conversion
        while (ADCON0bits.GO); //Wait for conversion done
         pot_value=  ADRESH<<| ADRESL; //Read result* 
        SQA=0;
        EA1_Avg= EA1_Avg+ pot_value;
        j++;
    }
    EA1_Avg=EA1_Avg>>10;
    F0 = (float)EA1_Avg * ADCRES ;//* 10000;
     Buffer2[0]=0;
     sprintf(Buffer2," j=%05d Moyenne 1024 mesures EA1_Avg=%lu   soit %5.3fV ",j,EA1_Avg,F0);
    Print(Buffer2);
    CRLF1();

 


Nota:a prochaine étape est de remplacer MCC RX interrupt
mon projet MPLABX en cours ... (OK , mais RX interrupt pas encore traitée)
nota:
ADXL345_18F27K42_2021.zip

utilise ADC1,RTC,OLED LCD ,NCO1,PWM5 10 bits..et UART

Nota: module ADXL345 déja utilisé ICI avec 18F26K22 en C18

nota:
:sifflotte: avec MikroC on peut gerer parfaitement l 'interrupt RX
la librairie UART ne gérant pas l'interrupt comme avec MCC
:!!: de quoi devenir chèvre (béééh ) quand on passe de l'un à l'autre ( MikroC et MPLAXB XC8)
sans parler de Necto Studio encore pire que MCC
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aides toi, le ciel ou FantasPic t'aideras

Retourner vers « Langage C »

Qui est en ligne

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