You are on page 1of 78

Victronics Ltda

Microcontroladores PIC18

PIC18 - Caracterstica Generales


La serie de microcontroladores PIC18 es una mejora de la arquitectura presente en la familia PIC16 y PIC17 77 instrucciones Arquitectura orientada al uso de Lenguaje C Memoria de programa lineal hasta 2Mbytes Memoria de datos hasta 4Kbytes Capacidad de proceso hasta 10MIPS Clock: DC - 40Mhz Instrucciones de 16 bits y datos de 8 bits Niveles de prioridad para las interrupciones Multiplicador por hardware de 8x8 bits

PIC18 - Perifricos
Pines soportan hasta 25mA en modo sink/source Hasta 4 pines para interrupciones externas Hasta 3 timers de 16 bits Hasta 2 timers de 8 bits Timer 1 con oscilador LP Hasta 5 mdulos CCP, configurables como Entradas de captura de 16 bits de resolucin Modo Comparador de 16 bits de resolucin Salida PWM hasta 10 bits de resolucin 156Khz Max con 8 bits de resolucin 39Khz max con 10 bits de resolucin Puerto MSSP que puede ser configurado como Puerto Serial SPI - 3 hilos. Soporta los 4 modos Puerto I2C Master y Slave Puerto serial USART direccionable Puerto Paralelo PSP Conversor Anlogo Digital 10 bits Hasta 16 canales

PIC18 - Perifricos
Detector de bajo voltaje programable (LVD) Genera interrupcin Brown Out Reset Proramable (PBOR) Comparadores analgicos Programacin Serial en Circuito (ICSP) Protecciones Power On Reset (POR) Power Up Timer (PWRT) Oscilator Start Up Timer (OST) WatchDog timer con oscilador RC propio Proteccin de Cdigo Generales Alimentacin: 2.0V - 5.5V Rango temperatura Comercial: 0-70C Industrial: -40C a 85C Extendido: -40C a 125C 18 a 80 pines

PIC18 - Micros disponibles

Organizacin de Memoria

PIC18 - Organizacion de Memoria


Los PIC18 tienen 3 bloques de memoria Memoria de Programa Flash/Rom Memoria de Datos RAM Memoria de Datos E2prom La memoria de datos y de programa tienen buses separados, lo que permite accesos a ambas zonas en un mismo ciclo de mquina. Adems de la zona memoria Flash/Rom, algunos componentes de la serie PIC18 pueden acceder a memoria externa para programa utilizando buses dedicados

Organizacin de Memoria Memoria de Programa

PIC18 - Memoria de Programa


La serie PIC18 tiene un PC (Contador de programa) de 21 bits, lo que le permite direccionar hasta 2Mbytes de memoria de programa El Vector de Reset se encuentra en la direccin 0000h Los Vectores de Interrupcin se encuentran en las direcciones 0008h y la 0018h La memoria de programa es plana, por lo que no posee bancos

PIC18 - Memoria de Programa/Modos


Algunos PIC pueden acceder a memoria externa y la cantidad de memoria de programa disponible es administrable, de esta forma, los micros pueden trabajar en 4 modos distintos MP MPBB MC EMC Modo Microprocesador Modo Microprocesador con Boot Block Modo Microcontrolador Modo Microcontrolador Extendido

PIC18 - Memoria de Programa/Modos


Modo Microprocesador Permite acceso solamente a la memoria de programa externa y el contenido de la memoria flash interna es ignorado. Puede acceder hasta 2Mbytes de memoria Modo Microcontrolador Permite acceso solamente a la flash interna la cual depende el uC en particular Modo Microprocesador con Boot Block Permite acceso a las direcciones 0000h a la 01FFh de la flash interna. Por sobre esta direccin, la memoria de programa es externa hasta 2Mbytes. Modo Microcontrolador Extendido Permite acceso a la memoria de programa interna y externa como un solo bloque de memoria.

PIC18 - Memoria de Programa/PC


El PC especifica la direccin de la memoria de programa que se est ejecutando Tiene una longuitud de 21 bits por lo que puede direccionar hasta 2Mbytes Se divide en 3 partes PCL Bits 0-7. Es escribible y leble porque est mapeado en ram. PCH Bits 8-15. Puede ser accedido en forma indirecta a travs de registro PCLATH PCU Bits 16-20. Puede ser accedido en forma indirecta por medio del registro PCLATU El PC direcciona bytes en la memoria de programa (no palabras) por lo que se incrementa dos posiciones a la vez (2 bytes = 1 palabra de instruccin). Las instrucciones CALL, RCALL, GOTO y las instruciones de saltos, escriben el PC completo directamemte, por lo que el PCLATH/PCLATU no son transferidos al PC Por otro lado, el contenido del PCLATH/PCLATU son transferidos al PC cuando se ejecuta alguna instruccin que escriba el PCL De forma similar, los dos bytes superiores del PC sern transferidos a los registros PCLATH/PCLATU cuando el PCL es ledo (muy til en saltos computados)

PIC18 - Memoria de Programa/Stack Pointer (SP)


El Stack Pointer se comporta como una RAM de 31 pocisiones de 21 bits cada una + un puntero de 5 bits. El SP no utiliza RAM ni ROM, sino que es una zona de memoria totalmente independiente. El SP es totalmente escribible y leble por el usuario . El PC es puesto (Pushed) en el SP cuando se ejecutan las instrucciones Call o RcalL. Por el contrario, el contenido del SP es puesto en el PC (Poped) cuando se ejecutan las instrucciones Return, Retlw o Retfie. Durante la ejecucin de instrucciones tipo Call, que causan un Push en el SP, este es incrementado automticamente, y la pocisin del SP apuntada por los bits STKPTR<SP4:SP0> es escrita con el contenido del PC Durante la ejecucn de instrucciones tipo Return, que causan un Pop del SP, el contenido de la pocisin del SP apuntada por los bits STKPTR<SP4:SP0>, es transferido el PC y el SP es decrementado automticamente.

STKFUL Flag de SP lleno 1 = SP lleno 0 = An no lleno STKUNF Flag de Underflow del SP 1 = Un underflow ha ocurrido 0 = no hay underflow SP4:SP0 Bits de localizacin del SP 00000 = Pocisin 0 del SP 00001 = Pocisin 1 del SP 00010 = Pocisin 2 del SP . . 11111 = Pocisin 31 del SP

PIC18 - Memoria de Programa/Stack Pointer (SP)


El TOS (Top of Stack) es leble/escribible por el usuario. Para ello se hace uso de 3 registros especficos que mantienen el contenido de la pocisin del SP apuntada por los bits STKPTR<SP4:SP0> : TOSU, TOSH, TOSL, los tres mapeados en ram Esto permite al usuario implementar tcnicas de Stack por software Despus de la ejecucin de las instrucciones Call, Rcall, o de una interrupcin, el usuario puede leer los valores contenidos en el SP, leyendo los registros TOSU, TOSH y TOSL. Estos valores pueden ser puestos en una zona de memoria definida como un SP por software. En el momento del retorno, el usuario puede reemplazar los valores de los TOSx y luego hacer un Return para cambiar la direccin de retorno. El usuario debe deshabilitar las interrupciones globales durante este proceso, para evitar alteraciones del SP.

Despus de que se han llenado todas las pocisiones del SP sin hacer un POP de ninguna de ellas, el flag STKPRT<STKFUL> es puesto y slo puede ser limpiado por software o mediante un POR Lo que suceda con el SP luego de su rebalse, depender del estado del bit CONFIG4L<STVREN>. Si el STVREN est puesto (defecto), en el ltimo Push al SP (11111), provocar que el PC sea respaldado en el SP, el flag STKFUL ser puesto y se provocar un RESET del uC. El flag STKFUL seguir puesto y el SP apuntar a la direccin 00000. Si el STVREN = 0, el STKFUL ser puesto en el ltimo push del SP (11111). Un Push adicional no sobreescibir la pocisin 31 del SP y los bits STKPTR<SP4:SP0> permanecern el 31 (11111) Cuando el SP es descargado (POPed) totalmente , el siguiente POP retornar un 0 al PC y el flag STKPTR<STKUNF> ser puesto.

PIC18 - Memoria de Programa/Push y Pop


Como el TOS es leble y escribible, esto permite la manipulacin de SP poniendo (Push) y descargando (Pop) datos de el. Al ejecutar la instruccin PUSH, el SP automticamente es incrementado y cargado con el valor actual del PC + 2 Adems, los registros TOSU, TOSH y TOSL pueden ser modificados para poner una direccin de retorno en la pocisin del SP apuntada por el STKPTR. La instruccin POP decrementa el valor actual del STKPTR, descargando el valor actual del TOS, con lo que el valor previamente almacenado en el SP quedar ahora como el TOS. Este valor descargado no se pierde, sino que simplemente ya no es el TOS
Corregir programa

PIC18 - Reset por Full/Underflow del SP


Estos Resets son habilitables por medio del bits de configuracin CONFIG4L<STVREN> . Cuando el STVREN est deshabilitado, los flags de STKFUL y STKUNF sern puestos segn corresponda, pero el micro no ser reseteado Cuando el STVREN est habilitado, los flags correspondientes tambin sern puestos, pero adems provocarn un RESET del micro Estos flags pueden ser limpiados por software o por medio de un POR

PIC18 - Memoria de Programa/Fast Register Stack


El Fast Register Stack es una opcin que permite respaldar el valor de los registros STATUS, BSR y W automticamente en sus respectivos Shadow Register cuando la CPU reconoce una interrupcin de alta o baja prioridad. STATUS STATUSS BSR BSRS WREG WS El respaldo es de slo un nivel. Si una interrupcin de Alta Prioridad ocurre mientras se est procesando una de baja prioridad, los valores previamente almacenados por la interrupcin de baja prioridad, sern reemplazados. Cuando no se estn utilizando interrupciones, el Fast Register Stack, puede ser utilizado para respaldar el estado de estos registros ante los llamados a sub-rutinas. Para hacer uso del Fast Register Stack en los llamados a sub-rutinas es necesario hacer un FAST CALL y luego un FAST RETURN, por medio de los instrucciones CALL,FAST y RETURN,FAST.

PIC18 - Goto Computado


Hay dos tcnicas para el manejo de tablas de datos. Una de ellas es llamada GOTO COMPUTADO Permite, mediante la manipulacin del PC, acceder a una tabla de datos almacenada en la memoria de programa Cada dato de la tabla corresponde a una instruccin RETLW DATO Un valor offset almacenado en W, es sumado al PC para provocar un salto calculado a una pocisin en la tabla de datos.

PIC18 - Goto Computado/Ejemplo

RB0 RB1 RB2 RB3 RB4 RB5 RB6

A B C D E F G

A F G B

CLRF PCLATH MOVF Valor del Display,W CALL DecodificaSieteSegmentos MOVWF PORTB GOTO Continua DecodificaSieteSegmentos ADDWF PCL,F RETLW B00111111 ;Decodifica 0 RETLW B00000110 ; Decodifica 1 RETLW B01011011 ; Decodifica 2 RETLW B01001111 ; Decodifica 3 RETLW B01100110 ; Decodifica 4 RETLW B01101101 ; Decodifica 5 RETLW B01111101 ; Decodifica 6 RETLW B00000111 ; Decodifica 7 RETLW B01111111 ; Decodifica 8 RETLW B01101111 ; Decodifica 9 Continua . . .

PIC16xxx PIC18xxx

E D

PIC18 - Table Read/Table Write (TLBRD/TLBWT)


Un mtodo ms eficiente de almacenar datos en la memoria de programa, es el uso de las tablas de lecturas/escrituras Permite almacenar 2 bytes por palabra de instruccin TBLPRT
TABLAT

TBLRD TBLWT

Registro Puntero de memoria de programa para tablas de datos (22 bits) Registro que contiene el byte que fue ledo o el que sern escrito (8 bits) Instruccin de lectura de tablas de datos Instruccin de escritura de tablas de datos

La memoria de programa es de 16 bits, mientras que la Ram es de 8 bits. Las instrucciones TBLRD/TBLWT mueven datos entre estas dos zonas de memoria

PIC18 - Table Read/Table Write (TLBRD/TLBWT)


Pueden ser escritos datos o instrucciones El registro TBLPRT, est compuesto por tres registros
TBLPTRU TBLPTRH TBLPTRL Bits 16- 21 Bits 8-15 Bits 0-7

Los 21 primeros bits direccionan hasta 2Mbytes de memoria de programa. El 22 bits, se usa para acceder a los Bits de Cofiguracin

Organizacin de Memoria Memoria Externa

PIC18 - Memoria de Programa/Externa


Permite el acceso a memoria externa tales como eprom, flash o sram Utiliza 27 pines. Cuando se configura en uC para acceder a memoria externa, 4 puertos I/O se comportan como bus de datos/direcciones Control de tiempos de espera programables por software (para memorias lentas) Modos de funcionamiento (8/16 bits) programable por software

Modo 8 bits

PIC18 - Memoria de Programa/Externa


Modo 16 bits Byte Write

Modo 16 bits Word Write

Organizacin de Memoria Ram

PIC18 - RAM
La memoria de datos est dividida hasta en 15 bancos de 256 bytes cada uno El registro BSR es utilizado para seleccionar uno de los 15 bancos. Para ello, slo los 4 bits LSBs estn implementados La Ram est compartida con los SFRs y la ram disponible para el usuario (GPRs) Los SFRs comienzan su localizacin en la ltima posicin del banco 15 (0FFFh) y hacia abajo y los GPRs estn ubicados desde la primera posicin del banco 0 (0000h) Toda la Ram puede ser accedida en forma directa o indirecta. El acceso en forma directa se realiza utilizando el puntero BSR y el acceso en forma indirecta hace uso del punteros FSRn y el registro INDFn

PIC18 - RAM/Access Bank


Uno de los problemas ms comunes en la arquitectura de los PIC16 era su organizacin de memoria RAM. Los SFRs y los GPRs estaban agrupados en bancos de ram y para acceder a ellos, era necesario utilizar 2-3 instrucciones. Una que seleccionaba el banco donde estaba el registro, y otra que operaba con el registro La arquitectura de los PIC18 permite el acceso a las posiciones de ram ms utilizadas (SFRs/GPRs) en una sola instruccin, independientemente del valor actual del puntero BSR El Access Bank es una mejora en la arquitectura para hacer ms eficiente el uso de compiladores C y mejorar el acceso a los SFRs El Access Bank est compuesto las 128 pocisiones ms altas del banco 15 de ram (SFRs) + las 128 pocisiones ms bajas del banco 0 de ram. Estas secciones de ram son conocidas como Access Ram High y Acces Bank Low Access Bank Low Pocisiones 00h - 7Fh Banco 0 Access Bank High Pocisiones 80h - FFh Banco 15 El bit a en las instrucciones define si las operaciones sern realizadas en el banco especificado por el BSR o en el Access Bank

PIC18 - RAM /Access Bank


Si a = 0, en la instruccin, la operacin es realizada en las posiciones de memora dentro del Accesss Bank. Esto permite fcil acceso a los SFRs, a los bits de control y a ciertas posiciones de ram (00-7F del banco 0), sin necesidad de instrucciones adicionales Si a = 1, las operaciones de realizarn en las pocisiones de ram apuntadas por el registro BSR (banco 0 - 15) La instruccin movlb k carga directamente el registro BSR

PIC18 - RAM/SFRs

PIC18 - RAM/Direccionamiento Directo


El direccionamiento directo de la ram se realiza por medio de los bits punteros BSR <3:0>, que seleccionan el banco de ram al que se acceder, lo que permite direccionar hasta 4Kbytes de ram Los bits BSR<7:4> no estn implementados El BSR permite direccionar hasta 15 bancos de 256 bytes cada uno En los PIC16 esta funcin la realizaban los bits STATUS<RP1:RP0>, lo que limitaba la ram a 4 bancos de 128 bytes cada uno (512 bytes) La instruccin movff f1,f2 ignora el estado del puntero BSR, dado que la instruccin misma permite direccionamiento de hasta 12 bits (4Kbytes)

PIC18 - RAM/Direccionamiento Indirecto


El direccionamiento indirecto es un modo de direccionamiento para datos en ram que no tienen una posicin fija o cuyo acceso implican muchas instrucciones. Se utiliza un registro como puntero de ram (FSRn) y otro como operador (INDFn). Estos registros son muy tiles cuando se desea trabajar con tablas de datos Cualquier instruccin que utilize el registro INDFs, en realidad afectar a la direccin de ram apuntada por los FSRs Los registros FRSs permiten direccionar toda la ram, ya que son de 12 bits, por lo que a su vez, estn formados por 2 registros: FSRxH:FSRxL de 8 bits cada uno Hay tres registros FSR y tres registros INDF FSR0 compuesto por FSR0H:FSR0L INDF0 FSR1 compuesto por FSR1H:FSR1L INDF1 FSR2 compuesto por FSR2H:FSR2L INDF2 Cualquier operacin de lectura/escritura sobre el registro INDF0, afectar a la direccin apuntada por el FSR0. Lo mismo ocurre con los dems registros. Los registros FSRs son registros fsicos y estn mapeados en ram, pero los registros INDFs no son registros fsicos, por lo que no se encuentran mapeados y no son accesibles

PIC18 - RAM/Direccionamiento Indirecto


Cada FSR tiene asociado un INDF + 4 registros adicionales. Estos registros permiten realizar funciones previas y posteriores al acceso indirecto de una pocisin de memora De acuerdo al uso de estos registros asociados en la instruccin, podemos realizar automticamente las siguientes funciones antes o despus del acceso a una pocisin de memoria. Operador Efecto INDFn Sin cambio: El registro FRSn no es afectado de forma alguna despus de un acceso indirecto a memoria POSTDECn Post-Decremento: Auto-decrenenta el FRSn despus de un acceso indirecto a memoria POSTINCn Post-Incremento: Auto-increnenta el FRSn despus de un acceso indirecto a memoria PREINCn Pre-Incremento: Auto-increnenta el FRSn antes de un acceso indirecto a memoria PLUSWn Sin cambio: Utiliza el valor contenido en WREG como un offset para el FSRn, pero no modifica el valor del WREG o el FSRn despus del acceso indirecto Cuando se utilizan las opciones de auto-incremento o auto-decremento, el registro STATUS no es afectado De esta forma los FSRs pueden ser utlizados para acceso a ram y como Stack Pointer

PIC18 - Direccionamiento Indirecto/Ejemplo

Caractersticas Especiales Interrupciones

PIC18 - Caractersticas Especiales/Interrupciones


Los PIC18 tienen mltiples fuentes de interrupcin tanto internas como externas 000008h Vector de interrupcin para interrupciones de Alta prioridad 000018h Vector de interrupcin para interrupciones de baja prioridad Hay mximo 13 registros asociados a las interrupciones RCON PIR1, PIR2, PIR3 INTCON PIE1, PIE2, PIE3 INTCON2/3 IRP1, IRP2, IRP3 Cada fuente de interrupcion tiene asociado tres bits de control Bit Flag Que indica que una interrupcin ha ocurrido Bit Habilitacion Bit que habilita la interrupcin Bit Prioridad Bit que define la prioridad de la Interrupcin El usuario puede definir por software que interrupciones sern de Alta/baja Priridad. Para ello el bit RCON<IPEN> debe ser puesto. Una vez que RCON<IPEN>: INTCON<GIEH> Habilita todas las interrupciones de alta prioridad INTCON>GIEL> Habilita todas las interrupciones de baja prioridad Los registros PIE1/2/3 + los del INTCON habilitan/deshabilitan las interrupciones particulares Los registros IRP1/2/3 + INTCON2/3 definen que interrupciones sern de alta o baja prioridad Los registros PIR1/2/3 + INTCON/3 contienen los flasg de interrupciones

PIC18 - Caractersticas Especiales/Interrupciones


Cuando RCON<IPEN> = 0 (valor por defecto), las prioridades de las interrupciones son deshabilitadas y las interrupciones son compatibles con la lgica de interrupciones de los PIC16. Se dice que el micro esta en Modo Compatibilidad En Modo Compatibilidad: El bit INTCON<GIE> sigue siendo el bit de habilitacin/deshabilitacin de interrupciones globales. El bit INTCON<PEIE> sigue siendo el bit de habilitacin/deshabilitacin de interrupciones perifricas El Vector de Interrupcin cambia: 0004h 0008h Cuando una interrupcin es reconocida, el bit GIEx es limpiado En Modo Compatbilidad el bit GIE = 0 Modo Prioridad, el bit GIEH o GIEL es limpiado, dependiendo de la prioridad.

PIC18 - Caractersticas Especiales/Interrupciones


Una interrupcin de alta prioridad puede interrumpir una de baja prioridad Una vez reconocido el tipo de interrupcin, la direccin de retorno es respaldada en el SP y el PC es cargado con el Vector de Interrupcin correspondiente. Los registros Wreg, STATUS y BSR son respaldados en los registros Shadow Una vez en la Rutina de Interrupcin, se puede detectar cual fue la fuente de interrupcin, haciendo un pulling a los flags de interrupcin El flag de interrupcin debe ser limpiado por software antes de salir de la rutina de interrupcin. La instruccin RETFIE restituye el estado del bit GIEx y del PC y rescata la direccin de retorno.

PIC18 - Fuentes de Interrupciones


Fuentes de Interrupciones Externas Pin RBO/INT0 Pin RB1/INT1 Pin RB2/INT2 Pin RB3/INT3 PORTB <7:4> Fuentes de Interrupciones Internas Timer 0, 1, 2, 3, 4 Mdulos CCP1, 2, 3, 4, 5 Puerto serial MSSP Usart1, 2 CAD Comparadores Modulo dd Deteccin de Bajo Voltaje

Caractersticas Especiales Multiplicador Por Hardware

PIC18 - Caractericticas Especiales/Multiplicador por HW


Un multiplicador de 8x8 bits por hardware viene incorporado en los PIC18 Permite realizar multiplicaciones sin signo en un solo ciclo de mquina El resultado de la multiplicacin es un n de 16 bits, el que queda almacenado en los registros PRODH:PRODL Dos instrucciones de multiplicacin son parte del set de instrucciones MULLW k ( Wreg ) x k PRODH:PRODL MULWF f,a ( Wreg ) x ( f ) PRODH:PRODL Si a = 0, f debe estar en el Access Bank Si a = 1, f es apuntado por el registro BSR Multiplicacin 8x8 bits sin signo movf ARG1,W ;carga primer argumente en Wreg mulwf ARG2,0 ;(Wreg) x (ARG1) PRODH:PRODL Multiplicaciones de 8x8 econ bit de signo es posible solo por software

Caractersticas Especiales Osciladores

PIC18 - Caractersticas Especiales/Osciladores


Tipos de Osciladores LP XT HS HS+PLL RC RCIO EC ECIO 32-200Khz 100Hz - 4Mhz. 4Mhz - 25Mhz 40Mhz Max 4Mhz Max 4Mhz 40Mhz Max 40Mhz Max Cristal bajo consumo. Cristal o Resonador Alta velocidad o resonador HS con PLL habilitado Malla RC externa RC Interno son salida clock Clock Externo EC con salida de clock

PIC18 - Caractersticas Especiales/Osciladores


OSCILADOR HS/XT/LP RC EXTERNO

EC/ECIO

HS + PLL

Caractersticas Especiales Proteccin de Memoria

PIC18 - Proteccin de Memoria


Para los efectos de proteccin de la memoria de programa, esta est dividida hasta en 8 bloques de memoria. La cantidad de bloques y el tamao de cada uno de ellos, depende del uC (ver datasheet particular) Cada uno de estos bloques de memoria, tiene asociado 3 bits de proteccin Bit de proteccin de Cdigo (CPx) Bit de proteccin contra escritura (WRTx) Bit de proteccin de lectura mediante instrucciones TBLRD (EBTRx) Los bits de proteccin de cdigo se encuentran en los registros CONFIG5L, e impiden que el cdigo pueda ser ledo o escrito por cualquier medio Los bits de proteccin contra escritura, se encuentran en el registro CONFIG6L, e impiden que estas zonas puedan ser escritas, pero si pueden ser ledas Los bits de proteccin contra lectura usando TBLRD, se encuentran en los registros CONFIG7L y CONFIG7H, e impiden la lectura de datos desde otro bloque. Solo permite lecturas de datos en el mismo bloque

Caractersticas Especiales ICSP + ICD + LVP

PIC18 - ICSP + ICD + LVP


Los PIC18, como casi todos los PICs, pueden ser programados serialmente en circuito Para ello hace uso del mdulo ICSP (In- Circuit Serial Program) incorporado en casi todos los micros El ICSP es utilizado con el ICD (In-Circuit Debugger) para hacer el debugging/programacin del programa en circuito, utilizando el MPLAB. Primero se programa el micro serialmente y luego se realiza el debugging. Cuando el ICD est habilitado, el sistema hace uso de algunos recursos del micro 2 Niveles de SP 512 bytes de memoria de programa 10 bytes de ram Para usar el ICD se deben implementar las siguientes conexiones MCLR/Vpp VDD/VSS RB6/7 Para que el micro pueda ser programado serialmente utilizando la misma alimentacin del micro (VDD) dentro de todo su rango operativo, debe estar habilitada la opcin LVP (Low Voltage Program). Para los efectos de la programacin serial solamente, el pin RB5/PGM tambin es utilizado y dedicado a la programacin.

Perifricos Resumen

PIC18 - Resumen Perifricos/Puertos I/Os


A igual que en los PIC16/17, los puertos estn mapeados, por lo que operaciones de escritura y lectura son posibles por software Los PIC18 agregan una mejora a la manipulacin de los pines I/O. Todos los puertos estn mapeados en memoria, pero adems un registro adicional est asociado a los puertos PORTx Registro de lectura del puerto. Permite leer el estado de los pines I/O asociados al puerto TRISx Registro para configurar los pines asociados al puerto como entrada o salida LATx Registro de salida del puerto El registro LATx es el registro de salida del puerto. Escribiendo LATx, los datos escritos sern puestos en las Lacth de salida. Los pines configurados como salidas, cambiarn o no de estado, de acuerdo al valor escrito en LATx El registro PORTx, permite leer el estado de los pines de entrada Una escritura sobre los registros PORTx, provocar el mismo efecto que una escritura sobre el registro LATx Hay un registro PORTx, LATx y TRISx por puerto disponible

PIC18 - Resumen Perifricos/Timer 0

Timer de 8 (TMR0) 16 bits (TMR0H:TMROL), seleccionable por software Puede ser detenido y activado por software Prescaler slo en modo de 8 bits Prescaler : 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256 Timer mapeado en memoria Genera interrupcin por rebalse. Acepta clock interno o externo

PIC18 - Resumen Perifricos/Timer 1


Timer de 16 bits, seleccionable por software: TMR1L:TMR1H Prescaler slo en modo de 8 bits Prescaler : 1/1, 1/2, 1/4, 1/8 Timer mapeado en memoria Genera interrupcin por rebalse. Acepta clock interno o externo Puede trabajar con Cristal externo dedicado Puede ser detenido y activado por software

PIC18 - Resumen Perifricos/Timer 1


Timer 1 puede ser configurado para lectura y escritura de 16 bits. Si trabaja en este modo, una lectura del TMR1L, actualizar automticamente el contenido del TMR1H con el byte superior del Timer 1 En este mismo modo, si el registro TMR1L es escrito, el byte superior del Timer 1 es cargado con el valor contenido en el TMR1H

PIC18 - Resumen Perifricos/Timer 2


Timer 2 de 8 bits (TMR2) Prescaler: 1/1, 1/4, 1/16 Postscaler: 1/1 hasta 1/16 Contiene registro auxiliar PR2 Provoca interrupcin cuando PR2 = TMR2 No acepta clock externo Puede ser detenido y activado por software

PIC18 - Resumen Perifricos/Timer 3


Similar al timer 1 Timer de 16 bits, seleccionable por software: TMR3L:TMR3H Prescaler slo en modo de 8 bits Prescaler : 1/1, 1/2, 1/4, 1/8 Timer mapeado en memoria Genera interrupcin por rebalse. Acepta clock interno o externo Puede trabajar con Cristal externo dedicado Puede ser detenido y activado por software Puede trabajar en modo de lectura y escritura de 16 bits al igual que el Timer 1

PIC18 - Resumen Perifricos/Timer 4


Timer 4 de 8 bits (TMR4) Prescaler: 1/1, 1/4, 1/16 Postscaler: 1/1 hasta 1/16 Contiene registro auxiliar PR4 Provoca interrupcin cuando PR4 = TMR4 No acepta clock externo Puede ser detenido y activado por software

PIC18 - Resumen Perifricos/Mdulo CCP

Hasta 5 mdulos CCP pueden estar presentes en algunos micros Cada mdulo CCP est compuesto por un registro de 16 bits que puede funcionar en 3 modos Modo Captura Modo Comparador Generador de seales PWM

PIC18 - CCP/Modo Captura


En modo Captura el valor del Timer 1 o el Timer 3 es capturado por el registro de 16 bits del CCPx, cuando uno de los siguientes eventos se presenta en el pin de captura Cada flanco de bajada Cada flanco de subida Cada 4 flancos de subida Cada 16 flancos de subida Cada evento es configurable por software. El timer asociado al mdulo de Captura es seleccionable por software

PIC18 - CCP/Modo Comparacin


En modo Comparacin, el valor del Timer 1 o el Timer 3 es constantemente comparado con el valor contenido en el registro CCPx respectivo. Cuando ambos son iguales, uno de los siguientes eventos puedes ser generado La salida se comparacin se pone en alto La salida se comparacin se pone en bajo La salida se comparacin cambia al estado lgico opuesto al actual Sin cambios. Genera interrupcin solamente Cada evento es configurable por software. El timer asociado al mdulo de Captura es seleccionable por software

PIC18 - CCP/Modo PWM


En modo PWM, cada mdulo CCP puede generar seales Moduladas por Ancho de Pulso Hasta 10 bits de resolucin Frecuencia configurable pro software Ciclo de servicio configurable por software Funcionamiento automtico, una vez definidos los parmetros bsicos, el mdulo por s solo genera las seales No genera interrupciones Hace uso del Timer 2 Mxima seal PWM: 416.67Khz

PIC18 - Perifricos/MSSP
Puerto de comunicacin serial sncrona half y full duplex Orientado para comunicaciones con componentes externos como e2prom (24LCxx), RTC (DS1302), DTMF generators (PCD3312), Chips de voz (ISD4002), etc. Puede funcional en dos modos de comunicacin SPI Serial Peripheral Interface Estndar comunicacin 3 hilos Full-Duplex I2C Inter-Integrated Circuit Estndar de comunicacin 2 hilos Half - Duplex Genera interrupcin

PIC18 - Perifricos/USART
Puerto serial orientado a establecer comunicacin con equipos con protocolo EIA-232 Hasta 2 puertos seriales Usart pueden estar incorporados en algunos PIC18 Cada puerto serial puede ser configurado en forma distinta. Puede funcionar en los siguientes modos Asncrono - Full Duplex Sncrono Master - Half Duplex Sncrono Slave - Half Duplex Generador de baudios dedicado No generan ni detectan paridad (por software solamente) Formato de datos: 1 Start bit + 8/9 bits de datos + 1 Stop bit Gereran interrupciones por fin de transmisin y por recepcin Mxima velocidad: 1.250Mbaudios@40Mhz. 0% error en modo sncrono o asncrono.

PIC18 - Perifricos/CAD
CAD 10 bits de Aproximaciones Sucecivas Hasta 16 canales AD Error Absoluto: 1% LSB Vref. interna (VDD/VSS) y externa Tad = Tiempo de adquisicin por bits = 1.6uS (mnimo) Tiempo de Conversin: 12Tad = 19.2uS mnimo Usa dos registros para almacenar el resultado de la convesrsin ADRESH: ADRESL Resultado de la conversin justificable Clock para el CAD seleccionable por software Puede convertir en modo de bajo consumo Genera interrupcin por fin de conversin

PIC18 - Perifricos/Comparadores Analgicos

2 comparadores analgicos incorporados 8 modos de funcionamiento Referencia de voltaje interna o externa Referencia de voltaje interna trabaja con mdulo Vref Condiciones de comparacin configurables pro software Genera interrupcin Salida de los comparadores pueden ser asociadas a un pin I/O

PIC18 - Comparadores Analgicos/Modos

PIC18 - Comparadores Analgicos/Modos

PIC18 - Mdulo de Referencia de Voltaje (Vref)


Malla resistiva de 16 etapas La salida del mdulo Vref, Cvref, es seleccionable por software, por medio de los bits CVRCON<CVR3:CVR2:CVR1:CVR0> Las referencias de voltaje del mdulo Vref, pueden ser internas o externas CVrsrc = Vref+(RA3) y Vref- (RA2) CVrsrc = VDD y VSS Puede ser habilitada o no para ahorro de energa Se pueden seleccionar por software 2 rangos de voltajes de salida del mdulo Vref Cvref = (CVR3/2/1/0)/24 x CVrsrc Cvref = (VDDx1/4) + (CVR3/2/1/0)/32 x CVrsrc

Set de Instrucciones

Set de Instrucciones
Instrucciones orientadas bytes Nemnico Ciclos addwf f,d,a 1 addwfc f,d,a 1 andwf f,d,a 1 clrf f,a 1 comf f,d,a 1 cpfseq f,a 1,2,3 cpfsgt f,a 1,2,3 cpfslt f,a 1,2,3 decf f,d,a 1 decfsz f,d,a 1,2,3 dcfsnz f,d,a 1,2,3 incf f,d,a 1 incfsz f,d,a 1,2,3 infsnz f,d,a 1,2,3 iorwf f,d,a 1 movf f,d,a 1 movff fs,fd 2 movwf f,a 1 mulwf f,a 1 Descripcin (W) + (F) (W) + (F) + C (W) AND (F) 00 F Complementa F Compara F con W y salta si F = W Compara F con W y salta si F > W Compara F con W y salta si F < W Decrementa F Decrementa F y salta si = 0 Decrementa F y salta si no es 0 Incrememta F Incrementa F y salta si = 0 Incrementa F y salta si no es 0 (W) OR (F) Mueve F Mueve registro fs a fd (W) F (W) x (F) PRODH:PRODL

Set de Instrucciones
Instrucciones orientadas bytes (Continuacin) Nemnico Ciclos Descripcin negf f,a 1 F rlcf f,d,a 1 izquierda a travs del carry rlncf f,d,a 1 izquierda sin carry rrcf f,d,a 1 derecha a travs del carry rrncf f,d,a 1 derecha sin carry setf f,a 1 subfwb f,d,a 1 con borrow subwfb f,d,a 1 con borrow subwf f,d,a 1 swapf f,d,a 1 Intercambia nibbles de F Niega F Rota F a la

Rota F a la
Rota F a la Rota F a la FFh F (W) - (F) (F) - (W) (F) - (W)

Set de Instrucciones
Instrucciones de Control Nemnico Ciclos bc n 1,2 bn n 1,2 bnc n 1,2 bnn n 1,2 negativo bnov n 1,2 overflow bnz n 2 direccin n si no es cero bov n 1,2 overflow bra n 1,2 bz n 1,2 call n,s 2 subrutina (2Mb) clrwdt 1

Descripcin Salta a la direccin n si hay carry Salta a la direccin n si es negativo Salta a la direccin n si no hay carry Salta a la direccin n si no es
Salta a la direccin n si no hay Salta a la Salta a la direccin n si hay salto incondicional a la direccin n Salta a la direccin n si es cero Llamado a Limpia

Set de Instrucciones
Instrucciones de Control (continuacin) Nemnico Ciclos Descripcin rcal n 2 relativo (limitado a 1K) reset 1 software retfie s 2 interrupcin retlw k 2 subrutina con literal en W return s 2 subrutina sleep 1 de bajo consumo Instrucciones literales addlw k 1 W andlw k 1 W iorlw k 1 Call Reset por

Retorno de
Retorno de Retorno de Va a modo k + (W) k AND (W) k OR (W)

Set de Instrucciones
Instrucciones de operacin en memoria de programa Nemnico Ciclos Descripcin tblrd* 2 Lee tabla tblrd*+ Lee tabla con Post incremento tblrd*Lee tabla con Post decremento tblrd+* Lee tabla con Preincremento tblwt* 2(5) Escribe tabla tblwt*+ Escribe tabla con Post incremento tblwt*Escribe tabla con Post decremento

Micros sugeribles

PIC18 Plataformas de Desarrollo

PicStart - Plus
Programador para PIC12/16/18 en formato DIP hasta 40 pines Usa MPLAB - IDE Ensamblador Simulador Interfase para Debugger Interfase para programadores Permite grabar directamente algunos PIC18 (no todos) Algunos adaptadores SMDTH disponibles USD 272 + IVA

MPLAB ICD2 - In Circuit Debugger


Debugger y programador para PIC16/18 en formato DIP y SMD. Permite grabar el micro en circuito y hacer el debugging del programa (no tiempo real) Usa ICSP para programar Usa RB3/6/7, MCLR, VSS y VDD para programacin y debugging Trabaja con MPLAB IDE 6.20 en adelante Comunicacin por puerto EIA232 y USB Elimina necesidad de adaptadores USD 257 + IVA a pedido

MPLAB ICE 2000 - In Circuit Emulator


Emulador para todos los PICs Permite emulacin a full velocidad con todo tipo de encapsulados No tiene capacidad de programacin Permite mltiples Break Point Est compuesto por POD Emulador Unidad bsica. Soporta todos los uC Processor Module Contiene la lgica de emulacin para el o los micros a emular. Device Adapter: Adaptador a cspsula DIP Transition Socket Adptador de DIP a SMD

PIC18Fxxxx - BootLoader
Requerimientos Usart en modo sncrono 8/N/1 255 bytes de ram 512 bytes (256 words) de memoria de programa Cambio de vectores Vector de reset = 0200h vector de interrupcin de alta prioridad = 0208h Vector de interrupcin de baja prioridad = 0218h Aplicable a todo tipo de memorias novoltiles El algoritmo permite Borrar memoria Escribir memoria Leer memoria Auto baud rate

You might also like