Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
UNIDAD_III_COMUNICACIÓN SERIAL_2021-1.pdf
1. Comunicación Serial
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programade Ing. Biomédica
Unidad Curricular:
Microcontroladores y Microprocesadores II
2. ¡Hola!
Nos Encontramos nuevamente, espero estés de Maravilla.
Continuamos navegando por el mundo de los
Microcontroladores, esta vez haremos una parada en la
estación de la Comunicación Serial, aprenderemos a
diferenciarla, y a utilizar el Protocolo RS232, uno de los mas
usado para este tipo de comunicación.
¡Vamos a Darle!
@profesor_y
2
Ing. Wilfran Yaraure
Facilitador
3. Comunicación de los
Microcontroladores
Los microcontroladores pueden establecer conexión o comunicación con
otros dispositivos como: memorias, sensores, ordenadores, e incluso otros
microcontroladores, e intercambiar datos e información con ellos.
Para ello Pueden Utilizar 2 tipos de comunicación como lo son La
comunicación Serial y La Comunicación Paralela
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programade Ing. Biomédica
Unidad Curricular:
Microcontroladores y Microprocesadores II
4. Tipos de Comunicación
4
1
Comunicación
Paralela
1. Transmite todos los bits de un
dato de manera simultánea,
2. La velocidad de transferencia
es rápida,
3. Debe utilizar una gran
cantidad de líneas,
4. mas costoso
5. Tiende a atenuarse a grandes
distancias, por la capacitancia
entre conductores.
2
Comunicación
Serial
1. Trasmite los en forma
secuencial enviando bit a bit
de cada palabra de
información binaria.
2. La velocidad de transferencia
es menor que la paralela pero
eficiente de igual manera
3. Utilizan un solo hilo para
llevar la información
4. Mas económico y común
5. Menos Atenuación por que
usa menos conductores
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
5. Tipos de Comunicación Serial
5
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Comunicación Serial
Comunicación serial Asíncrona
Comunicación serial Síncrona
Utiliza 2 líneas de Transmisión: una línea
sobre la cual se transmitirán los datos y una
línea la cual contendrá los pulsos de reloj,
que indicaran cuando un datos es valido. Es
decir que la velocidad y la sincronía
dependen de los pulsos del reloj, se enviará
un bit con cada pulso.
No utiliza pulsos de reloj, la
duración de cada bit esta
determinada por la velocidad con
la cual se realiza la transferencia
de datos denominada como
Baudios, que se mide en bits por
segundos
Ing. Wilfran Yaraure
Facilitador
6. Tipos de Comunicación Serial
6
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Comunicación Serial
Comunicación serial Asíncrona
Cuando no se esta en transferencia de datos, la línea
del transmisor se encuentra en estado alto (IDLE).
Para iniciar la transmisión, el transmisor coloca esta
línea en estado bajo durante determinado tiempo, lo
cual se le conoce como bit de arranque (start bit)
Luego comienza a transmitir los bits correspondientes
al dato con un intervalo de tiempo entre cada Bit,
iniciando con el BIT menos significativo (LSB), y
terminando con el BIT mas significativo.
Si el receptor no esta sincronizado con el transmisor,
este desconoce cuando se van a recibir los datos.
Estructura de una dato que se trasmite.
Ing. Wilfran Yaraure
Facilitador
7. 7
Módulos Y Protocolos de
Comunicación Serial Síncrona
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
7
Módulo MSSP
Master Synchronous
Serial Port
Ó
Puerto Serie Síncrono
Maestro
Permite la comunicación
de alta velocidad entre un microcontrolador y
otros periféricos u otros
micro Utilizando varias líneas de E/S (como
máximo dos o tres
líneas)
Utilizada en sistemas con un sólo maestro y uno o más
esclavos.
❑ Un dispositivo maestro contiene un circuito para
generación de baudios y además, suministra señales de
reloj a todos los dispositivos del sistema.
❑ Los dispositivos esclavos no disponen de un circuito
interno para generación de señales de reloj.
Ing. Wilfran Yaraure
Facilitador
Comunicación
serial
síncrona
1)
2)
8. 8
Módulos Y Protocolos de
Comunicación Serial Síncrona
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
8
Módulo MSSP
Master Synchronous
Serial Port
Ó
Puerto Serie Síncrono
Maestro
Se utiliza con frecuencia para conectar los
visualizadores LCD, convertidores A/D,
memorias EEPROM
seriales, los registros de desplazamiento,
entre otros.
Puede funcionar Con dos Protocolos:
❑ Protocolo SPI (Interfaz periférica serial -
Serial Peripheral Interface)
❑ Protocolo I2C (Circuito inter-integrado - Inter-
Integrated Circuit).
Ing. Wilfran Yaraure
Facilitador
Comunicación
serial
síncrona
3)
4)
9. 9
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
9
Protocolo I2C
Bus de Circuito
inter-integrado
Ideal para la
comunicación con
memorias seriales como
la 24LC64, 24LC128,
24LC512, entre otras
La transmisión de datos
bidireccional. Sólo se utilizan
dos pines para transmisión : SDA
(Datos seriales) y
SCL (Reloj serial).
Módulo MSSP
Módulos Y Protocolos de
Comunicación Serial Síncrona
Ing. Wilfran Yaraure
Facilitador
Comunicación
serial
síncrona
La velocidad de comunicación
está dada en bits por segundo.
En restos pines
usa una
resistencia pull-
up de 10KΩ.
Se puede usar para conectar diferentes
dispositivos con direcciones diferentes en
una topología en forma de bus
Usa una condición de inicio, un bloque de
dirección para los dispositivos en la red, un
bloque de datos, una condición de fin, usa las
condiciones de repetición de inicio y un bit de
reconocimiento (ACK).
10. 10
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
10
Protocolo SPI
Ideal para la
comunicación con
unidades de
almacenamiento
masivo como las
memorias SD
Permite la transmisión y recepción simultánea de datos de 8 bits
utilizando 3 líneas de E/S
SDO - Serial Data Out (salida de datos serie )- línea de transmisión.
SDI - Serial Data In (entrada de datos serie) - línea de recepción.
SCK - Serial Clock (reloj de comunicación) - línea de sincronización.
línea (SS) se puede utilizar si el cuando se intercambia los datos con
varios dispositivos periféricos.
Módulo MSSP
Módulos Y Protocolos de
Comunicación Serial Síncrona
Ing. Wilfran Yaraure
Facilitador
Comunicación
serial
síncrona
11. 11
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Módulos Y Protocolos de
Comunicación Serial Asíncrona
Ing. Wilfran Yaraure
Facilitador
Comunicación
Serial
Asíncrona
Módulo EUSART
Enhanced
Universal
Synchronous
Asynchronous
Receiver
Transmitter
Ó
Transmisor
Receptor
Universal
Síncrono
Asíncrono
Mejorado
No requiere un medio para el reloj. La señal de
reloj, o sincronismo lo deben asumir, independiente
mente cada uno de los elementos, el transmisor y
el receptor.
Uno de los primeros sistemas de comunicación
serie, Antiguamente llamado USART, conocido
también como Interfaz de comunicación serie
(Serial Communications Interface - SCI).
Cuenta con comunicación
❑ full-duplex, es decir transmite y recibe datos al
mismo tiempo. usando una línea solo para
transmitir y otra solo para recibir.
❑ Half Duplex en modo síncrono, transmitiendo y
recibiendo datos, pero no simultáneamente, es
decir primero envía y luego recibe.
1)
2)
3)
12. 12
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Módulos Y Protocolos de
Comunicación Serial Asíncrona
Ing. Wilfran Yaraure
Facilitador
Comunicación
Serial
Asíncrona
Módulo EUSART
Enhanced
Universal
Synchronous
Asynchronous
Receiver
Transmitter
Ó
Transmisor
Receptor
Universal
Síncrono
Asíncrono
Mejorado
Trabaja con el Protocolo:
❑ Protocolo RS232 : utilizado por los
ordenadores personales y otros dispositivos,
representa el valor de un 0 lógico con una
tensión de +12 voltios, y el valor de un 1 lógico
con -12 voltios.
Cuando Trabaja en comunicación Síncrona
usa un bit de inicio (start) Igual a Cero (0)
lógico, 8 o 9 bits de datos para los PIC, y 1, 1.5
o 2 bits de fin (stop)
Con una Velocidad de transmisión igual para
ambos dispositivo estándar en de 9600 bps,
puede ser mayor o menor.
4)
5)
13. 13
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Módulos Y Protocolos de
Comunicación Serial Asíncrona
Ing. Wilfran Yaraure
Facilitador
Comunicación
Serial
Asíncrona
Módulo EUSART
1. DCD
2. RXD
3. TXD
4. DTR
5. GND
6. DSR
7. RST
8. CST
9. NO
USADO.
Usa un conector DB9, con 9
pines
Protocolo RS232
Configuración de
Conexión para
comunicación Asíncrona
Es muy común en
computadoras y
otros dispositivos
14. 14
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Módulos Y Protocolos de
Comunicación Serial Asíncrona
Ing. Wilfran Yaraure
Facilitador
Comunicación
Serial
Asíncrona
Módulo EUSART
Protocolo RS232
Circuito Integrado MAX232
Ayuda a establecer y acoplar la
comunicación entre el PIC y el CONECTOR
DB9, Usando Esta configuración de conexión
y capacitores
TX Del MAX232
RX Del MAX232 TX del PIC
RX del
PIC
15. ¿Que te parece?
No te alarmes ni te asustes, se que
puede con esto, parece complicado
pero la verdad no lo es…
Debemos seguir avanzando, ahora vamos
con las librerías y líneas de programación
para usar estos módulos y protocolo de
comunicación, así que vamos a darle
15
16. Librerías y Líneas de Programación para la
comunicación serial.
Algunos PIC poseen Esta serie de módulos y al igual MikroC PRO
cuenta con librerías especializadas para que facilitan la
configuración y uso de las comunicación seria. La librerías como:
I2C, UART para el EUSART, SPI1 y en algunos mas avanzado HID
para la comunicación a través de USB.
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
17. 17
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Librerías y Líneas de Programación
para la comunicación serial.
Módulo EUSART
Este modulo cuenta con las siguientes
librerías y líneas de Programación:
UART1_Init(const unsigned long baud_rate);
Para inicializar el Modulo, y establecer la Velocidad de
trasmisión en Baudios por segundos dentro de los ()
1)
char UART1_Data_Ready();
Para indicar que hay un dato en el búfer de llegada
del módulo, listo para ser leído, si esta función
retorna 1 el dato puede ser leído.
2)
char UART1_Tx_Idle();
Para indicar si el búfer de transmisión esta ocupado
o no. Si es 1 esta ocupado si es 0 esta disponible.
3)
char UART1_Read();
Para leer un dato de entrada.
4)
UART1_Read_Text(char *Output, char *Delimiter, char Attempts);
Para leer una cadena de caracteres, la guarda
Output, el Delimiter indica el fin de la cadena de
texto de entrada, el Attempts, define la longitud de
la cadena de caracteres.
5)
UART1_Write(char _data);
Para transmitir el dato recibido.
6)
UART1_Write_Text(char * UART_text);
Para transmitir una cadena de texto finalizada con
0, y es entregada por UART_text.
7)
Este tipo de Comunicación serial también usa el
Código ASCII para Trasmitir textos y símbolos, Es
recomendable Usar una frecuencia de trabajo de
20Mhz con un oscilador externo
18. “
18
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Usando el Código desarrollado para manejo y control
de la GLCD y el Teclado Matricial 4x4 en la clase
anterior, realice las modificaciones necesarias para
Transmitir por comunicación serial la información
ingresada por medio del teclado y se visualice
simultáneamente en la GLCD.
19. “
19
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Antes de comenzar a programar
debes tener en cuenta que el
puerto C del PIC 18F4550 Ya tiene
2 Pines destinados para la
Transmisión serial con el Modulo
UART y el Protocolo R232 el RC6
(Tx) y el RC7 (Rx) , por lo que se
debe cuidar la programación para
no usar estos pines si se pretende
establecer este tipo de
comunicación.
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
20. “
20
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Mantenemos las mismas
declaraciones que la vez pasada,
para los puerto de la GLCD
Mantenemos las mismas Variables
para poder realizar la
configuración al escribir en la
GLCD con el Teclado Matricial 4x4
21. “
21
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Usamos las mismas condiciones
iniciales, configurando el
Oscilador interno, el ADCON1 para
las E/S digitales, Inicializamos el
Teclado con el Keypad_Init();
Inicializamos nuestra GLCD con
Glcd_Init(); y de damos su tiempo
de espera para que se configuren
correctamente
Inicializamos el MODULO UART1
y le configuramos su velocidad
de Transmisión en 9600 Baudios
por segundo
Damos valor de inicio al resto de
las variables a utilizar.
22. “
22
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Para el inicio de nuestra lógica
comenzamos a enviar mensajes con
textos y código ASCII a través del
puerto serial, Usando las sentencias
UART1_Write_Text( “text” ); para
trasmitir cadenas de caracteres o
textos
UART1_Write(); Para transmitir datos,
en este caso se emplea el código
ASCII
Simultáneamente enviamos los
mismos textos a través de las
sentencias correspondientes
para mostrarlos en la GLCD
23. “
23
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Usamos las mismas lógicas y
configuraciones para el
funcionamiento del teclado y la
pantalla GLCD, que nos
permiten escribir varias letras
con las misma tecla
24. “
24
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Usamos la Función Switch (kp) Para
los casos del teclado, con ligeras
modificaciones de ubicación de
teclas, e implementando una tecla de
espacio, Enter.
En el caso 4 se agrega una línea para
borra en la transmisión, empleando la
sentencia UART1_Write(8); este valor
en código ASCII en casos de control
como en la Trasmisión serial significa
retroceso, y nos ayuda a borra el dato
transmitido
25. “
25
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Para el caso 16, configurado para
genera el Enter o Salto de línea
empleamos esta configuración.
26. “
26
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
Para mostrar en la GLCD las teclas
pulsadas usamos esta sentencia para
enviar caracteres o variables Char a la
panta, y mostrar el valor del letra
pulsada en las posiciones
correspondiente según las
configuraciones ya establecida al
principio del programa
Para poder trasmitir varias letras
pulsando una sola tecla, empleamos
la sentencia
UART1_Write(8); para retroceso, es
decir para que vuelva al mismo lugar
o a la posición donde estaba si se
pulsa la misma tecla varias veces,
UART1_Write(letra), para enviar el
valor de la letra según la tecla pulsada
como lo hace el teclado,
Y para el desplazamiento de la letra automático a la derecha
en la trasmisión se emplea la condición iF, esperando que
tiempo pase para entonces escribir un espacio en blanco
con UART1_Write (32)
27. Para la conexión Real o simulación en Proteus
Debes tener en cuenta las siguientes configuraciones
EL MAX232
27
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
1.Realizar las conexiones de los 4
capacitores de 1nF (un nano
faradio) Según se indica en el
diagrama (C2 conectado a 5v y
pin2)
2.En los pines 11 (T1 In) y 12 (R1 Out)
del Max232 conectar el Tx y el Rx (
transmisor y Receptor) del PIC.
3.En los Pines 13 y 14 del MAX232
conectar el pin 2 y 3 del RS232 o
conector DB9, o los pines de
conexión del terminal virtual para le
caso de la simulación
28. Para la conexión Real o simulación en Proteus
Debes tener en cuenta las siguientes configuraciones
Conector DB9
28
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
1.Realizar las conexiones
correspondientes, puente entre los
pines 4 y 6, y otro entre los pines 7
y 8
2.Pin 2 del DB9 con el Pin 14 del
MAX232 que seria la línea de
transmisión Tx desde el PIC al DB9,
y el Pin 3 del DB9 con el Pin 13 del
MAX232 que seria el receptor Rx
del PIC, es decir la líneas de
transmisión del DB9 al PIC.
3.Lo puedes ubicar en PROTEUS
como CONN-D9F
29. Para la conexión Real o simulación en Proteus
Debes tener en cuenta las siguientes configuraciones
PIC18F4550
29
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
1.Para conectar el PIC18F4550 se
usan las líneas de transmisión (Tx) y
recepción (Rx) con las que cuenta,
ubicadas en el PORTC en sus bit
RC6 (Tx) y Rc7 (Rx) en este
encapsulado serian los pines 25 y
26 del PIC
2.Las demás conexiones como ya las
venimos trabajando.
30. Para la conexión Real o simulación en Proteus
Debes tener en cuenta las siguientes configuraciones
Terminal Virtual
30
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo EUSART y el Protocolo RS232
1.Es una herramienta que ofrece
Proteus para poder visualizar los
datos que se están transmitiendo a
través de la comunicación serial,
simula el comportamiento de DB9
conectado a algún dispositivo
externo del pic.
2.Esta ubicado en la sección
Instruments con el nombre de
Virtual Terminal.
3.Se conecta el terminal Tx del
MAX232 al pin RXD del terminal
virtual y el Terminal Rx del Max232
al terminal TXD del terminal virtual
31. simulación en Proteus
Terminal Virtual
31
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
32. 32
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Librerías y Líneas de Programación
para la comunicación serial.
Módulo I2C
Este modulo cuenta con las siguientes
librerías y líneas de Programación:
I2C1_Init(const unsigned long clock);
Para inicializar los pines de comunicación en el PIC,
y ajustar la velocidad de comunicación con el clock.
1)
unsigned short I2C1_Start(void);
Para genera la condición de inicio y retorna 0 si no
hay ningún error en la transmisión,
2)
void I2C1_Repeated_Start(void);
está función genera un Reinicio o ReStar.
3)
unsigned short I2C1_Is_Idle(void);
Para preguntar el estado del bus de datos, retorna
1 si esta disponible, 0 si esta ocupado.
4)
unsigned short I2C1_Rd(unsigned short ack);
Para leer un dato del bus de datos, si el dato esta
listo. ack vale 1 envía la confirmación (+) y si no esta
listo ack vale 0 NO ACK la confirmación es
negativa.
5)
unsigned short I2C1_Wr(unsigned short data );
Para transmitir el dato por le bus, retorna 0 si la
transmisión fue exitosa, diferente de 0 si hubo
errores.
6)
void I2C1_Stop(void);
Para Genera la condición de final en el bus
de comunicación.
7)
Se puede Emplear el Registro
SSPCON2, el Bit 06 para verificar el
Status o estado del ACK y verificar la
trasmisión de datos
33. “
33
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Desarrollar un Código de Programación que permita:
1. Escribir o transmitir información a una memoria
EEPROM 24LC1025 al presionar un botón
conectado en RA4,
2. Leer el dato escrito en la memoria al presionar
un botón conectado a RA5.
3. Visualizar en la GLCD el estado de bit ACK al
Escribir y al Leer.
4. Visualizar en la GlCD el Dato grabado en la
Memoria 24LC1025 Consulta la DataSheet y los
Videos para que observes el
funcionamiento y las
características de la 24LC1025
34. “
34
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ing. Wilfran Yaraure
Facilitador
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C Antes de comenzar a programar
debes tener en cuenta que el
puerto B del PIC 18F4550 Ya tiene
2 Pines destinados para la
Transmisión serial con el Modulo
SSP el RB0 (SDI//SDA para la
transmisión de datos) y el RB1
(SCK//SCL para los pulsos de
reloj) , por lo que se debe cuidar la
programación para no usar estos
pines si se pretende establecer
este tipo de comunicación.
35. “
35
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Iniciamos configurando nuestra
pantalla GLCD, configurando el
Bus de datos en el PORT D y Bus
de control distribuidos 3bit en
PORTC y 3 BIT en PORE
Declaramos las variables globales
a utilizar.
dato=para almacenar la
información o bytes a Grabar o
leer de la memoria
36. “
36
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Establecemos las condiciones
iniciales de nuestro programa, en
este caso Usamos el registro
INTCON2.RBPU colocando su bit
7 en 1 para deshabilitar las
interrupciones por el PORTB, ya
que estaremos trasmitiendo y
recibiendo por eso puerto.
Este valor asignado a la variable
dato= 0X30 es la información que
va a guardar, esta lo almacena en
su valor hexadecimal en su
dirección correspondiente.
En este caso se esta almacenando
el numero 0
37. “
37
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Iniciamos nuestro ciclo de
Repeticiones Infinitas con do while
Para Comenzar la transmisión
Enviamos el Bit de Start o inicio,
con la sentencia I2c_Start, que
seria nuestra condición de inicio
Verificamos el estado del botón
conectado en RA4, si es =1 indica
que esta presionado, y se debe
proceder a escribir en la memoria
Luego se debe enviar la dirección de
control para especificar si vamos a
escribir o a leer la memoria (esta se
encuentra en la Datasheet ) en este
caso escribir
38. “
38
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Seguidamente se envía el dato que se
quiere guardar en la memoria,
anteriormente dijimos que sería el
numero 0
Seguido se debe enviar la dirección de
la memoria donde se quiere escribir o
almacenar el dato, primero los Bit mas
significativos, luego los Bits menos
significativos, en este caso se escribe
en la dirección 00 de la memoria
Cuando ya se han enviado todos los
datos, se debe colocar la condición de
fin, o el bit de Stop.
Le colocamos un tiempo de espera
para que se procesen los datos
correctamente
39. “
39
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Para verificar el status del ACK o
NoACK, es decir si ve envió
correctamente o no el dato, Usamos el
registro SSPCON2 y verificamos si el
BIT 6 esta activo o no
Si el Bit es = 1 entonces la transmisión
fu errada, si es 0 la transmisión fue
correcta.
En este caso usamos la sentencia if
para verificar si se activo o no este bit,
si esta activo se muestra NOACK en la
Glcd, si esta en cero muestra ACK en
la GLCD
40. “
40
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Para Comenzar se inicia
nuevamente la transmisión y se
indica la dirección de control para
escribir, y la dirección de memoria
donde se quiere hacer igual que la
secuencia anterior, Esto para
poder ingresar a la memoria
Para la secuencia de lectura
iniciamos Verificamos el estado
del botón conectado en RA5, si es
=1 indica que esta presionado, y se
debe proceder a leer la memoria
Luego se debe enviar la condición de
reinicio, debido a que no se puede
colocar nuevamente un Bit de Start.
Entonces se emplea la sentencia
correspondiente para el reinicio de la
transmisión
41. “
41
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C Ahora se debe enviar la dirección de
control para especificar que se va a
leer la memoria en vez de escribir por
eso se coloca la dirección
0b10100001 donde este ultimo bit
activo, habilita la opción de lectura de
la memoria, si estuviese en 0, sería
para escribir en la memoria, como lo
vimos en la secuencia anterior
Seguido Procedemos a leer el dato
usando la sentencia I2c_Rd(0);
haciendo que la variable dato, sea
igual al dato leído con esta sentencia.
Enviamos el bit de Stop, para detener
la transmisión.
42. “
42
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C En este caso tendremos un NOACK,
debido a que no se esta transmitiendo
el dato ni recibiendo, solo se esta
leyendo desde la memoria.
Igual lo hacemos verificando el estado
del SSPCON2
Para mostrar en la GLCD el dato leído
desde la memoria, empleamos la
sentencia Glcd_Write_Char (dato,
70,5,1); donde le decimos al micro que
muestre la variable dato en la pantalla
Y usamos dato++, para aumentar el
valor del dato automáticamente cada
vez que presionemos el botón de
escribir
43. “
43
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Este es el circuito propuesto para la
simulación, los componentes los
ubicas de la misma manera que en los
demás circuitos
44. “
44
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Este es un visualizador parecido al
terminal virtual, pero en este caso nos
muestra el comportamiento interno de
la memoria de la memoria y se ubica
en la sección de Instruments con el
nombre de I2c Debugger
Debe ser conectado a los terminales
correspondientes del pic
El SDA al RB0
Y el SCL al RB1
45. “
45
Ing. Wilfran Yaraure
Facilitador
Área Cs. De la Salud
Programa de Ing. Biomédica
UnidadCurricular:
Microcontroladores yMicroprocesadoresII
Ejemplo de Programación con el
Módulo SSP y el Protocolo I2C
Permite visualizar los datos enviados y
recibidos y sus características de
control y dirección
S= Bit de Start
Sr= Bit de reinicio del Star
A0= Dirección de control
A= ACK
00= Parte alta de Dirección de memoria
A= ACK
00= Parte baja de Dirección de memoria
A= ACK
30= Dato enviado (recordamos que
enviamos este valor en la programación)
A= ACK
P= Bit de Stop o Parada
N= NO ACK
46. “
46
Ing. Wilfran Yaraure
Facilitador
Al ejecutar el programa vemos con el
I2c Debugger los datos enviados y
coinciden con lo mostrado en la GLCD
Al colocar en pausa la simulación nos
muestra el mapeo de la memoria, y nos
indica la dirección donde se guardo el
dato, el dato que se guardo en
Hexadecimal, y su equivalente en
código ASCIII
47. ¡Wow! Ya hemos llegado
al final de este recorrido
Espero te haya ido bien en este viaje, te
invito a que sigas practicando, y realizados
los códigos y las simulaciones propuestas,
recuerda revisar el material sugerido, y ten
en mente esto: “La practica hace al
maestro”
47
Si tienes dudas, Estoy a un mensaje de Distancia
Ig @Profesor_y
ucup2biounefm@gmail.com
Y en el Directo del AVA
Ing. Wilfran Yaraure
Facilitador
48. Bibliografía
48
✓ Clavijo (2011), Diseño y simulación de sistemas microcontrolados en lenguaje C, Programación
con MikroC PRO, Simulación en Proteus ISIS. https://drive.google.com/file/d/0B3Gup-
Soes9hbFByRHF0WFpuQk0/view?usp=sharing
✓ Microchip Technology Inc. (2010) Datasheet PIC18F4550
✓ Microchip Technology Inc. (2010) Datasheet 24LC1025
49. "Ser fiel en lo poco nos asegura
abundancia en el futuro“
Cumplir con lo que a cada uno nos
corresponde con fidelidad, entrega,
integridad, mística y vocación, en
momentos de escasez y dificultad, es
un pase seguro a la abundancia,
perseverar en el servicio y el respeto
al prójimo, en estos tiempo es una
tarea titánica, que si la hacemos con
verdadera disposición y con alegre
Corazón, nos conseguirá la paz y la
abundancia que tanto anhelamos,
has el bien Aunque nadie te vea, y
gozaras de abundante paz.
@Profesor_y