jueves, 10 de mayo de 2012

PROGRAMACION EN C DE LOS PIC 18F4550 Y 18F2550

Los temas que se tratan en este blogger son los siguiente:




1.   Generalidades del PIC 18f4550 y 18f2550
10.Transmisión Serial Asíncrona
11.Transmisión Serial Síncrona I2C


CARACTERÍSTICAS PRINCIPALES
Los PIC 18F2550 y 18F4550 poseen muy pocas diferencias entre si, de las más destacadas se aprecia el numero de puertos, en la tabla 1 se pueden observar las características más importantes.

Tabla 1 Características principales

CARACTERÍSTICA
18F2550
18F4550
Frecuencia de operación
Hasta 48 MHz
Hasta 48 MHz
Memoria de programa
32 Kbytes
32 Kbytes
Memoria RAM
2 Kbytes
2 Kbytes
Memoria EEPROM
256 bytes
256 bytes
Líneas de E/S
24
35
Fuentes de interrupción
19
20
Temporizadores
4
4
Conversor A/D 10 bits
10 canales
13 canales
Comparadores análogos
2
2
Comunicación serial
EAUSART, SPI, I2C
EAUSART, SPI, I2C
Comunicación USB
1
1
Módulos PWM
2
2


A continuacion se muestra en la figura 1 y figura 2 la distribución de los pines para el 18f2550 y 18f4550 respectivamente.

Figura 1: Distribución de pines del 18f2550 (Data sheet)


Figura 1: Distribución de pines del 18f4550 (Data sheet)


CONFIGURACIÓN DEL OSCILADOR PRINCIPAL

Los microcontroladores 18F2550 y 18F4550 poseen un sistema del oscilador principal bastante complejo (ver figura 3), debido al gran número de posibilidades que éste ofrece. Para la selección del cristal, hay que tener en cuenta  que frecuencia de operación del microcontrolador se desea, la máxima permitida es de 48MHz.

Figura 3: Diagrama interno del reloj del microcontrolador(Data sheet)

Si se desea trabajar con una  frecuencia de operación de 48MHz, no necesariamente se requiere utilizar un cristal de esta velocidad, puesto que internamente posee un PLL que aumenta de 4MHz a 96MHz, entonces se puede utilizar cualquier cristal que al ajustar los diferentes  bloques, me proporcione una entrada de 4 MHz al PLL.
Por ejemplo se quiere una frecuencia de operación del microcontrolador a 48MHz, pero solo se tiene un cristal de 12 MHz, la configuración adecuada se muestra en la figura 4.

Figura 4: Configuración para obtener 48MHz a partir de un cristal de 12 MHz


Inicialmente se tiene un cristal de 12 MHz, el cual pasa por un mux, que es controlado por las entradas PLLDIV, estas entradas seleccionan la división por 3, obtenido a la salida del mux 4MHz que es la frecuencia necesaria para que el PLL proporcione 96 MHz, después del PLL pasa por otro mux que es controlado por las entradas CPUDIV, estas seleccionan la división por 2 obteniendo a la salida 48 MHz, que es la frecuencia que finalmente utilizara la CPU para su funcionamiento.


PALABRA DE CONFIGURACIÓN

La palabra de configuración define muchos parámetros necesarios para el buen funcionamiento del microcontrolador, entre ellos se encuentran los bloques del diagrama del reloj, perro guardián, programación a bajo voltaje, tipo de cristal, código de protección, entre otros. A continuación se define la palabra de configuración para utilizar un cristal de 12MHz.

#FUSES HSPLL, PLL3, CPUDIV1, MCLR, NOWDT, NOPROTECT, NOLVP, NODEBUG

En la tabla 2 se pueden apreciar las diferentes nomenclaturas que se utilizan para la selección del cristal, estas dependen de la velocidad de operación y del tipo de oscilador que se desea utilizar.

En la tabla 3 se explican cada una de las partes de la palabra de configuración, ésta puede tener más o menos  elementos dependiendo de los módulos que se estén configurando, cuando el elemento posee un “NO” antes quiere decir que se está deshabilitado, esta palabra también es requerida por el software de programación (PICkit 2). En el caso de ser omitida la palabra de configuración el software envía un mensaje indicando dicha falencia.


Tabla 2: Nomenclatura para los diferentes tipos de cristales

TIPO
DESCRIPCIÓN
XT
Cristales con frecuencia no superior a 4MHz
XTPLL
Cristales con frecuencia no superior a 4MHz con PLL activo
HS
Cristales con frecuencia superior a 4MHz
HSPLL
Cristales con frecuencias superiores a 4MHz PLL activo
EC
Reloj externo con FOSC/4 de salida
ECIO
Reloj externo con I/O en RA6
ECPLL
Reloj externo con PLL activo
ECPIO
Reloj externo con PLL activo y con I/O en RA6
INTHS
Oscilador interno como fuente de reloj del microcontrolador, el oscilador HS  utilizado como fuente de reloj del USB
INTXT
Oscilador interno como fuente de reloj del microcontrolador, el oscilador XT  utilizado como fuente de reloj del USB
INTIO
Oscilador interno como fuente de reloj del microcontrolador, el oscilador EC  utilizado como fuente de reloj del USB, con FOSC/4 de salida RA6
INTCKO
Oscilador interno como fuente de reloj del microcontrolador, el oscilador EC  utilizado como fuente de reloj del USB, I/O en RA6


Tabla 3: Parámetros de la palabra de configuración

DIRECTIVA
DESCRIPCIÓN
HSPLL
HS puesto que se utiliza un cristal mayor de 4MHz, además se debe configurar el PLL para obtener los 48 MHz necesarios para el módulo USB.
MCLR
Significa que el pin 1 del microcontrolador  cumplirá la función de Master Clear
NOWDT
Perro guardián deshabilitado.
NOPROTECT
Código de protección deshabilitado.
NOLVP
Programación a bajo voltaje deshabilitado.
NODEBUG
Depuración In-Circuit deshabilitado.
PLL3
Significa que el PLL prescaler divide en 3 la frecuencia del oscilador principal, esto debido al cristal de 12MHz que utilizamos
CPUDIV1
el PLL postscaler realiza la división en 2 de la frecuencia de salida del PLL de 96MHZ, con el fin de obtener 48MHz  para la ejecución de nuestro programa.



ESTRUCTURA BÁSICA DE UN PROGRAMA

Para la elaboración de un programa en C se deben tener en cuenta algunas partes principales, como son las directivas, funciones, instrucciones y comentarios. En la figura 5 se puede observar las partes básicas de un programa.

 Figura 5: Estructura básica de un programa

En primer lugar se debe incluir la librería del microcontrolador con que se desea trabajar, ésta carga todas las funciones y características correspondientes a dicho microcontrolador.

La palabra de configuración define varios parámetros necesarios para el buen funcionamiento del microcontrolador, como ya se explico anteriormente.

La función delay es ampliamente utilizada para proporcionar tiempos de retardo, ella debe configurarse a la velocidad con que se está ejecutando el programa del microcontrolador, además debe ser definida al inicio del programa debido a que esta función la utilizan muchas otras funciones. 

Las variables denotan una posición de la memoria Ram del microcontrolador, estas se pueden declarar de tipo local y de tipo global, las de tipo local solo se pueden utilizar dentro de la función que se declararon y las de tipo global se pueden utilizar en cualquier función, estas últimas se declaran al inicio del programa como se muestra en la figura 3.

Es aconsejable definir todas las funciones antes de utilizarlas, con fin de evitar inconvenientes en el orden que se ponen las funciones dentro del programa, puesto que para se pueda llamar una función debe ir antes de donde se esta llamando.

Por último se tienen la función principal, la cual es donde inicia el programa, desde allí se gestionan la ejecución de cada una de las diferentes funciones.  


DESCARGAR COMPILADOR CCS

DESCARGAR  MANUAL CCS Y LIBRO PROGRAMACIÓN EN C




3 comentarios:

  1. muy buen trabajo, unas explicaciones muy buenas, estare atento a la comunicacion asincrona y sincrona. Esperando con ansia la relativa al rs485.

    Un saludo!

    ResponderEliminar
  2. super bien felicidadess!! muy bueno el tema y gracias por compartir este conocimiento pues me dispuse a aprender xd suerte

    ResponderEliminar
  3. Gracias por Tu explicacion y tienpo...

    ResponderEliminar