Envío Gratis en compras mínimas de $1200 mxn Enviamos a toda la Republica Mexicana
Buscar

Primer proyecto con el PIC 18F45K50

Es importante cuando se usa un microcontrolador conocer al menos la configuración básica del mismo, es decir lo mínimamente necesario para hacerlo funcionar.

En el caso de los microcontroladores PIC esto se realiza mediante los Bits de Configuración o comúnmente llamados Fusibles (Fuses), la información completa de estos bits se puede encontrar en la hoja de datos (HOJA DE DATOS) en la sección:

26.1 Configuration Bits

En este caso utilizaremos el software MPLAB X que es oficial de Microchip para trabajar con sus microcontroladores y el compilador XC8 para que la programación del PIC sea en lenguaje C.

 

Para crear nuestro primer proyecto deberemos seguir los siguientes pasos:

Paso 1) Crear un nuevo proyecto

  • Para esto deberás abrir MPLAB X y seleccionar File -> New Project

  • Selecciona Microchip Embedded -> Standalone Project.
  • En Device escoge el “PIC18F45K50”.
  • En Select Tool deberás elegir “Simulator”.
  • En Select Compiler escoge “XC8”.
  • Coloca el nombre y ubicación de tu proyecto y da click en Finish.

Paso 2) Agrega un nuevo archivo fuente

  • Para esto deberás dar click derecho en la carpeta del proyecto creado y seleccionar “New -> main.c”

Paso 3) Configuración de fusibles y oscilador

  • Dentro del código podrás utilizar esta configuración base de los fusibles:
#pragma config PLLSEL = PLL4X // PLL Selection (4x clock multiplier)
#pragma config CFGPLLEN = OFF // PLL Enable Configuration bit (PLL Disabled (firmware controlled))
#pragma config CPUDIV = NOCLKDIV// CPU System Clock Postscaler (CPU uses system clock (no divide))
#pragma config LS48MHZ = SYS24X4// Low Speed USB mode with 48 MHz system clock (System clock at 24 MHz, USB clock divider is set to 4)

// CONFIG1H
#pragma config FOSC = HSM // Oscillator Selection (HS oscillator, medium power 4MHz to 16MHz)
#pragma config PCLKEN = ON // Primary Oscillator Shutdown (Primary oscillator enabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF // Internal/External Oscillator Switchover (Oscillator Switchover mode disabled)

// CONFIG2L
#pragma config MCLRE = ON // Master Clear Reset Pin Enable (MCLR pin enabled; RE3 input disabled)

// CONFIG4L
#pragma config STVREN = OFF // Stack Full/Underflow Reset (Stack full/underflow will cause Reset)
#pragma config LVP = OFF // Single-Supply ICSP Enable bit (Single-Supply ICSP enabled if MCLRE is also 1)
#pragma config ICPRT = OFF // Dedicated In-Circuit Debug/Programming Port Enable (ICPORT disabled)
#pragma config XINST = OFF // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#define _XTAL_FREQ 8000000

#include <xc.h>

En caso de que requieras aplicaciones con una configuración específica podrás encontrar en la hoja de datos la información referente a todos los fusibles y las maneras en que estos pueden ser configurados. Para prácticas comunes esta configuración debería serte suficiente.

Paso 4) Escribir tu código

Bien, ya solo falta que escribas tu código para realizar el programa que necesitas. Te dejo un ejemplo que hará parpadear el LED RGB de Miuva cada segundo para que puedas verificar si tu configuración fue correcta.

 

// PIC18F45K50 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1L
#pragma config PLLSEL = PLL4X // PLL Selection (4x clock multiplier)
#pragma config CFGPLLEN = OFF // PLL Enable Configuration bit (PLL Disabled (firmware controlled))
#pragma config CPUDIV = NOCLKDIV// CPU System Clock Postscaler (CPU uses system clock (no divide))
#pragma config LS48MHZ = SYS24X4// Low Speed USB mode with 48 MHz system clock (System clock at 24 MHz, USB clock divider is set to 4)

// CONFIG1H
#pragma config FOSC = HSM // Oscillator Selection (HS oscillator, medium power 4MHz to 16MHz)
#pragma config PCLKEN = ON // Primary Oscillator Shutdown (Primary oscillator enabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF // Internal/External Oscillator Switchover (Oscillator Switchover mode disabled)

// CONFIG2L
#pragma config MCLRE = ON // Master Clear Reset Pin Enable (MCLR pin enabled; RE3 input disabled)

// CONFIG4L
#pragma config STVREN = OFF // Stack Full/Underflow Reset (Stack full/underflow will cause Reset)
#pragma config LVP = OFF // Single-Supply ICSP Enable bit (Single-Supply ICSP enabled if MCLRE is also 1)
#pragma config ICPRT = OFF // Dedicated In-Circuit Debug/Programming Port Enable (ICPORT disabled)
#pragma config XINST = OFF // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#define _XTAL_FREQ 8000000

#include <xc.h>

void main(void) {
TRISE = 0x00;
PORTE = 0x07;
while(1){
PORTE = 0x00;
__delay_ms(1000);
PORTE = 0x07;
__delay_ms(1000);
}
return;
}

¡LISTO!

 

Finalmente deberás cargar tu código a la tarjeta utilizando el software PICkit 2 y de esta manera tendrás tu Miuva trabajando y ejecutando el programa creado.

Como puedes observar no es nada complicado y la única limitación la pone tu imaginación, te invitamos a realizar tus proyectos con este microcontrolador.