descripción pic 16f887

Upload: mongongo

Post on 03-Apr-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 Descripcin PIC 16F887

    1/47

    Para Club 99

    Los Mdulos de Comunicacin de los Microcontroladores

    En el tomoanterior de la coleccinClubSaberElectrnicacomenzamosa estudiaralmicrocontroladorde MicrochipPIC 16F887,detallandotanto sus caractersticascomosuscomponentesinternos,dandoejemplosde uso con programasescritosen C. Debemosahoraver cmohaceel microcontroladorpara integrarseen un sistemay compartir datos. Para podercomunicarsecon el exterior, muchosmicrocontroladoresposeenuna unidadtransmisorareceptorallamadaUARTo USART.

    El destino comn de este perifrico es la comunicacin con otro microcontrolador ocon una PC y en la mayora de los casos hay que agregar circuitos externos para

    completar la interfaz de comunicacin. La forma ms comn de completar el puertoserie es para comunicarlo con una PC mediante una interfaz RS-232, es por ello quemuchas personas se refieren a la UART o USART como puerto serie RS-232, peroesto constituye un error, puesto que este perifrico se puede utilizar parainterconectar dispositivos mediante otros estndares de comunicacin. Enaplicaciones industriales se utiliza preferiblementeRS-485 por sus superior alcanceen distancia, velocidad y resistencia al ruido. En este texto veremos cmo comunicaral PIC 16F887 mediante su USART y daremos ejemplos de aplicacin para quepractique mientras aprende.

    Introduccin

    UARTson las siglas de "Universal Asynchronous Receiver-Transmitter" ( en espaol,Transmisor-Receptor Asncrono Universal). USART es Universal SynchronousAsynchronous Receiver Transmitter. Un micro tendr una u otra unidaddependiendo de si permiten o no el modo sincrnico de comunicacin.

    Esta unidad controla los puertosy dispositivos serie del micro de modo que sepuedan establecer diferentes sistemas de control, figura 1. Si se tratara de unacomputadora, la UART se encuentra integrado en la placa base o en la tarjetaadaptadora del dispositivo. Un UART dual, o DUART, combina dos UARTs en unsolo chip. Existe un dispositivo electrnico encargado de generar la UART en cadapuerto serie.

    Las funciones principales de la UART son manejar las interrupciones de losdispositivos conectados al puerto serie y convertir los datos en formato paralelo,transmitidos al bus de sistema, a datos en formato serie, para que puedan sertransmitidos a travs de los puertos y viceversa.

    http://es.wikipedia.org/wiki/RS-232http://es.wikipedia.org/wiki/RS-485http://es.wikipedia.org/wiki/RS-485http://es.wikipedia.org/w/index.php?title=USART&action=edit&redlink=1http://es.wikipedia.org/wiki/Puertoshttp://es.wikipedia.org/wiki/Puertoshttp://es.wikipedia.org/wiki/Placa_basehttp://es.wikipedia.org/w/index.php?title=Tarjeta_adaptadora&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=Tarjeta_adaptadora&action=edit&redlink=1http://es.wikipedia.org/wiki/Puerto_seriehttp://es.wikipedia.org/wiki/Puerto_seriehttp://es.wikipedia.org/wiki/Bus_(Inform%C3%A1tica)http://es.wikipedia.org/wiki/Puertoshttp://es.wikipedia.org/wiki/RS-485http://es.wikipedia.org/w/index.php?title=USART&action=edit&redlink=1http://es.wikipedia.org/wiki/Puertoshttp://es.wikipedia.org/wiki/Placa_basehttp://es.wikipedia.org/w/index.php?title=Tarjeta_adaptadora&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=Tarjeta_adaptadora&action=edit&redlink=1http://es.wikipedia.org/wiki/Puerto_seriehttp://es.wikipedia.org/wiki/Puerto_seriehttp://es.wikipedia.org/wiki/Bus_(Inform%C3%A1tica)http://es.wikipedia.org/wiki/Puertoshttp://es.wikipedia.org/wiki/RS-232
  • 7/28/2019 Descripcin PIC 16F887

    2/47

    Mdulos de Comunicacin Serie en el PIC 16F887

    El USART es uno de los primeros sistemas de comunicacin serie. Las versionesnuevas de este sistema estn actualizadas y se les denomina un poco diferente -EUSART.

    EUSART

    El mdulo Transmisor/Receptor Universal Sncrono/Asncrono mejorado (EnhancedUniversal Synchronous Asynchronous Receiver Transmitter - EUSART) es unperifrico de comunicacin serie de entrada/salida. Asimismo es conocido comoInterfaz de comunicacin serie (Serial Communications Interface - SCI). Contienetodos los generadores de seales de reloj, registros de desplazamiento y bfers dedatos necesarios para realizar transmisin de datos serie de entrada/salida,independientemente de la ejecucin de programa del dispositivo. Como indica sunombre, aparte de utilizar el reloj para la sincronizacin, este mdulo puedeestablecer la conexin asncrona, lo que lo hace nico para algunas aplicaciones.Por ejemplo, en caso de que sea difcil o imposible proporcionar canales especialespara transmisin y recepcin de datos y seales de reloj (por ejemplo, mando adistancia de radio o infrarrojas), el mdulo EUSART es definitivamente la mejoropcin posible.

    El EUSART integrado en el PIC16F887 posee las siguientes caractersticas:

    Transmisin y recepcin asncrona en modo Full-duplex; Caracteres de anchura de 8 9 bits programables; Deteccin de direccin en modo de 9 bits; Deteccin de errores por saturacin del bfer de entrada; y Comunicacin Half Duplexen modo sncrono.

    EUSART en Modo Asncrono (Asincrnico)

    El EUSART transmite y recibe los datos utilizando la codificacin de no retorno acero - NRZ (non-return-to-zero). Como se muestra en la figura 2, no se utiliza unaseal de reloj y los datos se transmiten de forma muy simple:

    Cada dato se transmite de la siguiente forma:

  • 7/28/2019 Descripcin PIC 16F887

    3/47

    En estado inactivo la lnea de datos permanece en estado alto (1); Cada transmisin de datos comienza con un bit de arranque (START), el cual,

    siempre es cero (0); Cada dato tiene un ancho de 8 o 9 bits (primero se transmite el bit menos

    significativo - LSB); y Cada transmisin de datos termina con un bit de parada (STOP), el cual, siempre

    es uno (1) La siguiente figura muestra cmo conectar de manera habitual unmicrocontrolador PIC que utiliza el mdulo EUSART. El circuito RS-232 seutiliza como un convertidor de nivel de voltaje.

    La figura 3 muestra una forma comn de conectar microcontroladores PIC queposeen mdulos EUSART. El circuito RS-232 se utiliza como un convertidor de nivelde tensin.

    EUSART en Modo de Transmisor Asncrono

    Para habilitar la transmisin de datos por medio del mdulo EUSART, es necesarioconfigurarlo para que funcione como un transmisor. En otras palabras, tal comopodemos apreciar en la figura 4, es necesario definir el estado de los siguientes bits:

    TXEN = 1 - El transmisor EUSART se habilita al poner a uno el bit TXEN del registroTXSTA.

    SYNC = 0 - El EUSART se configura a funcionar en modo asncrono al poner a ceroel bit SYNC del registro TXSTA.

    SPEN = 1 - Al poner a uno el bit SPEN del registro RCSTA, el EUSART est

    habilitado y el pin TX/CK se configura automticamente como salida. Si el bitse utiliza simultneamente para alguna funcin analgica, se debedeshabilitar al poner a cero el bit correspondiente del registro ANSEL.

    La parte central del transmisor EUSART ocupa el registro de desplazamiento TSRque no est directamente disponible al usuario. Para iniciar la transmisin de datos,el mdulo debe estar habilitado al poner a uno el bit TXEN del registro TXSTA. Losdatos a enviar se deben escribir en el registro TXREG, lo que resultar en lasiguiente secuencia de eventos:

    Byte ser transmitido inmediatamente al registro de desplazamiento TSR; El registro TXREG permanece vaco, lo que indica la bandera de bit TXIF del

    registro PIR1. Si se pone a uno el bit TXIE del registro PIE1, se generar unainterrupcin. De todos modos, la bandera se pone a uno sin reparar en si unainterrupcin est habilitada o no y no se puede poner a cero por software,sino al escribir un dato nuevo en el registro TXREG.

    Dispositivos electrnicos de control "empujan" el dato hacia el pin TX ensincronizacin con seal de reloj interna: bit de arranque (START)

    (1).....datos....bit de parada (STOP) (1). Cuando el ltimo bit abandona el registro TSR, el bit TRMT en el registro TXSTA

  • 7/28/2019 Descripcin PIC 16F887

    4/47

    se pone a cero automticamente. Si mientras tanto se escribe un dato nuevo en el registro TXREG, todo el

    procedimiento se repite inmediatamente despus de la transmisin del bit deparada del dato anterior.

    Para transmitir un dato de 9 bits es necesario poner a uno el bit TX9 del registroTXSTA. El bit TX9D del registro TXSRTA es el noveno bit y el ms significativo. Altransmitir un dato de 9 bits, el bit de datos TX9D deber estar escrito antes de quede se escriban los 8 bits menos significativos en el registro TXREG. Todos los nuevebits de datos se transmiten al registro de desplazamiento TFR inmediatamentedespus de que se acabe la escritura en el registro TXREG.

    EUSART en Modo de Receptor Asncrono

    En forma similar a tener que poner en marcha el transmisor del EUSART, parahabilitar el receptor, tal como se observa en la figura 5, es necesario configurar lossiguientes bits:

    CREN = 1 - El receptor EUSART se habilita al poner a uno el bit CREN del registroRCSTA;

    SYNC = 0 - El EUSART se configura a funcionar en modo asncrono al poner a ceroel bit SYNC del registro TXSTA; y

    SPEN = 1 - Al poner a uno el bit SPEN del registro RCSTA, el EUSART esthabilitado y el pin RX/DT se configura automticamente como salida. Si el bitse utiliza simultneamente para alguna funcin analgica, se debedeshabilitar al poner a cero el bit correspondiente del registro ANSEL.

    Despus de que se haya terminado el primer paso necesario y se haya detectado elbit de arranque (START), el dato se transmite al registro de desplazamiento RSR porel pin RX. Al haber recibido el bit de parada (STOP), ocurre lo siguiente:

    El dato se transmite automticamente al registro RCREG (si est vaco); El bit de bandera RCIF se pone a uno y ocurre una interrupcin si est habilita da

    por el bit RCIE en el registro PIE1. Similar al transmisor, el bit de bandera sepone a cero slo por software, o sea, al leer el registro RCREG. Tenga encuenta que esto es un doble registro de tipo FIFO (primero en entrar, primeroen salir - first-in, first-out), lo que permite almacenamiento de dos caracteressimultneamente);

  • 7/28/2019 Descripcin PIC 16F887

    5/47

    Si el registro RCREG est ocupado (contiene dos bytes) y el registro dedesplazamiento detecta el nuevo bit de parada (STOP), el bit de sobrescrituraOERR se pondr a uno. En tal caso se pierde un dato nuevo que viene, y elbit OERR debe ponerse a cero por software al poner a cero y luego al ponera uno el bit CREN;Nota: No es posible recibir un dato nuevo sino hasta que el bit

    OERR est a uno. Si el bit de parada (STOP) est a cero (0), el bit FERR del registro RCSTA estar a

    uno, lo que indica un error en recepcin; y Para habilitar la recepcin de un dato de 9 bits, es necesario poner a uno el bit

    RX9 del registro RCSTA.

    Deteccin de Errores Durante la Recepcin

    El microcontrolador puede detectar automticamente dos tipos de errores. El primeroes denominado error de encuadre (Framing error). Ocurre cuando el receptor nodetecta el bit de parada en un intervalo predeterminado de tiempo. Este error seindica mediante el bit FERR del registro RCSTA. Si el bit est a uno, el ltimo datorecibido puede ser incorrecto. Cabe destacar lo siguiente:

    El error de encuadre no genera por si mismo una interrupcin; Si el bit est a uno, el ltimo dato recibido contiene un error; El error de encuadre (bit est a uno) no impide la recepcin de un dato nuevo;

    El bit FERR se pone a cero al leer el dato recibido, lo que significa que se debehacer una verificacin antes de leer el dato; El bit FERR no se puede poner a cero por software. Si es necesario, se puede

    borrar al poner a cero al bit SPEN del registro RCSTA, lo cual,simultneamente causa una reinicializacin del sistema EUSART.

    Otro tipo de error es denominado error de sobrescritura (Overrun Error). Comohemos mencionado anteriormente, el registro de tipo FIFO puede almacenar slodos caracteres. Un error de sobrescritura ocurre cuando el registro recibe el tercercarcter. Simplemente no hay espacio para almacenar un byte ms, por lo que un

    error es inevitable. Cuando ocurre este error, el bit OERR del registro RCSTA sepone a uno. Las consecuencias son las siguientes:

    Los datos almacenados en los registros FIFO (2 bytes) se pueden leernormalmente;

    No se recibirn ms datos hasta que el bit OERR est puesto a cero; y A este bit no se le puede acceder directamente. Para borrarlo, es necesario poner

    a cero el bit CREN del registro RCSTA o reiniciar el sistema EUSART alponer a cero al bit SPEN del registro RCSTA.

  • 7/28/2019 Descripcin PIC 16F887

    6/47

    Recepcin de Datos de 9 Bits

    Aparte de recibir los datos de forma estndar de 8 bits, el sistema EUSART soportala recepcin de datos de 9 bits. En el lado del transmisor, el noveno bit se adjuntaal byte original directamente antes del bit de parada. En el lado del receptor, al ponera uno el bit RX9 del registro RCSTA, el noveno bit de datos ser automticamenteescrito en el bit RX9D del mismo registro, figura 6. Despus de almacenar este byte,es necesario tener cuidado en como leer estos bits - primero se debe leer el bitRX9D y luego los ocho (8) bits menos significativos del registro RCREG. De otraforma, el noveno bit ser puesto a cero antes de ser ledo.

    Deteccin de Direccin

    Cuando el bit ADDEN del registro RCSTA est a uno, el modulo EUSART es capazde recibir slo los datos de 9 bits, mientras que se ignoran todos los datos de 8 bits.Aunque parece una restriccin, este modo habilita la comunicacin serial entrevarios microcontroladores. El principio de funcionamiento es muy simple. Eldispositivo maestro enva un dato de 9 bits que representa la direccin de unmicrocontrolador esclavo. No obstante, todos deben tener el bit ADDEN puesto a

    uno, ya que de esta manera se habilita la deteccin de direccin. Todos losmicrocontroladores esclavos que comparten la misma lnea de transmisin, recibeneste dato (direccin) y verifican automticamente si coincide con su propia direccin,figura 7. El software, en el que ocurre la coincidencia de direccin, debe deshabilitarla deteccin de direccin, poniendo a cero el bit ADDEN.

    El dispositivo maestro sigue enviando los datos de 8 bits al microcontrolador. Todoslos datos que pasan por la lnea de transmisin sern recibidos slo por el mduloEUSART direccionado, figura 8. Una vez recibido el ltimo byte, el microcontroladoresclavo debe poner a uno el bit ADDEN para habilitar de nuevo la deteccin dedireccin.

    Registro TXSTA

    El registro especfico TXSTA acta como registro de estado y control del transmisor,su configuracin se muestra en la figura 9 y la funcin de cada BIT es la siguiente:

    CSRC - Clock Source Select bit - (bit de seleccin de la fuente de reloj) determina lafuente del reloj. Se utiliza slo en modo sincrnico.

    1 - Modo Maestro. Reloj generado internamente por el generador de tasa de

  • 7/28/2019 Descripcin PIC 16F887

    7/47

    baudios. 0 - Modo Esclavo. Reloj proveniente de una fuente externa.

    TX9 - 9-bit Transmit Enable bit (bit de habilitacin del modo de 9 bits en transmisin)

    1 - Se habilita el modo de 9 bits en transmisin por el sistema EUSART. 0 - Se habilita el modo de 8 bits en transmisin por el sistema EUSART.

    TXEN - Transmit Enable bit (Bit de habilitacin de transmisin)

    1 - Transmisin habilitada. 0 - Transmisin deshabilitada.

    SYNC - EUSART Mode Select bit (Bit de seleccin del modo EUSART)

    1 - El EUSART funciona en modo sncrono. 0 - El EUSART funciona en modo asncrono.

    SENDB - Send Break Character bit (Bit de envo de carcter Break en modo asncrono)se utiliza slo en modo asncrono y cuando se requiere obedecer el estndar de busLIN.

    1 - Se enviar un carcter Breaken la prxima transmisin (se pone a 0 porhardware cuando finaliza el envo).

    0 - Envo del carcter de transmisin Breakcompletado.

    BRGH - High Baud Rate Select bit (bit de seleccin de modo de alta velocidad en modoasncrono). Determina la velocidad de transmisin en modo sncrono. No afecta alEUSART en modo sncrono.

    1 - EUSART funciona a alta velocidad. 0 - EUSART funciona a baja velocidad.

    TRMT - Transmit Shift Register Status bit (bit de estado de registro de desplazamiento detransmisin)

    1 - Registro TSR est vaco. 0 - Registro TSR est lleno.

    TX9D - Ninth bit of Transmit Data (Valor del noveno bit en transmisin) Puede serutilizado como direccin o bit de paridad o para distinguir entre direccin o dato en

    los buses maestro-esclavo).

  • 7/28/2019 Descripcin PIC 16F887

    8/47

    En la figura 10 podemos observar cmo es una sucesin de datos durante unatransmisin asncrona.

    Registro RCSTA

    El registro especfico RCSTA acta como registro de estado y control del receptor,su configuracin se muestra en la figura 11 y la funcin de cada BIT es la siguiente:

    SPEN - Serial Port Enable bit (bit de habilitacin del puerto serie)

    1 - Puerto serie habilitado. Los pines RX/DT y TX/CK se configuranautomticamente como entrada y salida, respectivamente.

    0 - Puerto serie deshabilitado.

    RX9 - (bit de habilitacin del modo de 9 bits en recepcin):

    1 - Se habilita la recepcin de datos de 9 bits por medio del sistema EUSART. 0 - Se habilita la recepcin de datos de 8 bits por medio del sistema EUSART.

    SREN - Single ReceiveEnable bit (bit de habilitacin de la recepcin simple). Es utilizadoslo en modo sincrnico y en funcionamiento como Maestro.

    1 - Recepcin simple habilitada. 0 - Recepcin simple deshabilitada.

    CREN - Continuous Receive Enable bit (bit de habilitacin de la recepcin continua) actadependiendo del modo EUSART.

    Modo asncrono:

    1 - Recepcin habilitada. 0 - Recepcin deshabilitada.

    Modo sncrono:

    1 - Se habilita la recepcin continua hasta que el bit CREN est a cero. 0 - No se habilita la recepcin en forma continua.

    ADDEN - Address Detect Enable bit (bit de habilitacin de la deteccin de direccin) seutiliza slo en modo de detectar la direccin.

    1 - Habilita la deteccin de direccin (slo se procesa un byte recibido en el

  • 7/28/2019 Descripcin PIC 16F887

    9/47

    registro de desplazamiento de recepcin si el noveno bit est a uno) 0 - Deteccin de direccin deshabilitada (todos los bytes recibidos en el registro de

    desplazamiento de recepcin son procesados independientemente del valordel noveno bit recibido). El noveno bit se utiliza como bit de paridad.

    FERR - Framing Error bit (bit de error de encuadre)

    1 - Se ha producido un error de encuadre en recepcin. 0 - No se ha producido un error de encuadre.

    OERR - Overrun Error bit (bit de error de sobrescritura).

    1 - Se ha producido un error de sobrescritura en recepcin. 0 - No se ha producido un error de sobrescritura.

    RX9D - Ninth bit of Received Data No se ha producido un error de sobrescritura.

    En la figura 12 podemos observar cmo es una sucesin de datos durante unarecepcin asncrona.

    Generador de Datos (Baudios) del EUSART (BRG)

    Si mira atentamente al diagrama del receptor o transmisor EUSART asncrono(figuras 4 5), ver que ambos utilizan seal de reloj del temporizador local BRGpara la sincronizacin. La misma fuente de reloj se utiliza tambin en modo sncrono.

    El temporizador BRG consiste en dos registros de 8 bits haciendo un registro de 16bits, tal como se puede apreciar en la figura 13.

    El valor de un nmero escrito en estos dos registros determinar la velocidad de

    transmisin en baudios. Adicionalmente, el bit BRGH del registro TXSTA y el bitBRGH16 del registro BAUDCTL, afectan la frecuencia de reloj utilizada para elclculo de los baudios.

    El valor de un nmero escrito en estos dos registros determinar la velocidad detransmisin en baudios. Adicionalmente, el bit BRGH del registro TXSTA y el bitBRGH16 del registro BAUDCTL, afectan la frecuencia de reloj utilizada para elclculo de los baudios.

    Vea en la tabla 1 el valor que deben tomar los diferentes BITs de este registro paradeterminar el modo de transmisin y cul es la frmula de clculo que aplica para

    saber la velocidad de transmisin.

  • 7/28/2019 Descripcin PIC 16F887

    10/47

    Las tablas 2 a 9 contienen los valores que deben estar escritos en el registro de 16bits SPBRG y asignados a los bits SYNC, BRGH y BRGH16 para obtener algunosvalores de la velocidad de transmisin en baudios estndar. La frmula para hacer elclculo de la velocidad de transmisin en baudios es la siguiente:

    ???????????????????????

    Registro BAUDCTL

    Este registro es nuevo en los PICs y determina la velocidad de transmisin que serealizar en forma automtica, posee una configuracin como la mostrada en la

    figura 14 y la funcin de cada BIT es la siguiente:

    ABDOVF - Auto-Baud Detect Overflow bit (bit de desbordamiento de auto-deteccin de lavelocidad de transmisin) se utiliza slo en modo asncrono durante la deteccin dela velocidad de transmisin.

    1 - Se ha producido desbordamiento durante la auto-deteccin. 0 - No se ha producido desbordamiento durante la auto-deteccin.

    RCIDL - Receive Idle Flag bit No se ha producido desbordamiento durante la auto-deteccin.

    1 - Receptor en estado inactivo. No hay operacin de recepcin en marcha. 0 - Se ha recibido el bit de arranque (START) y hay una operacin de recepcin en

    marcha.

    SCKP - Synchronous Clock Polarity Select bit. (bit de seleccin de polaridad de la sealde reloj en modo sncrono). El estado lgico de este bit difiere dependiendo de culmodo de EUSART est activo

    Modo asncrono:

    1 - El dato invertido se transmite al pin RC6/TX/CK. 0 - El dato no invertido se transmite al pin RC6/TX/CK.

    Modo sncrono:

    1 - Sincronizacin en el flanco ascendente de la seal de reloj. 0 - Sincronizacin en el flanco descendente de la seal de reloj.

    BRG16 16-bit Baud Rate Generator bit - (bit de habilitacin del generador de velocidad de

  • 7/28/2019 Descripcin PIC 16F887

    11/47

    transmisin de 16 bits) determina si el registro SPBRGH se utilizar, o sea si eltemporizador BGRG tendr 8 o 16 bits.

    1 - Se utiliza el generador de velocidad de transmisin de 16 bits 0 - Se utiliza el generador de velocidad de transmisin de 8 bits

    WUE Wake-up Enable bit (bit de habilitacin del modo de auto-activacin en modoasncrono):

    1 - Modo de auto-activacin habilitado. El receptor espera a que el flancodescendente aparezca en el pin RC7/RX/DT para que el microcontrolador sedespierte del modo de reposo.

    0 - Modo de auto-activacin habilitado. El receptor funciona normalmente.

    ABDEN - Auto-Baud Detect Enable bit (bit de habilitacin de auto-deteccin de velocidadde transmisin) se utiliza slo en modo asncrono.

    1 - Modo de auto-deteccin habilitado. Al detectar la velocidad de transmisin, elbit se pone a uno automticamente.

    0 - Modo de auto-deteccin deshabilitado.

    A continuacin brindamos un ejemplo de uso de estos registros en mikroC:

    /* En este ejemplo, el mdulo EUSART interno se inicializa y se ajusta para enviar el

    mensaje inmediatamente despus de recibirlo. La velocidad de transmisin en

    baudios se ajusta a 9600 bps. El programa utiliza las siguientes rutinas de librera

    UART:

    /* UART1_init(), UART1_Write_Text(), UART1_Data_Ready(), UART1_Write() y

    UART1_Read().*/

    char uart_rd;

    void main() {ANSEL = ANSELH = 0; // Todos los pines se configuran comodigitales

    C1ON_bit = C2ON_bit = 0; // Deshabilitar los comparadoresUART1_Init(9600);// Inicializar el mdulo UART a 9600 bpsDelay_ms(100); // Esperar a que seal de reloj del mdulo UART se

    // ponga estable

    UART1_Write_Text("Start"); while (1) { // Bucle infinito if (UART1_Data_Ready()) { // Si el dato se ha recibido,

    uart_rd = UART1_Read(); // lea el dato recibido

    UART1_Write(uart_rd); // y envelo atrs por el UART}

  • 7/28/2019 Descripcin PIC 16F887

    12/47

    }}

    Transmisin Serial Asncrona a Travs de los Registros del Mdulo EUSART

    1. La velocidad de transmisin deseada deber estar ajustada a travs de los bitsBRGH (del registro TXSTA) y BRG16 (del registro BAUDCTL) y de losregistros SPBRGH y SPBRG.

    2. La velocidad de transmisin deseada deber estar ajustada a travs de los bitsBRGH (del registro TXSTA) y BRG16 (del registro BAUDCTL) y de losregistros SPBRGH y SPBRG.

    3. La velocidad de transmisin deseada deber estar ajustada a travs de los bitsBRGH (del registro TXSTA) y BRG16 (del registro BAUDCTL) y de losregistros SPBRGH y SPBRG.

    4. La transmisin de datos es habilitada poniendo a uno el bit TXEN del registroTXSTA. El bit TXIF del registro PIR1 est automticamente puesto a uno.

    5. Para que el bit TXEN cause una interrupcin, tanto el bit TXIE del registro PIE1como los bits GIE, PEIE del registro INTCON debern estar puestos a uno.

    6. En una transmisin de datos de 9 bits, el valor del noveno bit deber estar escritoen el bit TX9D del registro TXSTA.

    7. La transmisin comienza cuando se escribe el dato de 8 bits sobre el registro derecepcin TXREG.

    Recepcin Serial Asncrona a Travs de los Registros del Mdulo EUSART:

    1. La velocidad de transmisin deseada deber estar ajustada a travs de los bitsBRGH (del registro TXSTA) y BRG16 (del registro BAUDCTL) y de losregistros SPBRGH y SPBRG.

    2. El bit SYNC (del registro TXSTA) deber estar puesto a cero y el bit SPEN (delregistro RCSTA) deber estar puesto a uno a fin de habilitar el puerto serie.

    3. Tanto el bit RCIE del registro PIE1 como los bits GIE y PEIE del registro INTCONdebern estar puestos a uno si se necesita habilitar que la recepcin de datocause una interrupcin.

    4. Para una recepcin de datos de 9 bits, el bit RX9 (del registro RCSTA) deberestar puesto a uno

    5. La recepcin de datos es habilitada poniendo a uno el bit CREN del registroRCSTA.

    6. El registro RCSTA deber leerse para obtener informacin acerca de la ocurrencia

    de errores durante la recepcin. El valor del noveno bit ser almacena do eneste registro en la recepcin de datos de 9 bits.

  • 7/28/2019 Descripcin PIC 16F887

    13/47

    7. El dato de 8 bits recibido ser almacenado en el registro RCREG y deber leersepara obtener dicho dato.

    Ajustar el Modo de Deteccin de Direccin

    1. La velocidad de transmisin deseada deber estar ajustada a travs de los bitsBRGH (del registro TXSTA) y BRG16 (del registro BAUDCTL) y de losregistros SPBRGH y SPBRG.

    2. El bit SYNC (del registro TXSTA) deber estar puesto a cero y el bit SPEN (delregistro RCSTA) deber estar puesto a uno (1) a fin de habilitar el puertoserie.

    3. Tanto el bit RCIE del registro PIE1 como los bits GIE y PEIE del registro INTCONdebern estar puestos a uno si se necesita habilitar que la recepcin de datocause una interrupcin.

    4. El bit RX9 del registro RCSTA debe estar a uno.

    5. El bit ADDEN del registro RCSTA debe estar a uno, lo que habilita que un dato seareconocido como direccin.

    6. La recepcin de datos es habilitada poniendo a uno el bit CREN del registroRCSTA.

    7. Tan pronto como se reciba un dato de 9 bits, el bit RCIF del registro PIR1 estarautomticamente puesto a uno. Si est habilitada se produce una

    interrupcin.8. El registro RCSTA deber leerse para obtener informacin acerca de la ocurrenciade errores durante la transmisin. El noveno bit RX9D siempre estar a uno.

    9. El dato de 8 bits recibido ser almacenado en el registro RCREG y deber leerse.Se deber comprobar si la combinacin de estos bits coincide con ladireccin predefinida. Si coincide, es necesario poner a cero el bit ADDENdel registro RCSTA, lo que habilita la recepcin de datos de 8 bits.

    Mdulo Puerto Serie Sncrono Maestro (MSSP)

    El MSSP (Puerto serie sncrono maestro - Master Synchronous Serial Port) es unmdulo muy til, y a la vez uno de los circuitos ms complejos dentro delmicrocontrolador. Este mdulo permite la comunicacin de alta velocidad entre unmicrocontrolador y otros perifricos u otros microcontroladores al utilizar variaslneas de E/S (como mximo dos o tres lneas). Por eso, se utiliza con frecuenciapara conectar el microcontrolador a los visualizadores LCD, los convertidores A/D,las memorias EEPROM seriales, los registros de desplazamiento etc. La

    caracterstica principal de este tipo de comunicacin es que es sncrona y adecuadapara ser utilizada en sistemas con un slo maestro y uno o ms esclavos. Un

  • 7/28/2019 Descripcin PIC 16F887

    14/47

    dispositivo maestro contiene un circuito para generacin de baudios y adems,suministra seales de reloj a todos los dispositivos del sistema. Los dispositivosesclavos no disponen de un circuito interno para generacin de seales de reloj. Elmdulo MSSP puede funcionar en uno de dos modos:

    modo SPI (Interfaz perifrica serial - Serial Peripheral Interface); y modo I2C (Circuito inter-integrado - Inter-Integrated Circuit).

    Como se muestra en la figura 15, un mdulo MSSP representa slo una mitad de unhardware necesario para establecer una comunicacin serial, mientras que la otramitad se almacena en el dispositivo con el que intercambia los datos. Aunque losmdulos en ambas puntas de lnea son los mismos, sus modos de funcionamientodifieren esencialmente dependiendo de si el mdulo funciona como Maestroo como

    Esclavo.

    Si el microcontrolador a ser programado controla otro dispositivo o circuito(perifricos), deber funcionar como un dispositivo maestro. Este mdulo generarseal de reloj cuando sea necesario, o sea slo cuando se requiera recibir ytransmitir los datos por software. Por consiguiente, el establecimiento de conexindepende nicamente del dispositivo maestro.

    De lo contrario, si el microcontrolador a ser programado est integrado en undispositivo ms complejo (por ejemplo en una PC), deber funcionar como undispositivo esclavo. Como tal, un esclavo siempre tiene que esperar a que un

    dispositivo maestro enve la solicitud de transmisin de datos.

    MODO SPI

    El modo SPI permite la transmisin y recepcin simultnea de datos de 8 bits alutilizar tres lneas de entrada/salida:

    SDO - Serial Data Out(salida de datos serie )- lnea de transmisin; SDI - Serial Data In(entrada de datos serie) - lnea de recepcin; y SCK - Serial Clock(reloj de comunicacin) - lnea de sincronizacin.

    Adicionalmente, hay una cuarta lnea (SS) que se puede utilizar si elmicrocontrolador intercambia los datos con varios dispositivos perifricos. Refirasea la figura 16.

    SS - Slave Select (Seleccin de esclavo) - Es una lnea adicional utilizada para laseleccin de un dispositivo especfico. Esta lnea est activa slo si el

    microcontrolador funciona como esclavo, o sea cuando el dispositivo externo -maestro requiere intercambiar los datos. Al funcionar en modo SPI, el mdulo MSSP

  • 7/28/2019 Descripcin PIC 16F887

    15/47

    utiliza 4 registros en total:

    SSPSTAT - registro de estado.

    SSPCON - registro de control. SSPBUF - bfer serie de transmisin/recepcin. SSPSR - registro de desplazamiento (no es accesible directamente).

    Los primeros tres registros son de lectura/escritura y se pueden modificar encualquier momento, mientras que el cuarto, como no es accesible, se utiliza paraconvertir datos en formato serial.

    Como se muestra en la figura 17, la parte central del mdulo SPI consiste de dosregistros conectados a los pines para recepcin, transmisin y sincronizacin.

    El registro de desplazamiento (SSPRS) est directamente conectado a los pines delmicrocontrolador y es utilizado para transmisin de datos en formato serie. Elregistro SSPRS dispone de la entrada y salida para desplazar los datos hacia dentroy hacia fuera del dispositivo. En otras palabras, cada bit que aparece en la entrada(lnea de recepcin) desplaza simultneamente otro bit hacia la salida (lnea detransmisin).

    El registro SSPBUF (Bfer) es una parte de memoria utilizada para almacenartemporalmente los datos antes de que se enven, o sea inmediatamente despus deque se reciban. Despus de que todos los 8 bits hayan sido recibidos, el byte se

    mueve del registro SSPRS al registro SSPBUF. Este proceso de crear un doble bferpara recibir los datos permite iniciar la recepcin del prximo byte antes de leer losdatos que se acaban de recibir. Durante la transmisin/recepcin de datos se ignoraun intento de escribir un dato en el registro SSBUF. Desde el punto de vista de unprogramador, este registro se considera el ms importante por haber sido accedidocon ms frecuencia. Concretamente, si dejamos aparte el ajuste del modo defuncionamiento, la transmisin de datos por el mdulo SPI no es nada ms queescritura y lectura de datos de este registro, mientras que las dems acrobaciascomo mover los registros, se llevan a cabo automticamente por el hardware.

    A continuacin brindamos un ejemplo de uso mediante un programa escrito en

    mikroC:

    /* En este ejemplo, el microcontrolador PIC (maestro) enva un byte de datos a un

    chip perifrico (esclavo) por el mdulo SPI. El programa utiliza las funciones de

    librera SPI SPI1_init() y SPI1_Write. */

    sbit Chip_Select at RC0_bit; // Pin RC0 es un pin de seleccionar el chip// perifrico Seleccin_de_chip

    sbit Chip_Select_Direction at TRISC0_bit; // Bit TRISC0 define el pin RC0 comoentrada o salida

    unsigned int value; // Dato a ser enviado es de tipo unsigned int

  • 7/28/2019 Descripcin PIC 16F887

    16/47

    void main() {ANSEL = ANSELH = 0; // Todos los pines de E/S son digitalesTRISB0_bit = TRISB1_bit = 1; // Configurar los pines RB0, RB1 como

    entradas

    Chip_Select = 0; // Seleccionar el chip perifricoChip_Select_Direction = 0; // Configurar el pin CS# como salidaSPI1_Init(); // Inicializar el mdulo SPISPI1_Write(value);// Envar el valor al chip perifrico...

    Comunicacin Serial Sncrona SPI

    Antes de inicializar el mdulo SPI, es necesario especificar varias opciones:

    Modo maestro TRISC.3=0 (pin SCK es salida de seal de reloj); Modo de esclavo TRISC.3=1 (pin SCK es entrada de seal de reloj); Fase de datos de entrada - la mitad o el final del tiempo de salida (bit SMP del

    registro SSPSTAT ); Flanco de reloj (bit CKE del registro SSPSTAT); Velocidad de transmisin en baudios, los bits SSPM3-SSPM0 del registro

    SSPCON (slo en modo Maestro);

    Seleccin de modo esclavo, bits SSPM3-SSPM0 del registro SSPCON (slo enmodo Esclavo)

    El mdulo se pone en marcha al poner a uno el bit SSPEN:

    Paso 1.Los datos a ser transmitidos debern ser escritos en el registro del bferSSPBUF, figura 18. Si el mdulo SPI funciona en modo maestro, el microcontroladorejecutar automticamente la secuencia de los siguientes pasos 2,3 y 4. Si elmdulo SPI funciona en modo esclavo, el microcontrolador no ejecutar la secuencia

    de los siguientes pasos hasta que el pin SCK detecte seal de reloj.

    Paso 2.El dato se mueve al registro SSPSR y el contenido del registro SSPBUF no seborra, figura 19.

    Paso 3.El dato se desplaza hacia el pin de salida (primero se desplaza el bit mssignificativo - MSB), mientras que a la vez el registro se carga con los bits por el pinde entrada, figura 20. En modo maestro el microcontrolador en si mismo generaseal de reloj, mientras que el modo esclavo utiliza seal de reloj externa (pin SCK).

  • 7/28/2019 Descripcin PIC 16F887

    17/47

    Paso 4.El registro SSPSR est lleno despus de que hayan sido recibidos 8 bits dedatos, lo que se indica al poner a uno el bit BF del registro SSPSTAT y el bit SSPIFdel registro PIR1. Los datos recibidos (un byte) son automticamente movidos delregistro SSPSR al registro SSPBUF, figura 21. Como la transmisin de datos serialse realiza automticamente, el resto de programa se ejecuta normalmente mientras

    que la transmisin de datos est en progreso. En este caso, la funcin del bit SSPIFes de generar una interrupcin al acabar la transmisin de un byte.

    Paso 5.Por ltimo, el dato almacenado en el registro SSPBUF est listo para su uso ydebe moverse al registro deseado del CPU, figura 22.

    Modo I2C

    El modo I2C (Bus de circuito inter-integrado) es adecuado para ser utilizado cuandoel microcontrolador debe intercambiar los datos con un circuito integrado dentro deun mismo dispositivo. stos son con frecuencia otros microcontroladores, o loscircuitos integrados especializados y baratos que pertenecen a la nueva generacinde as llamados "perifricos inteligentes" (memorias, sensores de temperatura,relojes de tiempo real etc.)

    Similar a la comunicacin serie en modo SPI, la transmisin de datos en modo I2Ces sncrona y bidireccional. Esta vez slo dos pines se utilizan para transmisin de

    datos. stos son los pines de SDA (Datos seriales) y SCL (Reloj serial). El usuariodebe configurar estos pines como entradas o salidas por los bits TRISC.

    Al observar las reglas particulares (protocolos), este modo habilita conectarsimultneamente de una manera simple hasta 112 diferentes componentes al utilizarslo dos valiosos pines de E/S. Vamos a ver cmo funciona el sistema:

    El reloj, necesario para sincronizar el funcionamiento de ambos dispositivos, siemprees generado por un dispositivo maestro (un microcontrolador) y su frecuenciadirectamente afecta a la velocidad de transmisin de datos. Aunque hay un protocoloque permite como mximo una frecuencia de reloj de 3,4MHz (as llamado bus I2C

    de alta velocidad), este libro cubre slo el protocolo utilizado con ms frecuencia,con una frecuencia de reloj limitada a 100kHz. La frecuencia mnima no estlimitada.

    Cuando los componentes maestro y esclavo estn sincronizados por el reloj, elmaestro siempre inicia cada intercambio de datos, figura 23. Una vez que el mduloMSSP se ha habilitado, espera que ocurra una condicin de arranque (Startcondition). El dispositivo maestro primero enva el bit de arranque (est a cero) por elpin SDA, luego la direccin de 7 bits del dispositivo esclavo seleccionado, y porltimo, el bit que requiere al dispositivo escribir (0) o leer (1) el dato enviado. Enotras palabras, los ocho bits se desplazan al registro SSPSR despus de ocurrir una

    condicin de arranque. Todos los dispositivos esclavos que comparten la mismalnea de transmisin recibirn simultneamente el primer byte, pero slo el que

  • 7/28/2019 Descripcin PIC 16F887

    18/47

    contiene la direccin coincidente recibir el dato entero.

    Una vez que el primer byte se ha enviado (slo se transmiten datos de 8 bits), elmaestro se pone en modo de recepcin y espera el reconocimiento del dispositivoreceptor acerca de la direccin coincidente.

    Si el dispositivo esclavo enva un bit de reconocimiento (1) la transmisin de datoscontinuar hasta que el dispositivo maestro (microcontrolador) enve el bit de parada(Stop), figura 24.

    Esto es una explicacin simple de cmo se comunican dos componentes. Estemicrocontrolador es capaz de controlar las situaciones ms complicadas cuandoestn conectados 1024 diferentes componentes (direccin de 10 bits), compartidospor varios dispositivos maestros diferentes. Por supuesto, estos dispositivos seutilizan pocas veces en la prctica por lo que no es necesario hablar de ellosdetalladamente.

    La figura 25 muestra el diagrama de bloques del mdulo MDSSP en modo I2C.

    En una operacin I2C con el mdulo MSSP intervienen seis registros. Algunos deellos se muestran en la figura 25:

    SSPCON SSPCON2 SSPSTAT SSPBUF SSPSR SSPADD

    Registro SSPSTAT

    Es uno de los registros del mdulo SSP que indican la deteccin de las condiciones

    de inicio y parada, posee una configuracin como la mostrada en la figura 26 y lafuncin de cada BIT es la siguiente:

    SMP Sample bit (Bit de muestra)

    Modo maestro SPI - Este bit determina fase de datos deentrada.

    1 - Estado lgico se lee al final del tiempo de salida. 0 - Estado lgico se lee en la mitad del tiempo de salida.

  • 7/28/2019 Descripcin PIC 16F887

    19/47

    Modo esclavo SPI- Este bit debe ser borrado cuando SPI seemplea en modo esclavo.

    Modo IC (maestroo esclavo)

    1 - Deshabilita control de variaciones para velocidad estndar (100kHz). 0 - Habilita control de variaciones para velocidad alta (400k Hz).

    CKE - Clock Edge Select bit (bit de seleccin del flanco de reloj) selecciona el modo desincronizacin.

    CKP = 0:

    1 - Dato transmitido en flanco ascendente de pulso de reloj (0 - 1). 0 - Dato transmitido en flanco descendente de pulso de reloj (1 - 0).

    CKP = 1:

    1 - Dato transmitido en flanco descendente de pulso de reloj (1 - 0). 0 - Dato transmitido en flanco ascendente de pulso de reloj (0 - 1).

    D/A - Data/Address bit (bit de direcciones/datos) se utiliza slo en modo I2C.

    1 - Indica que el ltimo byte recibido o transmitido es un dato. 0 - Indica que el ltimo byte recibido o transmitido es una direccin.

    P - Stop bit (bit de parada) se utiliza slo en modo IC.

    1 - Bit de parada (STOP) se ha detectado. 0 - Bit de parada (STOP) no se ha detectado.

    S - Start bit (bit de arranque) se utiliza slo en modo I2C.

    1 - Bit de arranque (START) se ha detectado.

    0 - Bit de arranque (START) no se ha detectado.

    R/W - Read Write bit (bit de informacin Lectura/Escritura) se utiliza slo en modo I2C.Este bit contiene la informacin del bit de L/E despus de la ltima direccin coincidente. Este bit es vlido slo desde la direccin coincidente hasta el siguiente bitde arranque, bit de parada o bit no ACK.

    Modo IC en modo esclavo

    1 - Lectura de dato.

    0 - Escritura de dato.Modo IC en modo esclavo

  • 7/28/2019 Descripcin PIC 16F887

    20/47

    1 - Transmisin en progreso. 0 - Transmisin no est en progreso.

    UA - Update Address bit (bit de activacin de direccin) se utiliza slo en modo I2C de

    10 bits.

    1 - Indica que es necesario actualizar la direccin en el registro SSPADD. 0 - Indica que la direccin es correcta y que no se necesita actualizarla.

    BF Buffer Full Status bit (bit de estado de bfer lleno)

    Durante la recepcin de dato (en modos SPI e IC)

    1 - Recepcin completa. El registro SSPBUF est lleno. 0 - Recepcin no completa. El registro SSPBUF est vaco.

    Durante la transmisin de dato (slo en modo IC)

    1 - Transmisin de dato en progreso (no incluye el bit ACK y bits de parada). 0 - Transmisin de dato completa (no incluye el bit ACK y bits de parada).

    Registro SSPCON

    El registroSSPCONpermite el control de la operacin I2C, su configuracin se muestraen la figura 27 y la function de cada BIT es la siuguiente:

    WCOL Write Collision Detect bit (bit detector de colisin)

    1 - Colisin detectada. En el registro SSPBUF se ha escrito cuando no se hancumplido las condiciones para iniciar una transmisin.

    0 - No hay colisin.

    SSPOV Receive Overflow Indicator bit (bit detector de desbordamiento en recepcin)

    1 - Se recibe un nuevo byte cuando el registro SSPBUF an mantiene los datosante riores. Como no hay espacio para recibir datos nuevos, uno de estosdos bytes debe ser borrado. En este caso, los datos almacenados en elregistro SSPSR se pierden irremediablemente.

    0 - Dato serial es recibido correctamente.

    SSPEN - Synchronous Serial Port Enable bit (bit de habilitacin del mdulo SSP - puertoserie sncrono) determina la funcin de los pines del microcontrolador e inicializa el

  • 7/28/2019 Descripcin PIC 16F887

    21/47

    mdulo MSSP:

    En modo SPI

    1 - Habilita el mdulo MSSP y configura los pines SCK, SDO, SDI y SS como

    una fuente de pines del puerto serie. 0 - Deshabilita el mdulo MSSP y configura estos pines como pines del

    puerto de E/S.En modo IC

    1 - Habilita el mdulo MSSP y configura los pines SDA y SCL como unafuente de pines del puerto serie.

    0 - Deshabilita el mdulo MSSP y configura estos pines como pines delpuerto de E/S.

    CKP - Clock Polarity Select bit (bit de seleccin de polaridad de reloj) no se utiliza enmodo IC maestro.

    En modo SPI

    1 - Para una seal de reloj, el estado inactivo es un nivel alto. 0 - Para una seal de reloj, el estado inactivo es un nivel bajo.

    En modo IC esclavo

    1 - Seal de reloj habilitada. 0 - Mantiene la salida de seal de reloj en estado bajo. Se utiliza para

    proporcionar ms tiempo para estabilizacin de datos.

    SSPM3-SSPM0 - Synchronous Serial Port Mode Select bits. (bit de seleccin del modo delSSP (puerto serie sncrono). El modo SSP se determina al combinar los bits deacuerdo con la tabla 10.

    Registro SSPCON2

    El registro SSPCON2 se utiliza para controlar la interfase I2C configurada comoservidor, su configuracin se muestra en la figura 28 y la funcin de cada BIT es lasiguiente:

    GCEN - General Call Enable bit (bit de habilitacin general)

    Slo en modo esclavo IC

  • 7/28/2019 Descripcin PIC 16F887

    22/47

    1 - Habilita interrupcin cuando una direccin de llamada general es recibidaen el SSPST (0000h).

    0 - Deshabilita direccin de llamada general.

    ACKSTAT - Acknowledge Status bit (bit de estado de reconocimiento)

    Slo en modo de transmisin maestro IC

    1 - Reconocimiento del esclavo no recibido. 0 - Reconocimiento del esclavo recibido.

    ACKDT - Acknowledge data bit (bit de recepcin)

    Slo en modo de recepcin maestro IC

    1 - No reconocimiento. 0 - Reconocimiento.

    ACKEN - Acknowledge Sequence Enable bit (bit de habilitacin de secuencia dereconocimiento)

    En modo de recepcin maestro IC

    1 - Indica una secuencia de reconocimiento en los pines SDA y SCL ytransmite el bit ACKDT. Automticamente borrado por hardware.

    0 - Secuencia de reconocimiento en reposo.

    RCEN - Receive Enable bit (bit de habilitacin de recepcin)

    Slo en modo maestro IC

    1 - Habilita recepcin en modo I2C. 0 - Recepcin deshabilitada.

    PEN - STOP condition Enable bit (bit de habilitacin de condicin de Parada)

    Slo en modo maestro IC

    1 - Indica una condicin de Parada en los pines SDA y SCL. Luego, este bites automticamente borrado por hardware.

    0 - Condicin de Parada en reposo.

    RSEN - Repeated START Condition Enabled bit (bit de habilitacin de repetir condicin deArranque)

  • 7/28/2019 Descripcin PIC 16F887

    23/47

    Slo en modo maestro IC

    1 - Indica repeticin de condicin de Arranque en los pines SDA y SCL.Luego, este bit es automticamente borrado por hardware.

    0 - Condicin de repeticin de Arranque en reposo.

    SEN - START Condition Enabled/Stretch Enabled bit (bit de habilitacin de condicin deArranque)

    Slo en modo maestro IC

    1 - Indica condicin de Arranque en los pines SDA y SCL. Luego, este bit esautomticamente borrado por hardware.

    0 - Condicin de Arranque en reposo.

    IC en Modo Maestro

    El caso ms comn es que un microcontrolador funciona como maestro y unperifrico como esclavo. Es la razn por la que este libro slo trata este modo. Se dapor entendido que la direccin consiste en 7 bits y el dispositivo contiene un solomicrocontrolador (dispositivo con maestro nico).

    Para habilitar el mdulo MSSP en este modo, siga las instrucciones de la figura 29.

    Ajuste la velocidad de transmisin (registro SSPADD), desactive el control develocidad de rotacin (al poner a uno el bit SMP del registro SSPSTAT) y seleccioneel modo maestro (registro SSPCON). Despus de finalizar todos los ajustes yhabilitar el mdulo (registro SSPCON: bit SSPEN), es necesario esperar a que loscircuitos de control internos indiquen con una seal que todo est preparado paratransmisin de datos: o sea, que el bit SSPIF del registro PIR1 se haya puesto auno, figura 30.

    Despus de poner este bit a cero por software, el microcontrolador est listo paraintercambiar los datos con los perifricos.

    Transmisin de Datos en Modo Maestro IC

    La transmisin de datos en el pin SDA se inicia con un cero lgico (0) que aparece alponer a uno el bit SPEN del registro SSPCON2, figura 31. Sin embargo, aunque esthabilitado, el microcontrolador tiene que esperar cierto tiempo antes de iniciar lacomunicacin. Se le denomina condicin de Inicio durante la que se realizan laspreparaciones y verificaciones internas. Si se cumplen con todas la condiciones, el

    bit SSPIF del registro PIR1 se pone a uno y la transmisin de datos se inicia encuanto se cargue el registro SSPBUF.

  • 7/28/2019 Descripcin PIC 16F887

    24/47

    Como mximo 112 circuitos integrados (dispositivos esclavos) pueden compartirsimultneamente la misma lnea de transmisin. El primer byte de datos enviado porel dispositivo maestro contiene la direccin que coincide con una sola direccin deldispositivo esclavo, figura 32. Todas las direcciones se enumeran en las hojas dedatos respectivas. El octavo bit del primer byte de datos especifica la direccin de

    transmisin de datos, o sea si el microcontrolador va a enviar o recibir los datos. Eneste caso, como se trata de transmisin de datos, el octavo bit se pone a cero (0).

    Cuando ocurre la coincidencia de direcciones, el microcontrolador tiene que esperara que el dispositivo esclavo enve el bit de reconocimiento, o sea que se ponga acero el bit ASKSTAT del registro SSPCON2. Una vez que la coincidencia dedirecciones ha ocurrido apropiadamente, todos los bytes de datos se transmiten dela misma manera.

    La transmisin de datos termina al poner a uno el bit SEN del registro SSPCON2.Ocurre la condicin de parada (STOP), lo que habilita que el pin SDA reciba una

    secuencia de pulsos:

    Inicio - Direccin - Reconocimiento - Dato - Reconocimiento .... Dato -Reconocimiento - Parada!

    Recepcin de Datos en Modo Maestro IC

    Las preparaciones para recibir los datos son similares a las de transmitir los datos,con excepcin de que el ltimo bit del primer byte enviado (el que contiene ladireccin) se ponga a uno lgico (1), figura 33. Eso especifica que el dispositivomaestro espera recibir los datos del dispositivo esclavo direccionado. Con respectoal microcontrolador, ocurre lo siguiente:

    Despus de hacer las pruebas internas y poner a uno el bit de arranque (START), eldispositivo esclavo enva byte por byte. Estos bytes se almacenan en el registro

    serial SSPSR. Despus de recibir el ltimo - octavo bit, cada dato se carga en elregistro SSPBUF del que se puede leer. Al leer este registro, se envaautomticamente el bit de reconocimiento, lo que significa que el dispositivo maestroest listo para recibir los nuevos datos.

    Al igual que en el caso de la transmisin, la recepcin de datos termina al poner auno el bit de parada (STOP):

    Inicio - Direccin - Reconocimiento - Dato - Reconocimiento .... Dato -Reconocimiento - Parada!

    En esta secuencia de pulsos, el bit de reconocimiento se enva al dispositivo esclavo.

  • 7/28/2019 Descripcin PIC 16F887

    25/47

    Generador de Baudios

    Para sincronizar la transmisin de datos, todos los eventos que ocurren en el pinSDA deben estar sincronizados con la seal de reloj generada en el dispositivomaestro. Esta seal de reloj se genera por un simple oscilador cuya frecuenciadepende de la frecuencia del oscilador principal del microcontrolador, del valor quese introduce al registro SSPADD y as como del modo SPI actual. La frecuencia deseal de reloj del modo descrito en este libro depende del cristal de cuarzoseleccionado y del registro SPADD. La frmula utilizada para hacer el clculo defrecuencia se muestra en la figura 34.

    A continuacinmn mostramos un ejemplo de programacin en mikroC:

    /* En este ejemplo, el microcontrolador PIC est conectado a la memoria EEPROM

    24C02por los pines SCL y SDA. El programa enva un byte de dato a la direccin 2

    de la EEPROM.

    Entonces, el programa lee este dato por el modo I2C de la EEPROM y lo enva al

    puerto PORTB para comprobar si el dato se ha escrito con xito. El byte para

    direccionar la EEPROM est compuesto por 7 bits de la direccin (1010001) y el bit

    que determina lectura o escritura del dato (LSB - bit menos significativo).*/

    void main(){ANSEL = ANSELH = PORTB = TRISB = 0;// Todos los pines son digitales. Los

    pines del

    // puerto PORTB son salidas.

    I2C1_Init(100000);// Inicializar I2C con reloj deseado// Incio del bloque de sentencias para escribir un byte en la

    memoria EEPROM.

    I2C1_Start(); // Seal de inicio de I2CI2C1_Wr(0xA2); // Enviar byte por I2C (direccin de dispositivo + W)I2C1_Wr(2); // Enviar byte (direccin de la localidad EEPROM)I2C1_Wr(0xF0); // Enviar los datos a escribirI2C1_Stop(); // Seal de parada de I2CDelay_100ms();

    // En el siguiente bloque de sentencias se determina la direccin

    2 de la que se leer el dato

    I2C1_Start(); // Seal de inicio de I2CI2C1_Wr(0xA2); // Enviar byte por I2C (direccin de dispositivo + W)I2C1_Wr(2); // Enviar byte (direccin de dato)

    // La direccin est determinada y el dato est listo para ser

  • 7/28/2019 Descripcin PIC 16F887

    26/47

    ledo

    I2C1_Repeated_Start(); // Se vuelve a generar el inicio de seal I2CI2C1_Wr(0xA3); // Enviar byte (direccin de dispositivo + R)PORTB = I2C1_Rd(0u); // Leer el dato (reconocimiento NO)

    I2C1_Stop(); // Seal de parada de I2C}

    Notas tiles

    Cuando el microcontrolador se comunica con un perifrico, puede ocurrir un fallo enla transmisin de datos por alguna razn. En este caso, es recomendable comprobarel estado de algunos bits que pueden aclarar el problema. En la prctica, el estadode estos bits se comprueba al ejecutar una pequea subrutina despus detransmisin y recepcin de cada byte (por si acaso):

    WCOL (SPCON,7) - Si intenta escribir un dato nuevo al registro SSPBUF mientras queotra transmisin/recepcin de datos est en progreso, el bit WCOL se pone a uno yel contenido del registro SSBUF se queda sin cambios. No hay escritura. Luego, elbit WCOL debe ser borrado por el software.

    BF (SSPSTAT,0) - Al transmitir los datos, este bit se pone a uno durante la escritura enel registro SSPBUF y se queda puesto a uno hasta que el byte en formato serial sedesplace del registro SSPRS. En modo de recepcin, este bit se pone a uno alcargar un dato o una direccin al registro SSPBUF. Se pone a cero despus de leerel registro SSPBUF.

    SSPOV (SSPCON,6) - En modo de recepcin, este bit se pone a uno al recibir un nuevobyte en el registro SSPSR por medio de la comunicacin serial, todava sin haberledo el dato anteriormente recibido del registro SSPBUF.

    Pines SDA y SCL - Cuando el mdulo SSP est habilitado, estos pines se vuelven a lassalidas de Drenaje Abierto. Esto significa que deben estar conectados a resistenciasconectados a la otra punta al polo positivo de la fuente de alimentacin, figura 35.

    Para establecer la comunicacin serial en modo I2C, se debe realizar lo siguiente:

    1) Ajustar el mdulo y enviar la direccin:

    Introducir en el registro SSPADD el valor para definir la velocidad de transmisin

  • 7/28/2019 Descripcin PIC 16F887

    27/47

    en baudios. Poner a uno el bit SMP del registro SSPSTAT para desactivar el control de la

    velocidad de rotacin. Introducir el valor binario 1000 a los bits SSPM3-SSPM0 del registro SSPCON1

    para seleccionar el modo Maestro. Poner a uno el bit SEN del registro SSPCON2 (secuencia de Inicio - START). El bit SSPIF se pone a uno automticamente en final de la secuencia de Inicio

    cuando el mdulo est listo para funcionar. Se deber poner a cero. Introducir la direccin de esclavo al registro SSPBUF. Cuando se enva un byte, el bit SSPIF (interrupcin) se pone a uno

    automticamente despus de haber recibido el bit de reconocimiento deldispositivo esclavo.

    2) Transmitir los datos:

    Introducir en el registro SSPBUF los datos a enviar. Cuando se enva un byte, el bit SSPIF (interrupcin) se pone a uno

    automticamente despus de haber recibido el bit de reconocimiento deldispositivo esclavo.

    La condicin de Parada (STOP) se debe iniciar al poner a uno el bit PEN delregistro SSPCON para informar al dispositivo Esclavo que la transmisin dedatos se acab.

    3) Recibir los datos:

    Poner a uno el bit RSEN del registro SSPCON2 para habilitar la recepcin. El bit SSPIF indica con su estado lgico la recepcin de datos. Despus de leer

    los datos del registro SSPBUF, el bit ACKEN del registro SSPCON2 debeponerse a uno para habilitar el envo del bit de reconocimiento.

    La condicin de Parada (STOP) se debe iniciar al poner a uno el bit PEN delregistro SSPCON para informar al dispositivo Esclavo que la transmisin seacab.

    Aparte de disponer de un gran nmero de lneas digitales de E/S utilizadas para la

    comunicacin con los perifricos, el PIC16F887 contiene 14 entradas analgicas.

    Debido a stas, el microcontrolador no slo puede reconocer si un pin es llevado abajo o alto (0 o +5V), sino que puede medir con precisin el voltaje y convertirlo en

    un valor numrico, o sea, en formato digital.

    Mdulos Analgicos

    El mdulo del convertidor A/D del PIC 16F887 dispone de las siguientes

  • 7/28/2019 Descripcin PIC 16F887

    28/47

    caractersticas:

    El convertidor genera un resultado binario de 10 bits utilizando el mtodo deaproximaciones sucesivas y almacena los resultados de conversin en losregistros ADC (ADRESL y ADRESH);

    Dispone de 14 entradas analgicas separadas; El convertidor A/D convierte una seal de entrada analgica en un nmero binario

    de 10 bits; La resolucin mnima o calidad de conversin se puede ajustar a diferentes

    necesidades al seleccionar voltajes de referencia Vref- y Vref+, tal comopuede observarse en la figura 36.

    Convertidor A/D

    Aunque a primera vista parece muy complicado utilizar un convertidor A/D, enrealidad es muy simple. De hecho resulta ms simple utilizar un convertidor A/D quelos temporizadores o mdulos de comunicacin serie.

    En la figura 37 se puede observar un diagrama en bloques que ejemplifica elfuncionamiento del convertidor A/D, que est bajo el control de los bits de cuatroregistros:

    ADRESH Registro alto del resultado de la conversin A/D; ADRESL Registro bajo del resultado de la conversin A/D; ADCON0 Registro de control 0; y ADCON1 Registro de control 1.

    Registros ADRESH y ADRESL

    El resultado obtenido despus de convertir un valor analgico en digital es unnmero de 10 bits que se almacenar en los registros ADRESH y ADRESL, figura38. Hay dos maneras de manejarlo: justificacin a la izquierda y a la derecha quesimplifica en gran medida su uso. El formato del resultado de la conversin dependedel bit ADFM del registro ADCON1. En caso de que no se utilice el convertidor A/D,

    estos registros se pueden utilizar como registros de propsito general.

    Requerimientos de Adquisicin A/D

    Para que el convertidor A/D alcance su exactitud especificada, es necesarioproporcionar un cierto tiempo muerto entre seleccionar una entrada analgicaespecfica y la medicin misma. Este tiempo se le denomina tiempo de adquisicin

    y generalmente depende de la impedancia de la fuente. Se utiliza una ecuacin parahacer clculo de tiempo de adquisicin con precisin, cuyo valor mnimo es de 20S

  • 7/28/2019 Descripcin PIC 16F887

    29/47

    aproximadamente. Por consiguiente, para realizar una conversin con precisin, nose olvide este detalle.

    Reloj para la Conversin A/D

    El tiempo necesario para realizar una conversin A/D cuyo resultado es 1 bit sedefine en unidades de TAD. Se requiere que sea como mnimo 1,6S. Para realizaruna conversin completa de 10 bits se requiere un poco ms tiempo de lo esperado,son 11 TAD, tal como se puede apreciar en la secuencia de la figura 39. Como lafrecuencia de reloj as como la fuente de conversin A/D son determinadas porsoftware, es necesario seleccionar una de las combinaciones de los bits disponibles

    ADCS1 y ADCS0 antes de empezar a medir voltaje en una de las entradasanalgicas. Estos bits se almacenan en el registro ADCON0.

    Cualquier cambio de la frecuencia de reloj del microcontrolador afectar a lafrecuencia de reloj de la conversin A/D, lo que puede perjudicar al resultado de laconversin A/D. En la tabla 11 se muestran las caractersticas de la frecuencia deldispositivo. Los valores en las celdas sombreadas estn fuera del rangorecomendado.

    Cmo Utilizar el Convertidor A/D?

    Para llevar a cabo una conversin A/D sin problemas as como para evitar losresultados inesperados, es necesario considerar lo siguiente:

    El convertidor A/D no hace diferencia entre seales digitales y analgicas. Para

    evitar errores en medicin o daar el chip, los pines se deben configurarcomo entradas analgicas antes de que empiece el proceso de conversin.Los bits utiliza dos para este propsito se almacenan en los registros TRIS yANSEL (ANSELH);

    Al leer el estado de puerto con las entradas analgicas, el estado de los bitscorrespondientes se leer como cero lgico (0), sin reparar en el valor delvoltaje real en el pin; y

    Hablando en trminos generales, la medicin de voltaje en el convertidor estbasado en comparar voltaje de entrada con una escala interna que tiene1023 grados (210 - 1 =1023). El grado ms bajo de esta escala representa elvoltaje Vref-, mientras que el grado ms alto se refiere al voltaje Vref+. La

    figura 40 muestra los voltajes de referencia seleccionables as como susvalores mximos y mnimos.

  • 7/28/2019 Descripcin PIC 16F887

    30/47

    Registro ADCON0

    Como vimos, en este registro se almacenan los bits que definen los ciclos TAD deuna conversin A/D. En la figura 41 podemos apreciar la conformacin de esteregistro en el que cada BIT cumple la siguiente funcin:

    ADCS1, ADCS0 - A/D Conversion Clock Select bits (bits de seleccin de reloj de conversinA/D) selecciona la frecuencia de reloj utilizada para sincronizacin interna delconvertidor A/D, de acuerdo con los valores de la tabla 12. Asimismo afecta a laduracin de la conversin.

    Seal de reloj se genera por el oscilador interno RC que est integrado en el

    convertidor.

    CHS3-CHS0 - Analog Channel Select bits (bits de seleccin de canal analgico)selecciona un pin o un canal analgico para la conversin A/D, o sea para medir elvoltaje, tabla 13.

    GO/DONE - A/D Conversion Status bit (bit de estado de la conversin A/D) determina elestado actual de de la conversin:

    1 - La conversin A/D est en progreso. 0 - La conversin A/D ha finalizado. El bit se pone a cero automticamente por

    hardware cuando la conversin A/D finaliza.

    ADON - A/D On bit (bit de encendido A/D) habilita el convertidor A/D.

    1 - Convertidor A/D est habilitado. 0 - Convertidor A/D est deshabilitado.

    Veamos un ejemplo de uso en mikroC:

    /* Este cdigo es un ejemplo de leer el valor analgico del canal 2 y de visualizarlo

    en los puertos PORTB y PORTC como nmero binario de 10 bits. */

    #include unsigned int adc_rd;

    void main() {ANSEL = 0x04; // Configurar AN2 como pin analgico

  • 7/28/2019 Descripcin PIC 16F887

    31/47

    TRISA = 0xFF; // PORTA se configura como entradaANSELH = 0; // Configurar los dems pines AN como E/S digitalesTRISC = 0x3F; // Pines RC7 y RC6 se configuran como salidasTRISB = 0; // PORTB se configura como salida

    do {temp_res = ADC_Read(2); // Obtener el resultado de 10 bits de la

    conversin AD

    PORTB = temp_res; // Enviar los 8 bits ms bajos al PORTBPORTC = temp_res >> 2; // Enviar los 2 bits ms significativos a los

    RC7, RC6

    } while(1); // Quedarse en el bucle}

    Registro ADCON1

    El registroADCON1es el encargado de definir qu patita del C usaremos comoentrada analgica, su configuracin se muestra en la figura 42 y la funcin de cadabit es la siguiente:

    ADFM - A/D Result Format Select bit (bit de seleccin del formato del resultado de laconversin A/D)

    1 - Resultado de conversin est justificado a la derecha. No se utilizan los seisbits ms significativos del registro ADRESH. 0 - Resultado de conversin est justificado a la izquierda. No se utilizan los seis

    bits menos significativos del registro ADRESL.

    VCFG1 - Voltage Reference bit (bit de configuracin de voltaje de referencia) seleccionala fuente de voltaje de referencia bajo que se necesita para el funcionamiento delconvertidor A/D.

    1 - Voltaje de referencia bajo se aplica al pin Vref-

    0 - Voltaje de alimentacin Vss se utiliza como una fuente de voltaje de referenciabajo.

    VCFG0 - Voltage Reference bit (bit de configuracin de voltaje de referencia) seleccionala fuente de voltaje de referencia alto que se necesita para el fucionamiento delconvertidor A/D.

    1 - Voltaje de referencia alto se aplica al pin Vref+. 0 - Voltaje de alimentacin Vdd se utiliza como una fuente de voltaje de referencia

    alto.

  • 7/28/2019 Descripcin PIC 16F887

    32/47

    Para medir el voltaje en un pin de entrada por medio del convertidor A/D, se deberealizar lo siguiente:

    Paso 1 - Configuracin del puerto:

    Escribir un uno lgico (1) a un bit del registro TRIS, lo que resulta en configurar elpin apropiado como una entrada.

    Escribir un uno lgico (1) a un bit del registro ANSEL, lo que resulta en configurarel pin apropiado como una entrada analgica.

    Paso 2 - Configuracin del mdulo de la conversin A/D:

    Configurar voltaje de referencia en el registro ADCON1. Seleccionar una seal de reloj de la conversin A/D en el registro ADCON0. Seleccionar uno de los canales de entrada CH0-CH13 del registro ADCON0. Seleccionar el formato de dato por medio de ADFM del registro ADCON1. Habilitar el convertidor A/D al poner a uno el bit ADON del registro ADCON0.

    Paso 3 - Configuracin de la interrupcin (opcionalmente):

    Poner a cero el bit ADIF. Poner a uno los bits ADIE, PEIE y GIE.

    Paso 4 - Tiempo de espera para que transcurra el tiempo de adquisicin(aproximadamente 20S).

    Paso 5 - Inicio de la conversin poniendo a uno el bit GO/DONE del reg istroADCON0.

    Paso 6 - Esperar a que la conversin A/D finalice.

    Es necesario comprobar en el bucle de programa si el bit GO/DONE est a cero oesperar que se produzca una interrupcin (deber estar anteriormentehabilitada).

    Paso 7 - Lectura del resultado de la conversin A/D:

    Leer los registros ADRESH y ADRESL.

  • 7/28/2019 Descripcin PIC 16F887

    33/47

    Comparador Analgico

    Aparte del convertidor A/D, hay otro mdulo, que hasta hace poco ha sidoincorporado slo en los circuitos integrados que pertenecen a los llamadoscomponentes analgicos. Debido al hecho de que casi no hay ningn dispositivoautomtico complejo que en cierto modo no utilice estos circuitos, dos comparadoresde alta calidad, junto con los componentes adicionales estn integrados en elmicrocontrolador y conectados a sus pines.

    Cmo funciona un comparador?

    Bsicamente, el comparador analgico es un amplificador que compara la magnitudde voltajes en dos entradas. Dispone de dos entradas y una salida. Dependiendo decul voltaje de entrada es ms alto (valor analgico), un cero lgico 0 o un unolgico 1 (valores digitales) ser la salida, figura 43.

    Cuando el voltaje analgico en Vin - es ms alto que el voltaje anlogo en Vin+, lasalida del comparador estar a un nivel digital bajo.

    Cuando el voltaje analgico en Vin+ es ms alto que el voltaje anlogo en Vin-, lasalida del comparador estar a un nivel digital alto.

    El microcontrolador PIC16F887 dispone de dos de estos comparadores de voltajecuyas entradas estn conectadas a los pines de E/S RA0-RA3, mientras que lassalidas estn conectadas a los pines RA4 y RA5. Adems, hay una fuente de voltajede referencia interna en el chip mismo, la que vamos a discutir ms tarde.

    Estos dos circuitos estn bajo el control de los bits almacenados en los siguientesregistros:

    CM1CON0 est en control del comparador C1; CM2CON0 est en control del comparador C2; CM2CON1 est en control del comparador C2;

    Fuente Interna de Tensin de Referencia

    Uno de dos tensiones analgicas proporcionadas en las entradas del comparador espor lo general estable e inalterable. Es denominado tensin de referencia o voltaje

    de referencia (Vref). Para generarlo, se pueden utilizar tanto una fuente de voltajeexterna como una fuente de voltaje interna especial. El voltaje de referencia Vref se

  • 7/28/2019 Descripcin PIC 16F887

    34/47

    deriva despus de seleccionar una fuente, por medio de una red en escalera queconsiste en 16 resistencias, formando un divisor de voltaje. La fuente de voltaje esseleccionable por el bit VRSS del registro VRCON.

    Adems, la fraccin de voltaje proporcionada por la red de resistencias es

    seleccionable por los bits VR0-VR3 y utilizada como voltaje de referencia. Vea lafigura 44.

    El voltaje de referencia del comparador dispone de dos gamas con 16 diferentesniveles de voltaje cada una. La seleccin de gama es controlada por el bit VRR delregistro VRCON. El voltaje de referencia seleccionado CVref puede ser la salida alpin RA2/AN2 si el bit VROE se pone a uno.

    Aunque la idea principal era obtener el voltaje de referencia variable para elfuncionamiento de mdulos analgicos, de ese modo se obtiene un simpleconvertidor A/D. Este convertidor es muy til en algunas situaciones. Su

    funcionamiento est bajo el control del registro VRCON.

    Comparadores e Interrupcin

    Siempre que haya un cambio del estado lgico en la salida de un comparador, el bitde bandera CMIF del registro PIR se pone a uno. Ese cambio tambin causar unainterrupcin si los siguientes bits se ponen a uno:

    El bit CMIE del registro PIE = 1; El bit PEIE del registro INTCON = 1; y El bit GIE del registro INTCON = 1.

    Si una interrupcin est habilitada, un cambio en la salida de un comparador cuandoel microcontrolador est en modo de reposo, puede causar que el microcontroladorsalga de reposo y vuelva a funcionar en modo normal.

    Funcionamiento en Modo de Reposo (Sleep Mode)

    Si est habilitado antes de entrar en modo de reposo, el comparador se queda activodurante el modo de reposo. Si el comparador no se utiliza para "despertar" eldispositivo, el consumo de corriente se puede reducir en modo de reposo al apagarel comparador. Esto se lleva a cabo al poner a cero el bit CxON del registroCMxCON0.

    Para que el comparador "despierte" al microcontrolador del modo de reposo, el bit

  • 7/28/2019 Descripcin PIC 16F887

    35/47

    CxIE del registro IE2 y el bit PEIE del registro INTCON debern ponerse a uno. Lainstruccin que sigue a la instruccin Sleep siempre se ejecuta al salir del modo dereposo. Si el bit GIE del registro INTCON se pone a uno, el dispositivo ejecutar larutina de servicio de interrupcin.

    Registro CM1CON0

    Como hemos mencionado, este registro es nuevo en los microcontroladores deMicrochip y se coloca para el control del comparador C1 y su estructura puede verseen la figura 45.

    Los bits de este registro estn en control del comparador C1. Eso afectaprincipalmente a la configuracin de las entradas. Para explicarlo con ms claridad,vea la figura 46 en la que se muestran slo los componentes directamente afectadospor los bits de este registro.

    C1ON - Comparator C1 Enable bit (bit de habilitacin del comparador C1) habilita alcomparador C1.

    1 - Comparador C1 est habilitado. 0 - Comparador C1 est deshabilitado.

    C1OUT - Comparator C1 Output bit (bit de salida del comparador C1) es la salida delcomparador C1.

    Si C1POL = 1 (salida del comparador est invertida)

    1 - Voltaje de entrada C1Vin+ es ms bajo que el voltaje de entrada C1Vin-. 0 - Voltaje de entrada C1Vin+ es ms alto que el voltaje de entrada C1Vin-.

    Si C1POL = 0 (salida del comparador no est invertida)

    1 - Voltaje de entrada C1Vin+ es ms alto que el voltaje de entrada C1Vin-. 0 - Voltaje de entrada C1Vin+ es ms bajo que el voltaje de entrada C1Vin-.

    C1OE Comparator C1 Output Enable bit (bit de habilitacin de salida del comparador C1)

    1 - Salida del comparador C1OUT est conectada al pin C1OUT *. 0 - Salida del comparador se utiliza internamente.

    * Para habilitar que el bit C1OUT aparezca en el pin, se deben cumplir doscondiciones: C1ON = 1 (el comparador debe estar activado) y el bit correspondiente

  • 7/28/2019 Descripcin PIC 16F887

    36/47

    TRIS = 0 (pin se debe configurar como salida).

    C1POL - Comparator C1 Output Polarity Select bit (bit de seleccin de polaridad de salida

    del comparador C1) habilita la inversin del estado de la salida del comparador C1.

    1 - Salida del comparador C1 est invertida. 0 - Salida del comparador C1 no est invertida.

    C1R - Comparator C1 Reference Select bit (bit de seleccin de la fuente de voltaje dereferencia del comparador C1)

    1 - Entrada no invertida C1Vin+ est conectada a la fuente de voltaje de referenciaC1Vref.

    0 - Entrada no invertida C1Vin+ est conectada al pin C1IN+.

    C1CH1, C1CH0 - Comparator C1 Channel Select bit (bit de seleccin de canal delcomparador C1), vea la tabla 14.

    Registro CM2CON0

    Como hemos mencionado, este registro tambin es nuevo en losmicrocontroladores de Microchip, se coloca para el control del comparador C2 y suestructura puede verse en la figura 47.

    Los bits de este registro estn en control del comparador C2. Similar al caso anterior,la figura 48 muestra un esquema simplificado del circuito afectado por los bits deeste registro.

    C2ON - Comparator C2 Enable bit (bit de habilitacin del comparador C2) habilita elcomparador C2.

    1 - Comparador C2 est habilitado. 0 - Comparador C2 est deshabilitado.

    C2OUT - Comparator C2 Output bit (bit de salida del comparador C2) es la salida delcomparador C2.

    Si C2POL = 1 (salida del comparador est invertida)

    1 - Voltaje de entrada C2Vin+ es ms bajo que el voltaje de entrada C2Vin-. 0 - Voltaje de entrada C2Vin+ es ms alto que el voltaje de entrada C2Vin-.

  • 7/28/2019 Descripcin PIC 16F887

    37/47

    Si C2POL = 0 (salida del comparador no est invertida)

    1 - Voltaje de entrada C2Vin+ es ms alto que el voltaje de entrada C2Vin-.

    0 - Voltaje de entrada C2Vin+ es ms bajo que el voltaje de entrada C2Vin-.

    C2OE - Comparator C2Output Enable bit (bit de habilitacin de salida del comparador C2)

    1 - Salida del comparador C2OUT est conectada al pin C2OUT*. 0 - Salida del comparador se utiliza internamente.* Para habilitar que el bit C2OUT aparezca en el pin, se deben cumplir doscondiciones: C2ON = 1 (el comparador debe estar activado) y el bit correspondienteTRIS = 0 (pin se debe configurar como salida).

    C2POL - Comparator C2 Output Polarity Select bit (bit de seleccin de polaridad de salidadel comparador C2) habilita la inversin del estado de la salida del comparador C2.

    1 - Salida del comparador C2 est invertida. 0 - Salida del comparador C2 no est invertida.

    C2R - Comparator C2 Reference Select bit (bit de seleccin de la fuente de voltaje dereferencia del comparador C2)

    1 - Entrada no invertida C2Vin+ est conectada a la fuente de voltaje de referenciaC2Vref.

    0 - Entrada no invertida C2Vin+ est conectada al pin C2IN+.

    C2CH1, C2CH0 Comparator C2 Channel Select bit (bit de seleccin de canal delcomparador C2), vea la tabla 15.

    Registro CM2CON1

    Cuando Microchip migra al 16F887, los comparadores han sido modificados de formatal que el viejo registro CMCON ha sido modificado y ahora son independientes,teniendo cada uno su propio registro de control: CM1CON0, CM2CON0, CM2CON1.En la figura 49 podemos ver la estructura del registro CM2CON1, en el que lafuncin de cada BIT es la siguiente:

    MC1OUT Mirror Copy of C1OUT bit es una copia del bit C1OUT

    MC2OUT Mirror Copy of C2OUT bit es una copia del bit C2OUT

  • 7/28/2019 Descripcin PIC 16F887

    38/47

    C1RSEL Comparator C1 Reference Select bit (bit de seleccin de la fuente de voltaje dereferencia del comparador C1)

    1 - Voltaje seleccionable CVref se utiliza en la fuente de voltaje de referenciaC1Vref.

    0 - Voltaje de referencia fijo de 0,6V se utiliza en la fuente de voltaje de referenciaC1Vref.

    C2RSEL - Comparator C2 Reference Select bit (bit de seleccin de la fuente de voltaje dereferencia del comparador C2)

    1 - Voltaje seleccionable CVref se utiliza en la fuente de voltaje de referenciaC2Vref.

    0 - Voltaje de referencia fijo de 0,6V se utiliza en la fuente de voltaje de referenciaC2Vref.

    T1GSS - Timer1 Gate Source Select bit (bit de seleccin de la fuente de la compuerta deltemporizador Timer1)

    1 - Compuerta del temporizador Timer1 utiliza seal del pin T1G. 0 - Compuerta del temporizador Timer1 utiliza seal SYNCC2OUT.

    C2SYNC - Comparator C2 Output Synchronization bit (bit de sincronizacin de salida delcomparador C2)

    1 - Salida del comparador C2 est sincronizada con un flanco ascendente deseal de reloj del temporizador Timer1

    0 - Salida del comparador es una seal asncrona.

    Registro VRCON

    Este registro se utiliza para configurar el voltaje de referencia en caos de quevallamos a utilizarlo internamente por el PIC, su estructura se muestra en la figura 50y la funcin de cada BIT es la siguiente:

    VREN Comparator C1 Voltage Reference Enable bit (bit de habilitacin de la fuente devoltaje de referencia del comparador C1)

    1 - Fuente de voltaje de referencia CVref est encendido.

    0 - Fuente de voltaje de referencia CVref est apagado.

  • 7/28/2019 Descripcin PIC 16F887

    39/47

    VROE Comparator C2 Voltage Reference Enable bit (bit de habilitacin de la fuente devoltaje de referencia del comparador C2)

    1 - Fuente de voltaje de referencia CVref est conectada al pin. 0 - Fuente de voltaje de referencia CVref no est conectada al pin.

    VRR - CVref Range Selection bit (bit de seleccin de gama de voltaje de referencia Vref)

    1 - Fuente de voltaje de referencia se ajusta a producir baja gama de voltaje. 0 - Fuente de voltaje de referencia se ajusta a producir alta gama de voltaje.

    VRSS - Comparator Vref Range selection bit (bit de seleccin de gama de voltaje dereferencia Vref del comparador)

    1 - Voltaje de referencia est en la gama de Vref+ a Vref-. 0 - Voltaje de referencia est en la gama de Vdd a Vss. (voltaje de alimentacin).

    VR3 - VR0 CVref Value Selection (seleccin de valor de voltaje de referencia)

    Si VRR = 1 (gama baja)

    El voltaje de referencia se calcula por medio de la frmula: CVref =([VR3:VR0]/24)Vdd.

    Si VRR = 0 (gama alta)

    El voltaje de referencia se calcula por medio de la frmula CVref = Vdd/4 +([VR3:VR0]/32)Vdd.

    Pasos a seguir para utilizar apropiadamente los comparadores integrados:

    Paso 1 - Configuracin del mdulo:

    Para seleccionar el modo apropiado, se deben configurar los estados de los bitsde los registros CM1CON0 y CM2CON0. La interrupcin debe estardeshabilitada durante el cambio de modo.

    Paso 2 - Configurar la fuente de voltaje de referencia Vref interna (slo si se utiliza).En el registro VRCON es necesario realizar lo siguiente:

    Seleccionar una de dos gamas de voltaje por medio del bit VRR. Configurar el voltaje de referencia Vref necesario por medio de los bits VR3 - VR0.

  • 7/28/2019 Descripcin PIC 16F887

    40/47

  • 7/28/2019 Descripcin PIC 16F887

    41/47

    El LFINTOSC es un oscilador interno de baja frecuencia calibrado a 31kHz. Suspulsos de reloj se utilizan para funcionamiento de los temporizadores de encendido yperro guardin, asimismo puede utilizarse como fuente de seal de reloj para elfuncionamiento de todo el microcontrolador.

    El bit System Clock Select(bit de seleccin del reloj del sistema - SCS) del registroOSCCON determina si una fuente de seal de reloj del microcontrolador ser internao externa.

    Registro OSCCON

    El registro OSCCON gobierna el microcontrolador y las opciones de seleccin defrecuencia. Tal como puede observarse en la figura 52, contiene los siguientes bits:bits de seleccin de frecuencia (IRCF2, IRCF1, IRCF0), bits de estado de frecuencia(HTS, LTS), bits de control de reloj del sistema (OSTA, SCS).

    IRCF2-0 - Internal Oscillator Frequency Select bits. (bits de seleccin de frecuencia deloscilador interno). El valor del divisor de frecuencias depende de la combinacin delos tres bits de la tabla . La frecuencia de reloj del oscilador interno se determina dela misma manera.

    OSTS - Oscillator Start-up Time-out Status bit (bit de estado del temporizador deencendido) indica cul fuente de reloj est actualmente en uso. Es un bit de slolectura.

    1 - Se utiliza el oscilador de reloj externo. 0 - Se utiliza uno de los osciladores de reloj interno (HFINTOSC o LFINTOSC).

    HTS - HFINTOSC Status bit (8 MHz - 125 kHz) (bit de estado del HFINTOSC) indica si eloscilador interno de alta frecuencia funciona en modo estable.

    1 - HFINTOSC est estable. 0 - HFINTOSC no est estable.

    LTS - LFINTOSC Stable bit (31 kHz) (bit de estado del LFINTOSC) indica si el osciladorde baja frecuencia funciona en modo estable.

    1 - LFINTOSC est estable.

    0 - LFINTOSC no est estable.

  • 7/28/2019 Descripcin PIC 16F887

    42/47

    SCS - System Clock Select bit (bit de seleccin del reloj del sistema) determina culoscilador se utilizar como una fuente de reloj.

    1 - Oscilador interno se utiliza como reloj del sistema. 0 - Oscilador externo se utiliza como reloj del sistema.El modo del oscilador se

    configura por medio de los bits, denominados Palabra de Configuracin, quese escribe en la memoria del microcontrolador durante el proceso de laprogramacin.

    Modos de Reloj Externo

    El oscilador externo se puede configurar para funcionar en uno de varios modos, lo

    que habilita que funcione a diferentes velocidades y utilice diferentes componentespara estabilizar la frecuencia. El modo de funcionamiento se selecciona durante elproceso de escribir un programa en el microcontrolador. Antes que nada, esnecesario activar el programa en una PC que se utilizar para programar elmicrocontrolador. En este caso, es el programa PICflash. Pulse sobre la casilla deloscilador y seleccione uno de la lista desplegable. Los bits apropiados se pondrn auno automticamente, formando parte de varios bytes, denominados Palabra deConfiguracin.

    Durante el proceso de la programacin del microcontrolador, los bytes de la Palabrade Configuracin se escriben en la memoria ROM del microcontrolador y se

    almacenan en los registros especiales no disponibles al usuario. A base de estosbits, el microcontrolador sabe qu hacer, aunque eso no se indica explcitamenteen el programa. Si estuviera trabajando con el entorno mikroC de mikroElklectrnica,la configuracin sera como la mostrada en la figura 53, donde se muestra que elmodo de funcionamiento se selecciona despus de escribir y compilar un programa

    Oscilador Externo en Modo EC

    El modo de reloj externo (EC - external clock) utiliza un oscilador externo como unafuente de seal de reloj como el mostrado en la figura 54. La mxima frecuencia deseal de reloj est limitada a 20MHz, figura 55.

    Las ventajas del funcionamiento del oscilador externo en modo EC son lassiguientes:

    La fuente de reloj externa independiente est conectada al pin de entrada OSC1.

  • 7/28/2019 Descripcin PIC 16F887

    43/47

    El pin OSC2 est disponible como pin de E/S de propsito general; Es posible sincronizar el funcionamiento del microcontrolador con los dems

    componentes incorporados en el dispositivo; En este modo el microcontrolador se pone a funcionar inmediatamente despus

    de encenderlo. No se requiere esperar para estabilizar la frecuencia. Al deshabilitar temporalmente la fuente de reloj externa, se detiene el

    funcionamiento del dispositivo, dejando todos los datos intactos. Despus dereiniciar el reloj externo, el dispositivo sigue funcionando como si no hubierapasado nada.

    Oscilador Externo en Modo LP, XT HS

    Los modos LP, XT y HS utilizan un oscilador externo como una fuente de reloj cuyafrecuencia est determinada por un cristal de cuarzo o por resonadores cermicos

    (figura 56) conectados a los pines OSC1 y OSC2, figura 57. Dependiendo de lascaractersticas de los componentes utilizados, seleccione uno de los siguientesmodos:

    Modo LP - (Baja potencia) se utiliza slo para cristal de cuarzo de baja frecuencia.Este modo est destinado para trabajar con cristales de 32.768kHznormalmente embebidos en los relojes de cristal. Es fcil de reconocerlos porsus dimensiones pequeas y una forma cilndrica. Al utilizar este modo elconsumo de corriente ser menor que en los dems modos.

    Modo XT se utiliza para cristales de cuarzo de frecuencias intermedias hasta 8MHz.El consumo de corriente es media en comparacin con los dems modos.

    Modo HS - (Alta velocidad) se utiliza para cristales de reloj de frecuencia ms altade 8MHz. Al utilizar este modo el consumo de corriente ser mayor que enlos dems modos.

    Resonadores Cermicos en Modo XT HS

    Los resonadores cermicos, figura 58 son similares a los cristales de cuarzo segnsus caractersticas, por lo que se conectan de la misma manera. A diferencia de loscristales de cuarzo, son ms baratos y los osciladores que hacen uso de ellos sonde calidad ms baja. Se utilizan para las frecuencias de reloj entre 100kHz y 20MHz.

  • 7/28/2019 Descripcin PIC 16F887

    44/47

    Oscilador Externo en Modo RC y RCIO

    El uso de los elementos para estabilizar la frecuencia sin duda alguna tiene muchasventajas, pero a veces realmente no es necesario. En la mayora de casos eloscilador puede funcionar a frecuencias que no son precisamente definidas, as quesera una prdida de dinero embeber tales elementos. La solucin ms simple y msbarata es estas situaciones es utilizar una resistencia y un capacitor para elfuncionamiento del oscilador. Hay dos modos:

    Modo RC. Cuando el oscilador externo se configura a funcionar en modo RC, el pinOSC1 debe estar conectado al circuito RC como se muestra en la figura 59. La sealde frecuencia del oscilador RC dividida por 4 est disponible en el pin OSC2. Estaseal se puede utilizar para la calibracin, sincronizacin o para otros propsitos.

    Modo RCIO. De manera similar, el circuito RC est conectado al pin OSC1. Esta vez,el pin OSC2 est disponible para ser utilizado como pin de E/S de propsito general,figura 60.

    En ambos casos se le recomienda utilizar los componentes como se muestra en lafigura.La frecuencia de este oscilador se calcula por medio de la frmula f = 1/Tsegn la que:

    f = frecuencia [Hz]; T = R * C = constante de tiempo [s]; R = resistencia elctrica [ ]; y C = capacitancia del condensador [F].

    Modos de reloj Interno

    El circuito del oscilador interno consiste en dos osciladores separados que sepueden seleccionar como la fuente del reloj del microcontrolador:

    El oscilador HFINTOSC est calibrado de fbrica y funciona a 8MHz. La frecuencia deeste oscilador se puede configurar por el usuario por medio de software utilizandolos bits del registro OSCTUNE.

    El oscilador LFINTOSCno est calibrado de fbrica y funciona a 31kHz.

  • 7/28/2019 Descripcin PIC 16F887

    45/47

    Similar al oscilador externo, el interno tambin puede funcionar en varios modos. Elmodo de funcionamiento se selecciona de la misma manera que en el osciladorexterno - por medio de los bits que forman Palabra de configuracin. En otras

    palabras, todo se lleva a cabo dentro del software de PC antes de escribir unprograma en el microcontrolador.

    OSCILADOR INTERNO EN MODO INTOSC

    En este modo, el pin OSC1 est disponible para ser utilizado como pin de E/S depropsito general, figura 61. La seal de frecuencia del oscilador interno dividida por4 est disponible en el pin OSC2.

    OSCILADOR INTERNO EN MODO INTOSCIO

    En este modo, los dos pines estn disponibles como pines de E/S de propsitogeneral, figura 62.

    Configuracin del Oscilador Interno

    El oscilador interno consiste en dos circuitos separados:

    1. El oscilador interno de alta frecuencia HFINTOSC est conectado al post-escalador(divisor de frecuencias). Est calibrado de fbrica y funciona a 8MHz. Al utilizar elpost-escalador, este oscilador puede producir una seal de reloj a una de sietefrecuencias. La seleccin de frecuencia se realiza dentro del software utilizando lospines IRCF2, IRCF1 y IRCF0 del registro OSCCON.

    El HFINTOSC est habilitado al seleccionar una de siete frecuencias (entre 8MHz y125kHz) y poner a uno el bit de la fuente de reloj del sistema (SCS) del registroOSCCON. Como se muestra en la figura 63, todo el procedimiento se realiza pormedio de los bits del registro OSCCON.

    2. El oscilador de baja frecuencia LFINTOSC no est calibrado de fbrica y funciona a31kHz. Est habilitado al s