PDF de programación - Entrega 8 - Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Imágen de pdf Entrega 8 - Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Entrega 8 - Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCSgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 23 de Noviembre del 2017)
1.875 visualizaciones desde el 23 de Noviembre del 2017
565,1 KB
15 paginas
Creado hace 11a (11/10/2012)
Aprendiendo a programar
Microcontroladores PIC en
Lenguaje C con CCS

Por Andrés Raúl Bruno Saravia

Entrega Nº 8.

A partir de aquí comenzaremos a usar lo aprendido en los capítulos anteriores. La
única forma de asimilar e incorporar nuevos conocimientos, es poner en práctica lo
que se aprende. Iremos desde lo simple a lo complejo, desde el encendido de un
LED hasta el control por PC de nuestra aplicación o circuito electrónico.

Para trabajar podemos usar un protoboard, sin embargo no soy muy amigo de este tipo
de herramientas ya que es fácil encontrarse con falsos contactos y crear verdaderas
marañas de cables. Es preferible construir un circuito elemental que tenga todos los
periféricos que veremos o en su defecto adquirir ya la placa armada. Si bien el adquirir
algo armado nos quita el sabor del “hágalo usted mismo”, nos permite ganar tiempo.
Otra herramienta que se puede usar es el PROTEUS, sin embargo la virtualización de
un circuito no nos permite afrontar las problemáticas reales, como son los rebotes, ruido
electromagnético, etc.

Yo presentaré el esquema de una placa ideal y aconsejaré la compra de un modelo, sin
embargo queda en el lector el tomar estas ideas u optar por las opciones anteriores que
también son válidas, lo importante es aprender.

Características de los Microcontroladores PIC Línea Media Mejorada
PIC16F1XXX
Microchip es una compañía en constante evolución y renovación, y por ende año tras
año presenta nuevos microcontroladores al mercado y nuevas mejoras en sus
arquitecturas típicas. Hasta el año 2010, los núcleos de los procesadores de Microchip
podían dividirse en 6 familias:

• PIC Linea Base (PIC10F,PIC12F5X y PIC16F5X)
• PIC Línea Media (PIC16F y PIC12F)
• PIC18F
• dsPIC30F/33F
• PIC24F/24H
• PIC32

De todas estas familias, las más antiguas son los PIC Línea Base y PIC Línea Media,
concebidos para ser programados en Lenguaje Assembler, con lo cual las limitaciones
de su arquitectura, también limitan la cantidad de código que se puede escribir en
Lenguaje C dentro del microcontrolador. Es por ello que a partir de la creación de la
familia PIC18F y desde allí en adelante, todos los microcontroladores se
concibieron para trabajar en Lenguaje C.

Sin embargo el mercado de los microcontroladores PIC Línea Media es muy amplio y
para estos usuario Microchip mejoró el núcleo de estos MCU, desarrollando una nueva
generación , a la cual ha bautizado como PIC Línea Media Mejorada, los cuales se
identifican por su código inicial: PIC16F1xxx o PIC12F1xxx.
Esta renovación de los viejos núcleos PIC16F introduce todas las mejoras que han
adquirido los PIC18F con el Tiempo.

Dichas características son las siguientes:

• Memoria de Programa hasta 32K instrucciones
• Memoria de Datos hasta 2K
• Mejora de Periféricos (USART, CCP, PWM , Puertos I/O)
• Inserción de nuevos Periféricos
• Modos de muy bajo consumo
• Mejoras en el Oscilador Interno con un PLL x 4
• Ampliación del Set de Instrucciones
• Ampliación del STACK a 16 niveles
• Salvado automático de contexto
• Control del STACK por medio del usuario
• Mejora del registro FSR y creación de 2 (FSR0 y FSR1)

Todas estas nuevas características hacen de estos PIC los sucesores indiscutibles de la
vieja familia PIC16F con la posibilidad de migración a PIC18F menos abrupta.
Para iniciar en nuestro curso, trabajaremos con el PIC16F1939, el cual reemplaza
tácitamente a los viejos PIC16F877A y con menor costo.

El nuevo PIC16F1939

Este microcontrolador, forma parte de la familia PIC16F193X, la cual esta constituida
por los siguientes dispositivos:

• PIC16F1933 (equivalente a un PIC16F873A)
• PIC16F1934(equivalente a un PIC16F874A)
• PIC16F1936(equivalente a un PIC16F876A)
• PIC16F1937(equivalente a un PIC16F877A)
• PIC16F1938(equivalente a un PIC16F876A pero con mas memoria)
• PIC16F1939(equivalente a un PIC16F877A pero con mas memoria)

El PIC16F1939 es el más caro de la familia, sin embargo es más económico que su
antecesor el PIC16F877A. Con esta política Microchip pretende seducir a sus
consumidores para que abandonen sus aplicaciones emplazadas con las viejas unidades
PIC16F y migren a los PIC16F1XXX .

Cuando migramos un desarrollo emplazado con PIC16F877A a un PIC16F1939 no solo
ganamos en el costo sino que al mismo tiempo tenemos el doble de memoria de
programa y mucha más memoria de datos, lo cual nos permitirá ampliar nuestra
aplicación. En la siguiente figura vemos las características más destacables de estas
unidades.

El PIN-OUT del PIC es el siguiente:

El ABC del Hardware elemental del PIC

Comencemos por decir que el Microcontrolador por ser una máquina secuencial,
necesita para funcionar de un generador de pulsos de onda cuadrada, a los cuales se
denominan pulsos de clock. Dichos pulsos pueden ser generados de 3 formas diferentes:

• Usando un Oscilador de Onda Cuadrada Externo (EC)
• Usando un resonador, Cristal de cuarzo o red RC colocada en OSC1 y OSC2
• Usando el Oscilador interno del Microcontrolador.

En los nuevos PIC16F1939, el módulo generador de clock presenta la siguiente
arquitectura interna:

Las fuentes generadoras del clock para alimentar la CPU y los Periféricos pueden ser
distintas:
Si usamos un cristal o un resonador externo, este lo podemos conectar entre los
terminales OSC1 y OSC2. En caso de usar cristales, estos deben ser configurados en los
bits de configuración como HS, XT o LP, según el rango de frecuencias donde trabajen.
Para esto Microchip nos da una tablita de referencia:

En estos casos el hardware se realizará no solo conectando el respectivo cristal entre los
terminales, sino también 2 capacitores del tipo cerámico, preferentemente NP0 respecto
a masa, para estabilizar la frecuencia, y eliminar armónicos indeseados.

Los nuevos PIC incorporan un juego de 3 osciladores internos, denominados
HFINTOSC de 16MHz, MFINTOSC de 500KHz y LFINTOSC de 31KHz. De estos
por medio de un divisor de frecuencia programable, podemos obtener distintas
frecuencias para excitar a la CPU y los periféricos. E incluso es posible derivar la salida
del divisor de 8 MHz , para pasarla por el PLL y de esta forma tener 32 MHz de
frecuencia de clock. En esta modalidad la CPU puede alcanzar su velocidad máxima de
procesamiento para estos micros; 8 MIPS (8 Millones de Instrucciones Por Segundo).

Esta opción del PLL no solo la activamos para el oscilador interno sino también para los
cristales externos, sin embargo debe cuidarse de no superar los 32Mhz internos al CPU.
Otra de las opciones internas que tiene este microcontrolador es la posibilidad de activar
el BROWOUT RESET, el cual reseteará el microcontrolador en caso de detectar una
variación de la tensión de alimentación del microcontrolador.

Además en los nuevos PIC es posible conmutar el oscilador en el momento de arranque,
para ello existe un fusible de configuración mediante llamado IESO el cual habilita la
conmutación o no.
La conmutación de la fuente del oscilador se usa por lo general cuando se quiere ahorrar
energía, por ejemplo, se arranca en el modo de cristal externo de alta velocidad, y luego
se pasa al oscilador interno de baja frecuencia.

En este caso el sistema utiliza un bit denominado SCS (System Clock Select ), el cual se
encuentra dentro de un registro interno que controla al oscilador y que se denomina
OSCCON. Este bit permite realizar la conmutación por software desde el oscilador
externo al interno y viceversa.

Por lo general, excepto que se este diseñando una aplicación donde se debe ahorrar al
máximo los recursos de energía, la opción del IESO no se utiliza.
Otro recurso novedoso es el detector de la falla del oscilador primario o externo FSCM
(Fail-Safe Clock Monitor). Este modulo, cuando se activa, monitorea el oscilador
primario (LP, XT,HS, EC, RC y el Oscilador del Timer1). Para ello compara este
oscilador con la señal de clock de 31Khz del LFINTOSC. Si el oscilador externo llegase
a “perder pulsos de clock”, esto será detectado por el FSCM, lo cual activará una
bandera indicadora denominada OSFIF (Oscilador Fail Interrupt Flag), la cual si se
encuentra debidamente habilitada por medio del bit OSFIE, generará una interrupción,
mediante la cual se puede conmutar hacia el oscilador interno usando el bit SCS
mencionado anteriormente y pasar a trabajar con el oscilador interno HFINTOSC
seteado en algún valor de frecuencia por medio del divisor de frecuencia programable.

Todas estas características pueden ser habilitadas o no, mediante el correcto seteo de los
fusibles de configuración usando la directiva #FUSES.

Dentro de la carpeta PICC del compilador encontraremos una carpeta denominada
DEVICES, dentro de la cual encontraremos los archivos de cabecera que contienen
todas las etiquetas para manejar los microcontroladores PIC de forma sencilla y
configurar todas las opciones vistas. Existe un archivo de cabecera por cada micro:

Dentro de este archivo podemos ver el conjunto de etiquetas que nos permiten setear
estas opciones parra configurar los fusibles de configuración desde el código, usando la
directiva #FUSES:

Estas etiquetas pueden cambian entre microcontroladores porque no todos tienen las
mismas opciones de configuración, de hecho algunas de las que mencionamos son
exclusivas de los PIC16F1XXX y PIC18F, mientras que en los PIC16F convencionales
no se encontrarán. Por ello es buena práctica que a nuestros proyectos le adjuntemos el
archivo de cabecera de nuestro microcontrolador, a modo de consulta:

Para asimilar estos conceptos vamos a aplicarlos en un proyecto inicial, el cual consiste
e leer 3 pulsadores y accionar 3 leds.
En este caso configuraremos las opciones de los fusibles de configuración de la
siguiente manera:

• Oscilador: Usaremos el Interno a una frecuencia de 4 MHz
• FSCM: No lo usaremos pues trabajamos con oscilador interno

IESO: tampoco lo usaremos por la misma razón que el anterior
• WatchDog Timer: Lo desactivado ya que es una aplicación no comercial
• Power Up Timer: Lo activa
  • Links de descarga
http://lwp-l.com/pdf7651

Comentarios de: Entrega 8 - Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad