Ceci est un exemple de code source montrant le paramètrage minimal d’un PIC32MX795F512L pour sortir sur RA1 des états hauts d’une longueur d’un temps cycle à 80MIPS. Cela permet ainsi de valider un circuit avec ce composant en vérifiant que :
- Le composant est correctement alimenté.
- L’oscillateur fonctionne et la PLL est correctement configurée.
Pour cela, deux fichiers à ajouter à un projet vierge dans MPLAB avec les compilateurs C32 ou XC32 :
- main.c
#include "HardwareProfile.h"
void CPUInit(void) {
SYSTEMConfigPerformance(SYS_FREQ);
DDPCONbits.JTAGEN = 0; // Disable JTAG
DDPCONbits.TROEN = 0; // Disable trace
PORTSetPinsDigitalOut(IOPORT_A,BIT_1);
}
int main(void) {
CPUInit();
while(1) {
mPORTASetBits(BIT_1);
mPORTAClearBits(BIT_1);
}
return 0;
}
- HardwareProfile.h
#include <p32xxxx.h> #include <plib.h> ////////////////////////////////////////////////////////////////////////////////////////// // Configuration processeur // // // // Informations disponibles dans le fichier d'aide : // // - hlpPIC32MXConfigSet.chm // // - http://ww1.microchip.com/downloads/en/DeviceDoc/61156G.pdf // // page 165 Section 28.1 - Configuration bits // ////////////////////////////////////////////////////////////////////////////////////////// #pragma config FSRSSEL = PRIORITY_0 // Toutes les interruptions utilisent le shadow register #pragma config FMIIEN = OFF // Interface Ethernet en mode RMII pour DP83848 #pragma config FETHIO = OFF // Configuration alternative des signaux du module Ethernet #pragma config FCANIO = ON, FUSBIDIO = OFF, FVBUSONIO = OFF //Autres modules inutilises #pragma config WDTPS = PS1, FWDTEN = OFF #pragma config ICESEL = ICS_PGx1, DEBUG = OFF #pragma config PWP = OFF, BWP = OFF, CP = OFF ////////// Configuration de l'oscillateur pour un quartz de 8MHz externe ///////////////// #pragma config FNOSC = PRIPLL // Choix de l'oscillateur primaire avec utilisation de la PLL #pragma config POSCMOD = XT // Quartz < 10Mhz donc XT #pragma config OSCIOFNC = ON #pragma config FPLLIDIV = DIV_2, FPLLMUL = MUL_20, FPLLODIV = DIV_1 // 80Mips #pragma config UPLLEN = ON, UPLLIDIV = DIV_2 // PLL USB #pragma config FSOSCEN = OFF, IESO = OFF, FCKSM = CSDCMD // Autres parametres de l'oscillateur #pragma config FPBDIV = DIV_1 // Horloge peripherique ////////////////////////////////////////////////////////////////////////////////////////// // Definitions generiques // // // ////////////////////////////////////////////////////////////////////////////////////////// #define SYS_FREQ 80000000UL #define GetPeripheralClock() (SYS_FREQ/(1 << OSCCONbits.PBDIV)) #define GetInstructionClock() (SYS_FREQ)

English