Microchip DsPIC30F4012

Ceci est un exemple de code source montrant le paramètrage minimal d’un DsPIC30F4012 pour sortir sur RE0 des états hauts d’une longueur d’un temps cycle à 20MIPS à partir d’un quartz externe de 5MHz. 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, un fichier à ajouter à un projet vierge dans MPLAB avec les compilateurs C30 ou XC16 :

#include <p30fxxxx.h>;

_FOSC(CSW_FSCM_OFF && XT_PLL16);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF && MCLR_EN);
_FGS(CODE_PROT_OFF);
_FICD( ICS_PGD );

int main(void) {
	OSCCONbits.POST = 0b01; // Datasheet page 7-14
	TRISE = 0; // Port E en sortie
	LATE = 0; // Initialisation du port E à 0

	while(1) {
		LATEbits.LATE0 = 1;
		LATEbits.LATE0 = 0;
	}

	return 0;
}

Microchip PIC32MX795F512L

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)

    Microchip 12F683

    Ceci est un exemple de code source montrant le paramètrage minimal d’un PIC12F683 pour sortir sur GPIO2 des états hauts d’une longueur d’un temps cycle soit 500ns (8MHz = 2MIPS). Cela permet ainsi de valider un circuit avec ce composant en vérifiant que :

    • Le composant est correctement alimenté.
    • L’oscillateur fonctionne.

    Pour cela, un fichier à ajouter à un projet vierge dans MPLAB avec les compilateurs Hi-Tech PICC :

    #include <htc.h>
    
    /////////// Bits de configuration : Voir datasheet page 84, 12.1 Configuration bits //////////////
    __CONFIG(FCMEN_OFF \
           & IESO_OFF \
           & BOREN_OFF \
           & CPD_OFF \
           & CP_OFF \
           & MCLRE_ON \
           & PWRTE_ON \
           & WDTE_OFF \
           & FOSC_INTOSCIO);
    
    void main(void) {
        //// Configuration de l'oscillateur interne (datasheet page 20, 3.2 Oscillator control) //////////
        OSCCONbits.IRCF = 0b111;   // 8Mhz
        OSCCONbits.SCS = 0;        // Configuration de l'horloge systeme
                                   // définie par les bits de configuration
    
        ///// Configuration de entrees/sorties numeriques ////////////////////////////////////////////////
        ANSELbits.ANS2 = 0;        // GPIO2 est numerique
        TRISIObits.TRISIO2 = 0;    // GPIO2 est une sortie
    
        while(1) {
            GPIObits.GP2 = 1;
            GPIObits.GP2 = 0;
        }
    }