Microcontroladores PIC ATE-Universidad de Oviedo COMUNICACIN SERIE PARA SISTEMAS BASADOS EN MICROCONTROLADORES PIC MDULO SSP (SYNCHRONOUS SERIAL PORT) Fernando Nuo Garca MCU Conversores A/D EEPROM serie LCD con SPI Registros despl. 2 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo MDULO SSP (SYNCHRONOUS SERIAL PORT) Puerto Serie Sncrono: Interface de Comunicacin Serie Sncrona Pensado para comunicacin con otros Microcontroladores o Perifricos: EEPROM serie (almacenamiento de datos no voltiles) Registros de Desplazamiento (expansin de entradas y/o salidas) Drivers de Displays (reduccin de conexiones) Conversores A/D (digitalizacin externa de seales) .... Modos de Operacin posibles del mdulo SSP: - SPI (Serial Peripheral Interface): Interface de Perifricos Serie SPI: Es una Marca Registrada de Motorola Corporation - I2C (Inter-Integrated Circuit): Entre Circuitos Integrados I2C: Es una Marca Registrada de Philips 3 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo 1.- Interface SPI en el mdulo SSP Permite la transmisin y recepcin sncrona simultnea de datos de 8 bits Para la comunicacin debe existir un dispositivo Maestro (genera la seal de reloj) y uno varios esclavos (reciben la seal de reloj) En los microcontroladores PIC hay 3 pines asociados con la comunicacin SPI: Salida Serie de Datos (SDO) Serial Data Output -> RC5 Entrada Serie de Datos (SDI) Serial Data Input -> RC4 Reloj de comunicacin Serie (SCK) Serial Clock -> RC3 De manera adicional, hay un 4 pin que se puede utilizar cuando el microcontrolador se configura como dispositivo Esclavo: Seleccin de Esclavo (SS) Slave Select -> RA5 La inicializacin del Interface SPI se realiza mediante la configuracin de los bits de control SSPCON<5:0> y SSPSTAT<7:6> 4 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Diagrama de Bloques del Mdulo SSP en modo SPI Entrada serie de bits Salida serie Reloj de Salida (Maestro) Registro de Desplazamiento de transmisin/recepcin (no accesible) Seleccin Esclavo (opcional si es Esclavo) Reloj de Entrada (Esclavo) Registro de Buffer (lectura/escritura) 5 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 a7 Reloj SDO SDO SDI SDI MAESTRO SPI ESCLAVO SPI SCK SCK a7 b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 Reloj SDO SDO SDI SDI MAESTRO SPI ESCLAVO SPI SCK SCK Flanco 1 en reloj SCK Situacin Inicial ENVO/RECEPCIN SIMULTNEA 6 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo b0 b1 b2 b3 b4 b5 b6 b7 a0 a1 a2 a3 a4 a5 a6 a7 Reloj SDO SDO SDI SDI MAESTRO SPI ESCLAVO SPI SCK SCK a7 b0 b1 b3 b4 b7 a0 a1 a2 a3 a4 a5 a6 Reloj SDO SDO SDI SDI MAESTRO SPI ESCLAVO SPI SCK SCK b6 b5 Flanco 8 en SCK b2 Situacin Inicial Situacin Final Intercambiados los 8 bits de datos 7 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo SSPSR (registro de desplazamiento) enva y recoge los bits simultneamente SSPBUF tiene doble funcin: para cargar el registro SSPSR para envo de datos y para recoger los datos recibidos en SSPSR b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 SSPBUF SSPSR 1.- Carga de SSPSR a travs de SSPBUF a7 b0 b1 b2 b3 a4 a5 a6 b0 b1 b2 b3 b4 b5 b6 b7 SSPBUF SSPSR 2.- SSPSR enviando/recibiendo SSPBUF b0 b1 b2 b3 b4 b5 b6 b7 SSPSR a7 a0 a1 a2 a3 a4 a5 a6 3.- Completada recepcin/envo SSPSR a7 a0 a1 a2 a3 a4 a5 a6 a7 a0 a1 a2 a3 a4 a5 a6 SSPBUF 4.- SSPSR carga SSPBUF con recepcin SSPIF=1 SSPIF=0 por software 8 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo * SSPIF = PIR1<3> (Completada transmisin) Lectura/escritura Indica que se ha completado un envo/recepcin en SSPSR Se debe poner a 0 por software, puede generar interrupcin * BF = SSPSTAT<0> (Buffer de recepcin lleno) Slo lectura Se pone a 1 cuando se ha completado la recepcin de un dato se pone a 0 por hardware cuando se lee el registro SSPBUF Se emplear normalmente nicamente en modo de recepcin * WCOL = SSPCON<7> (Colisin de Escritura) Lectura/escritura Indica que se ha intentado escribir en SSPBUF mientras se est transmitiendo un dato previo. Si se da tal situacin, se debe poner a 0 por software * SSPOV = SSPCON<6> (Desbordamiento en Recepcin) Lectura/escritura Indica que se ha recibido un byte nuevo mientras SSPBUF contiene un dato recibido anteriormente no leido. El nuevo dato se pierde y ya no se actualiza SSPBUF. Se pondr a 0 por software F l a g s
I n d i c a d o r e s
e n
m o d o
S P I 9 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo El mdulo SPI puede utilizarse (independientemente de modo Maestro o Esclavo): a) Para envo y recepcin simultnea (SDI y SDO) SSPBUF debe leerse antes de cargarlo con el nuevo dato a enviar b) Slo para enviar datos (SDO) SSPBUF se puede cargar con un nuevo dato nicamente despus de haberse completado el envo del anterior dato Si se pretende cargar un dato en SSPBUF durante una transmisin se produce una colisin y dicha carga ser ignorada c) Slo para recibir datos (SDI) Slo en este caso SSPBUF se utilizara como buffer intermedio de recepcin, se puede iniciar la recepcin de un nuevo dato antes de leer el dato que se acaba de recibir 10 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 SSPBUF SSPSR SDI SDO SSPSR a7 a0 a1 a2 a3 a4 a5 a6 a7 a0 a1 a2 a3 a4 a5 a6 SSPBUF SDI SDO a) Para envo y recepcin simultnea Envo de un dato b) Slo para enviar datos b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 SSPBUF SSPSR SDO a7 b0 b1 b2 b3 a4 a5 a6 b0 b1 b2 b3 b4 b5 b6 b7 SSPBUF SSPSR SDO Intento de carga de Dato2 en SSPBUF durante envo COLISIN WCOL=1 (1) ( 2 ) Antes de cargar un nuevo envo debemos leer recepcin Recepcin dato Carga de un dato 11 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo c) Slo para recibir datos b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 SSPBUF SSPSR Se completa la recepcin de un dato (BF=1) Se lee el dato recibido (BF=0) No se escribe nada en SSPBUF (slo recibimos) y se inicia una nueva recepcin SDI SSPBUF a7 b0 b1 b2 b3 a4 a5 a6 b0 b1 b2 b3 b4 b5 b6 b7 SSPSR SDI Si antes de leer el dato anterior se completa la recepcin de un nuevo dato, se perdera el dato previamente recibido, se da error de OVERFLOW (SSPOV=1). Este error slo es posible si el dispositivo es ESCLAVO Un microcontrolador MAESTRO inicia una nueva transferencia cargando el dato en SSPBUF 12 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo ESPECIFICACIN DEL MODO SPI EN LA INICIALIZACIN * Modo de funcionamiento: Maestro (SCK salida) o Esclavo (SCK entrada) * Polaridad del Reloj: Estado Inactivo del Reloj (SCK) a 1 a 0 * Flancos activos del Reloj: Salida de bits en flancos de subida o bajada en SCK * Muestreo bits de datos: Muestreo de entrada en el centro o al final del bit * Frecuencia de Reloj: SLO SI ES MAESTRO, frecuencia en salida SCK * Modo de Seleccin: SLO SI ES ESCLAVO - Control externo de SDI y SDO con entrada SS - Sin control externo con pin SS 13 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo El dispositivo Maestro inicia la transferencia enviando la seal de reloj SCK, los datos salen en los flancos programados y se capturan las entradas en el momento indicado con el bit SMP si es Maestro. Los dos dispositivos deben ser programados con la misma POLARIDAD DE RELOJ para que reciban y emitan a la vez Ejemplo de Conexin 14 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo HABILITACIN DE LOS PINES DE ENTRADA/SALIDA de SSP Para habilitar el mdulo SSP, es necesario que el bit SSPEN se encuentre a 1. Si se desea resetear el mdulo SSP, se debe poner a 0 este bit y luego volverlo a 1 Para que la funcionalidad de los pines SDI, SDO, SCK y /SS sea la determinada por los bits de configuracin, es necesario adems que los bits de direccin de datos (en TRISA y en TRISC) tengan la direccin adecuada: SDI (RC4) debe tener TRISC<4> = 1 para ser entrada de datos SDO (RC5) debe tener TRISC<5> = 0 para que sea salida de datos SCK (RC3) debe tener TRISC<3> = 0 si el microcontrolador es MAESTRO y TRSC<3> = 1 si se define como ESCLAVO /SS (RA5) debe ser TRISA<5> = 1 si es ESCLAVO y tiene control externo Cualquier funcin no deseada en el puerto serie puede ser omitida si en el registro de direccin de datos (TRIS) se configura el valor opuesto
P.ej.: Si en modo Maestro slo se van a enviar datos, SDI puede usarse como una salida de propsito general del microcontrolador cargando TRISC<4>=0 15 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo B i t s
A s o c i a d o s
c o n
e l
m o d o
S P I Registro SSPCON<7:5> (0x14) 16 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Registro SSPCON (0x14) B i t s
A s o c i a d o s
c o n
e l
m o d o
S P I Registro SSPCON<4:0> (0x14) 17 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo B i t s
A s o c i a d o s
c o n
e l
m o d o
S P I Registro SSPSTAT (0x94) 18 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Registros y bits Asociados con el Modo SPI 19 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Funcionamiento como MAESTRO El Maestro puede iniciar la transferencia en cualquier momento puesto que controla la lnea SCK. El protocolo software determinar cuando el Esclavo est en condiciones de enviar datos. En modo Maestro, la transmisin/recepcin se inicia tan pronto como se escribe en el registro SSPBUF. Si se desea slo recibir, la lnea SDO puede desactivarse definindola como entrada, los datos presentes en la lnea SDI irn entrando al registro SSPSR a la velocidad marcada por el reloj de transferencia La velocidad de transferencia del modo SPI es programable entre los valores: Fosc/4 Fosc/16 Fosc/64 Frecuencia de Salida de TMR2/2 siendo por tanto la mxima velocidad de trasnferencia: 5Mbps (con Fosc=20MHz) La polaridad del reloj y los flancos activos se configuran con los bits CKP y CKE 20 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Escritura en SSPBUF CRONOGRAMA SPI MAESTRO Muestreo caso SMP=1 Muestreo caso SMP=0 BYTE COMPLETO SSPIF=1 21 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Funcionamiento como ESCLAVO sin Seleccin Externa El Esclavo el dato es transmitido/recibido cuando aparecen los pulsos en la entrada SCK Cuando el ltimo bit termina de ser muestreado, el flag SSPIF se pone a uno La polaridad del reloj y los flancos activos se configuran con los bits CKP y CKE El muestreo de los bits de datos se realiza siempre en la mitad de un bit en el modo Esclavo (SMP=0 siempre en modo Esclavo) La seal de reloj debe cumplir las especificaciones mnimas de tiempos mnimos en los estados alto y bajo En modo de bajo consumo (SLEEP) el Esclavo puede transmitir y recibir datos puesto que el registro de desplazamiento es asncrono con el oscilador.
Al completar una transferencia de un byte, el dispositivo podra despertarse si se encontraba dormido 22 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo CRONOGRAMA SPI ESCLAVO SIN SELECCIN EXTERNA CKE=0 F.subida F.bajada Muestreo siempre con SMP=0 (en mitad del bit) con el flanco opuesto al de salida de los datos Esperando a que el Maestro genere flancos BYTE COMPLETO SSPIF=1 23 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Funcionamiento como ESCLAVO con Seleccin Externa El pin /SS (nivel activo bajo) permite la conexin de varios esclavos con un Maestro, habilitando en cada instante nicamente la transferencia con un Esclavo El dispositivo Maestro debe seleccionar para la transferencia nicamente uno de los Esclavos mediante la activacin de la seal /SS (a cero) del elegido, permaneciendo el resto en estado alto Se debe configurar el modo SSP Esclavo con SSPCON<3:0> = 0100 y adems definir el pin /SS/RA5 como entrada con TRISA<5>=1 Cuando /SS est a 0, se permite transmisin/recepcin y el pin SDO se maneja internamente por parte del registro dedesplazamiento Si el pin /SS est a 1, el pin SDO se sita en alta impedancia respecto al registro de desplazamiento (podran necesitarse resistencias de polarizacin). Adems, con /SS a 1 (Vdd) el mdulo SPI permanecer reseteado igual que si SSPEN=0 y el contador de bits entrantes permanecer a cero 24 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo CRONOGRAMA SPI ESCLAVO CON SELECCIN EXTERNA Muestreo siempre con SMP=0 (en mitad del bit) con el flanco opuesto al de salida de los datos Necesaria seal /SS a 0 25 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Interface SPI: Posibilidades de conexin A).- Un Maestro y un Esclavo con conexin a 3 hilos, MAESTRO ESCLAVO SDO SDI SCK SDI SDO SCK Transmisin/recepcin simultnea Transmisin/recepcin pero no simultneas B).- Un Maestro y un Esclavo con conexin a 2 hilos, MAESTRO ESCLAVO SDO SDI SCK SDI SDO SCK 2 hilos 3 hilos Conflicto en las Salidas ! 26 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo B).- Un Maestro y un Esclavo con conexin a 2 hilos MAESTRO ESCLAVO SDO SDI SCK SDI SDO SCK 2 hilos MAESTRO (TRISC<5>=0) ESCLAVO (TRISC<5>=1) SDO SDI SCK SDI SCK 2 hilos Estado1: Maestro emite (y recibe lo mismo que est emitiendo), Esclavo recibe Slo puede haber una salida activa, el receptor anula su salida de datos SDO por software mediante el registro de direccin de datos (TRISC<5>=1 define SDO como entrada) Conflicto en las Salidas ! 27 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo B).- Un Maestro y un Esclavo con conexin a 2 hilos, MAESTRO ESCLAVO SDO SDI SCK SDI SDO SCK Slo puede haber una salida activa, el receptor anula su salida de datos SDO por software mediante el registro de direccin de datos (TRISC<5>=1 define SDO como entrada) 2 hilos MAESTRO (TRISC<5>=1) ESCLAVO (TRISC<5>=0) SDI SCK SDI SDO SCK 2 hilos Estado 2: Maestro recibe, Esclavo emite (y recibe lo mismo que est emitiendo) Conflicto en las Salidas ! 28 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo MAESTRO ESCLAVO 1 ESCLAVO 2 ESCLAVO n SDO SDI SDI SDI ...... SCK SCK SCK SCK C).- Un Maestro emitiendo y varios Esclavos recibiendo, conexin a 2 hilos No sera necesario el control de la seleccin del esclavo, todos tendran la entrada de datos activa SDO SDO SDO SDI 29 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo D).- Un Maestro y varios Esclavos con posibilidad de emisin, 3 h. y lneas de seleccin MAESTRO ESCLAVO 1 ESCLAVO 2 ESCLAVO n SDO SDI SDI SDI ...... SCK SCK SCK SCK SDO SDO SDO SDI /SS /SS /SS Circuito de Seleccin de Esclavo (directo o decodif.) . . . P O R T ? Slo un Esclavo Seleccionado que maneja la lnea SDO y que recibe por SDI (/SS=0, resto /SS=1) 30 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Utilidades de SPI: Expansin de Puertos de Entrada con Registro de Desplazamiento RC5/SDO RC4/SDI RC3/SCK RD7 LOAD CLOCK b7 b6b5b4b3b2b1 b0 Salida serie Entrada serie REGISTRO DE DESPLAZAMIENTO 74HC165 MDULO SPI Microcontrolador 1.- Pulso en RD7 para Lectura del Puerto (carga paralelo de 74HC165) 2.- Aparicin de flancos en SCK por escritura interna en SSPBUF se debe configurar CKP=1, CKE=1 3.- Tras 8 flancos de subida, entra el dato completo Datos Puerto de entrada SECUENCIA 31 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo 74HC165: Registro de Desplazamiento Entrada Paralelo de datos Activacin carga paralelo Entrada serie Salida serie Reloj Habilitacin 32 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo b7 b6 b5 b4 b3 b2 b1 b0 RC5/SDO RC4/SDI RC3/SCK RD7 LOAD CLOCK b7 b6b5b4b3b2b1 b0 Salida serie Entrada serie REGISTRO DE DESPLAZAMIENTO 74HC165 MODO SPI Microcontrolador RD7 SCK (CKP=1, CKE=1) SDI Escritura en SSPBUF b0 Dato completo en SSPBUF Cronograma del proceso de lectura del puerto adicional Desde el MCU PIC: 1.- Bajar y subir RD7 2.- Poner SSPIF=0 3.- Escribir en SSPBUF cualquier cosa 4.- Detectar SSPIF=1 5.- Recoger dato en SSPBUF 33 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Expansin para Puertos de Entrada de mayor tamao (p.e. 3 bytes) 74HC165 74HC165 74HC165 Sal Sal Sal Ent Ent Ent RD7 SDI SCK PIC BYTE 1 BYTE 2 BYTE 3 Procedimiento para leer los 3 bytes: 1.- Pulso bajo en RD7 para leer simultneamente los 3 bytes 2.- Borrar SSPIF y escribir en SSPBUF -> se generan 8 flancos y entra BYTE 1 pasando BYTE 2 a la posicin de BYTE 1 y BYTE 3 a la de BYTE 2 3.- Se recoge BYTE 1 en SSPBUF y se almacena 4.- Borrar SSPIF y escribir en SSPBUF -> 8 flancos en SCK y entra BYTE 2... 5.- Se recoge BYTE 2 en SSPBUF y se almacena 6.- Borrar SSPIF y escribir en SSPBUF -> 8 flancos en SCK y entra BYTE 3... 7.- Se recoge BYTE 3 en SSPBUF y se almacena Carga Carga Carga 3 Registros de Desplazamiento Encadenados 34 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Utilidades de SPI: Expansin de Puertos de Salida con Registro de Desplazamiento RC5/SDO RC4/SDI RC3/SCK RD7 MDULO SPI Microcontrolador b6 b5 b4 b3 b2 b1 b0 D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R Registro 74HC595 b7 SECUENCIA A SEGUIR 1.- Escribir el dato a sacar en SSPBUF 2.- Aparecen 8 flancos en SCK que cargan el dato en los biestables D internos del 74HC595 3.- Generar flanco de subida en RD7 para que salga el dato al exterior 4.- Dato retenido y disponible en la salida Reloj ent. serie Reloj sal. paralelo Ent.serie 35 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo RC5/SDO RC4/SDI RC3/SCK RD7 MDULO SPI Microcontrolador b6 b5 b4 b3 b2 b1 b0 D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R Registro 74HC595 b7 Cronograma del proceso de escritura en el puerto adicional b7 b6 b2 b5 b4 b3 b1 b0 SCK (CKP=1, CKE=0) SDO RD7 Escritura en SSPBUF (antes pondremos SSPIF=0) Dato completo en Registro (nos enteramos por SSPIF=1) Flanco de subida para salida al exterior Los bits salen por SDO en los flancos de bajada Los bits entran al registro en los flancos de subida (ya estables los bi) 36 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo Desde el punto de vista del MCU PIC: 1.- Poner SSPIF=0 2.- Escribir en SSPBUF el dato a sacar 3.- Detectar SSPIF=1 4.- Bajar y subir RD7 (flanco de subida) RC5/SDO RC4/SDI RC3/SCK RD7 MDULO SPI Microcontrolador b6 b5 b4 b3 b2 b1 b0 D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q SET CLR D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R D Q Q S E T C L R Registro 74HC595 b7 Qu hacer para escribir en el puerto adicional 37 Comunicacin Serie: Mdulo SSP_SPI Microcontroladores PIC ATE-Universidad de Oviedo 74HC595 74HC595 74HC595 Sal Sal Ent Ent Ent RD7 SDO SCK PIC BYTE 1 BYTE 2 BYTE 3 R.par. 3 Registros de Desplazamiento Encadenados Expansin para Puertos de Salida de mayor tamao (p.e. 3 bytes) R.par. R.par. Procedimiento para escribir los 3 bytes de salida: 1.- Borrar SSPIF y escribir en SSPBUF el BYTE 3, se generan 8 flancos y entra BYTE 3 en el registro interno de la izquierda (lo detectamos por SSPIF=1) 2.- Se borra SSPIF y se escribe BYTE 2 en SSPBUF, se generan otros 8 flancos y pasa BYTE 3 al registro central, entrando BYTE 2 en el de la izquierda 4.- Borrar SSPIF y escribir en SSPBUF el BYTE 1, otros 8 flancos en SCK y entra BYTE 3 a la derecha, queda BYTE 2 en el centro y BYTE 1 a la izquierda 5.- Pulso bajo en RD7 para generar un flanco de subida que haga que los bytes almacenados internamente en los registros salgan al exterior todos a la vez