Microcontroladores PIC Registros SFR vistos hasta ahora:
Microcontroladores PIC: Timer Características del Timer TMR0: • Cumple básicamente la función de contador de eventos (o divisor de frecuencia). • El contador (de 8 bits) se accede a través del registro TMR0 (01h de la RAM). • Es posible seleccionar entre dos fuentes de clock: - Interna: frecuencia del procesador (ciclos de instrucción). - Externa (a través de RA4, seteado como entrada). • El valor de cuenta puede ser escrito o leído en todo momento. • Permite seleccionar el flanco del clock (en el caso de clock externo). • Genera una interrupción al final de cuenta. • A la entrada de clock se le puede intercalar (o no) un módulo divisor de frecuencia (llamado prescaler).
Microcontroladores PIC: Timer Registros SFR asociados al Timer:
Microcontroladores PIC: Timer Timer: registro de configuración:
Microcontroladores PIC: Programación El proceso de programación: • Para transferir el código desde una PC al PIC se usa un dispositivo llamado programador. • La mayoría de PICs actuales incorporan funciones que permiten realizar la programación directamente en el circuito donde están destinados a trabajar: - ICSP (In Circuit Serial Programming, programación serie en el circuito). - LVP (Low Voltage Programming, programación a bajo voltaje). • Para la función ICSP se usan generalmente los pines RB6 y RB7 como reloj y datos, y /MCLR para activar el modo programación aplicando un voltaje de 13 voltios. • Existen muchos modelos de programadores de PICs, desde los más simples (que dejan al software los detalles de comunicaciones), a los más complejos (que pueden verificar el dispositivo a diversas tensiones de alimentación e implementan en hardware casi todas las funcionalidades). • Muchos de estos programadores complejos incluyen ellos mismos PICs preprogramados como interfaz para enviar las órdenes al PIC que se desea programar.
Microcontroladores PIC: Programación La Palabra de configuración: • Durante el proceso de programación, además de escribirse el programa en la memoria tipo flash correspondiente, también se escribe la llamada palabra de configuración del PIC. • Sirve para activar, desactivar o configurar funciones especiales del µC, tales como: – El tipo de oscilador a usar (cristal, RC, etc.) – WDT activado/desactivado – Protección de código – Etc… • Puede ser modificada solo en el momento de la programación (grabación del programa).
Microcontroladores PIC: Programación Programadores: ejemplos: Uno de los mas simples, el JDM:
Microcontroladores PIC: Programación Programadores: uno mas avanzado, el PicKit2:
Microcontroladores PIC: Programación Algunos clones simplificados del PicKit2:
Microcontroladores PIC: Programación Software básico para grabadores: Funciones necesarias que debe llevar a cabo: - Borrado inicial de la memoria Flash del PIC. - Leer, Grabar y Verificar el código de máquina (provisto en formato *.hex). - Escribir la palabra de configuración. Algunos ejemplos: - Pickit2 (www.microchip.com): gratuito, para el programador del mismo nombre (y sus clones). - Icprog (www.ic-prog.com): de distribución libre, muy popular, sirve para el JDM y otros. - etc.
Microcontroladores PIC Herramientas de desarrollo (para µC): • Tareas necesarias: - Compilar / Ensamblar. - Depurar. - Simular / Emular. - Programar. • Microchip ofrece de forma gratuita el entorno de desarrollo llamado MPLAB (www.microchip.com). • MPLAB incluye: - Un editor para el código fuente (en C o assembler). - Ensamblador. - Compilador de C. - Simulador. - También es posible realizar la programación del PIC (con ciertos programadores).
Microcontroladores PIC • Ejemplos de programas: STATUS TRISB PORTB RP0
EQU EQU EQU EQU
3 6 6 5
; ; ; ;
ORG GOTO
0000 INICIO
; comienzo del Programa
ORG RETIF
0004
INICIO
BSF MOVLW MOVWF BCF
STATUS,RP0 B’00000000’ TRISB STATUS,RP0
; ; ; ;
LOOP
MOVLW MOVWF CALL
B’11110000’ PORTB DELAY
; carga W con el dato a sacar por la puerta B ; saca por PUERTA B el valor del registro W ; demora 0.1 segundos
MOVLW MOVWF CALL
B’00001111’ PORTB DELAY
GOTO
LOOP
END
registro de ESTADO sentido del PORTB dato del PORTB bit de STATUS para cambiar de banco
entramos al bank 1 movemos 00000000b a W configuramos el puerto B como salida volvemos al bank 0