0% encontró este documento útil (0 votos)
23 vistas61 páginas

Sistemas Electrónicos Con P: Seminario 4-b Familia MSC51: Periféricos

El documento presenta un seminario sobre la familia MSC51 y sus periféricos, incluyendo puertos de E/S, gestores de interrupciones, temporizadores y contadores. Se discuten ejemplos de aplicación y se explican las estrategias de manejo de interrupciones, tanto fijas como vectorizadas, así como la arquitectura de programas que utilizan interrupciones. Se destaca la importancia de los periféricos en microcontroladores y su papel en el control de aplicaciones específicas.

Cargado por

gia01710
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
23 vistas61 páginas

Sistemas Electrónicos Con P: Seminario 4-b Familia MSC51: Periféricos

El documento presenta un seminario sobre la familia MSC51 y sus periféricos, incluyendo puertos de E/S, gestores de interrupciones, temporizadores y contadores. Se discuten ejemplos de aplicación y se explican las estrategias de manejo de interrupciones, tanto fijas como vectorizadas, así como la arquitectura de programas que utilizan interrupciones. Se destaca la importancia de los periféricos en microcontroladores y su papel en el control de aplicaciones específicas.

Cargado por

gia01710
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Sistemas Electrónicos con μP

Seminario 4-b
Familia MSC51: Periféricos

J. Soret
DIE-UVEG
26/2/07

1
Contenido
„ Introducción
„ Periféricos más comunes. Descripción genérica
y específica para MSC-51
‰ Puertos E/S
‰ Gestor de interrupciones
‰ Temporizadores/contadores
‰ Interfaz serie (USART)
‰ Gestor de consumo
„ Ejemplos de aplicación

2
Periféricos
„ Periférico: procesador de propósito específico
estándar
‰ Opuesto al concepto de procesador de propósito general
‰ Algunos de los propósitos específicos son tan comunes que
se pueden etiquetar como “estándar”
‰ Los μC incluyen en su encapsulado todo lo que necesitan
para la aplicación a controlar, incluido periféricos
„ Periféricos comunes en la familia MSC-51:
‰ Puertos: P0..P3
‰ Temporizadores/contadores: T0, T1, (en 8052, también T2)
‰ Interfaz serie
‰ Gestor de interrupciones. Gestor de consumo

3
SFR

4
Puertos: E/S
„ Operaciones de escritura
‰ Cada pin está latcheado y
presenta estructura de buffer:
„ P1,P2,P3: open-drain con
pull-up interno, 4 TTL-LS
„ P0: totem-pole, 8 TTL-LS
„ Operaciones de lectura
‰ Para leer, el latch debe
contener ‘1’
‰ A veces se lee de pin, a
veces de latch (instrucciones
“read-modify-write”)
„ Con frecuencia, dos ¿Qué pasa con P0 y P2?
funciones por pin

5
Puertos: E/S

6
Interrupciones
„ Sea un periférico que recibe datos de modo asíncrono,
los cuales deben ser servidos a una CPU. Opciones:
‰ El procesador puede monitorizar al periférico regularmente
(polling) para detectar cuándo ha recibido un dato
‰ El periférico puede interrumpir a la CPU cuando consiga el dato
‰ La idoneidad de una u otra estrategia depende de la aplicación
„ Interrumpir implica una o varias líneas/pines extra: INT
‰ Si INT se afirma, la CPU suspende el programa ordinario y
salta a ejecutar la rutina de servicio de la interrupción (Interrupt
Service Routine, o ISR)
‰ El evento (E/S en este caso, puede ser otra cosa) es controlado
por interrupción
‰ La monitorización de la línea INT se realiza por hardware y no
supone una pérdida de tiempo de proceso para la CPU

7
Interrupciones
„ ¿Cómo determina la CPU la dirección (vector) donde
reside la ISR?. Alternativas
‰ Interrupción fija
„ El vector está grabado dentro del dispositivo y no puede ser
cambiado
„ A partir del vector, o bien se almacena ISR, o bien se coloca una
instrucción de salto a la ISR almacenada en otra área de memoria
„ Distintos periféricos, distintos pines INT: limitación en nº periféricos
‰ Interrupción vectorizada
„ Un solo pin INT. El periférico debe proporcionar el vector de la ISR
„ Solución frecuente en configuración mP, si existen numerosos
periféricos conectados a través de un bus de sistema
‰ Tabla de direcciones de interrupción
„ Variante de la anterior

8
Ejemplo: E/S con localización INT fija
(configuración mP)
Tiempo
1(a): El μP ejecuta el programa principal. 1(b): P1 recibe un dato en un
registro con la dirección 0x8000

2: P1 afirma Int para solicitar


servicio por parte del μP
3: Después de completar la instrucción 100,
μP ve Int afirmada, salva el valor del PC
(100), y carga PC con la localización de
ISR, que es fija (16)

4(a): ISR lee el dato de 0x8000, lo modifica, 4(b): Después de ser leído, P1
y escribe el resultado en 0x8001. niega Int

5: Se vuelve de ISR: se restaura PC con el


valor 100+1=101, dirección a partir de la
cual μP reanuda la ejecución del programa.

9
Ejemplo: E/S con localización INT
fija
1(a): El μP ejecuta el programa principal Memoria de programa μP Memoria de datos
ISR
1(b): P1 recibe un dato en un registro con 16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
la dirección 0x8000
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Int P1 P2
Programa principal
... PC 0x8000 0x8001
100: instrucción
101: instrucción

10

10
Ejemplo: E/S con localización INT
fija
2: P1 afirma Int para solicitar servicio Memoria de programa μP Memoria de datos
por parte del μP ISR
16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Int P1 P2
Programa principal 1
... PC 0x8000 0x8001
100: instrucción
101: instrucción

11

11
Ejemplo: E/S con localización INT
fija
3: Después de completar la instrucción Memoria de programa μP Memoria de datos
100, μP ve Int afirmada, salva el valor ISR
del PC (100), y carga PC con la 16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
localización de ISR, que es fija (16)
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Int P1 P2
Programa principal
... PC 0x8000 0x8001
100: instrucción
101: instrucción 100

12

12
Ejemplo: E/S con localización INT
fija
4(a): ISR lee el dato de 0x8000, lo Memoria de programa μP Memoria de datos
modifica, y escribe el resultado en ISR
0x8001.. 16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
4(b): Después de ser leído, P1 niega Int 18: MOV 0x8001, R0
19: RETI # ISR retorna
... Int P1 P2
Programa principal 0
... PC 0x8000 0x8001
100: instrucción
101: instrucción 100

13

13
Ejemplo: E/S con localización INT
fija
5: Se vuelve de ISR: se restaura PC con Memoria de programa μP Memoria de datos
el valor 100+1=101, dirección a partir ISR
de la cual μP reanuda la ejecución del 16: MOV R0, 0x8000
programa. 17: # modifica R0 Bus de sistema
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Int P1 P2
Programa principal
... PC 0x8000 0x8001
100: instrucción +1
101: instrucción 100

14

14
Ejemplo: E/S con INT vectorizada
(configuración mP)
Tiempo
1(a): El μP ejecuta el programa principal. 1(b): P1 recibe datos en un registro
con la dirección 0x8000.

2: P1 afirma Int para solicitar servicio


3: Después de completar la ejecución de la por parte del μP
instrucción en 100, μP ve afirmada Int, salva el
valor del PC (100), y afirma Inta.
4: P1 detecta Inta y coloca el vector
de la interrupción 16 sobre el bus de
datos.

5(a): El μP salta a la dirección que marca el


bus (16). La ISR que allí reside lee el dato de
0x8000, modifica el dato, y escribe el dato 5(b): Después de ser leído, P1niega
resultante en 0x8001. Int.

6: La ISR retorna, restaura PC con el valor


100+1=101, a partir del cual μP continua la
ejecución.

15

15
Ejemplo: E/S con INT vectorizada

1(a): El μP ejecuta el programa principal. Memoria de programa μP Memoria de datos


ISR
1(b): P1 recibe datos en un registro con la 16: MOV R0, 0x8000
dirección 0x8000. 17: # modifica R0 Bus de sistema
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Inta P1 P2
Programa principal Int
... PC 16
100: instrucción 0x8000 0x8001
101: instrucción 100

16

16
Ejemplo: E/S con INT vectorizada

2: P1 afirma Int para solicitar servicio por Memoria de programa μP Memoria de datos
parte del μP ISR
16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Inta P1 P2
Programa principal Int
... PC 1 16
100: instrucción 0x8000 0x8001
101: instrucción 100

17

17
Ejemplo: E/S con INT vectorizada

3: Después de completar la ejecución de la Memoria de programa μP Memoria de datos


instrucción en 100, μP ve afirmada Int, ISR
salva el valor del PC (100), y afirma Inta. 16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
18: MOV 0x8001, R0
19: RETI # ISR retorna 1
... Inta P1 P2
Programa principal Int
... PC 16
100: instrucción 0x8000 0x8001
101: instrucción 100

18

18
Ejemplo: E/S con INT vectorizada

4: P1 detecta Inta y coloca el vector de la Memoria de programa μP Memoria de datos


interrupción 16 sobre el bus de datos ISR
16: MOV R0, 0x8000
17: # modifica R0 16 Bus de sistema
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Inta P1 P2
Programa principal Int
... PC 16
100: instrucción 0x8000 0x8001
101: instrucción 100

19

19
Ejemplo: E/S con INT vectorizada

5(a): El μP salta a la dirección que marca Memoria de programa μP Memoria de datos


el bus (16). La ISR que allí reside lee el ISR
dato de 0x8000, modifica el dato, y escribe 16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
el dato resultante en 0x8001
18: MOV 0x8001, R0
5(b): Después de ser leído, P1 niega Int. 19: RETI # ISR retorna
... Inta P1 P2
Programa principal Int
... PC 0 16
100: instrucción 0x8000 0x8001
101: instrucción 100

20

20
Ejemplo: E/S con INT vectorizada

6: La ISR retorna, restaura PC con el valor Memoria de programa μP Memoria de datos


100+1=101, a partir del cual μP continua la ISR
ejecución 16: MOV R0, 0x8000
17: # modifica R0 Bus de sistema
18: MOV 0x8001, R0
19: RETI # ISR retorna
... Int P1 P2
Programa principal
... PC 0x8000 0x8001
100: instrucción +1
101: instrucción 100

21

21
Tabla de vectores de interrupción
„ Compromiso entre interrupciones fijas y
vectorizadas
‰ Un solo pin para INT
‰ Tabla en memoria conteniendo direcciones ISR (quizá
256 palabras, 8 bits)
‰ Los periféricos no proporcionan el vector directamente,
sino un índice a la tabla
„ La comunicación con el periférico implica menos (8) bits
„ Se puede cambiar la localización de la ISR sin cambiar el
periférico
‰ Solución aplicada en PCs: un CI hace de gestor de
interrupciones

22

22
Arquitectura de un programa que usa INT
„ La más frecuente/sencilla: Background Foreground
Super-bucle + ISRs
‰ Super-bucle: el programa se
ejecuta mientras se alimente Función 1

INICIO: CALL INIT_X ;Inicializa X t1


SUP_B: CALL X ;Para siempre X
JMP SUP_B ISR 1

t2
„ El empleo de ISRs permite
construir aplicaciones Función 1

aparentemente multitarea t3
sobre una única CPU Función 2
t4
„ Varios (dos, mínimo) niveles t5 ISR 1
de ejecución:
‰ Principal, ordinario, padre Función 2

(background)
‰ ISR, hijos (foreground)
23

23
Salto a ISR
„ Los procesadores suelen tratan el salto a ISR como una
llamada a subrutina (pensad en ámbitos de validez de las
variables en lenguajes de alto nivel)
‰ Salvar (y restaurar) completamente el estado (PC, registros,
variables), pueden tardar varios cientos de ciclos de instrucción
„ Normalmente se suele salvar el estado parcialmente,
habitualmente sólo PC (dirección de la instrucción en
programa principal donde hay que volver después de ISR)
‰ O bien ISR no debe modificar los registros, o bien hay que salvarlos
primero
‰ Estructura en banco de registros (ej. 8051), pila (stack), ayudas muy
valiosas
‰ Programando en bajo nivel, cuidado con dónde y como guardamos
los datos (inicializar pila adecuadamente, etc.)

24

24
Arquitectura de una ISR
„ Esqueleto posible para ISR (código MCS-51)
ISR_1: CLR EA ;Deshabilita INTs
PUSH ACC ;Guarda entorno (apila): ACC,
PUSH PSW ; PSW y banco PROG PPAL
ORL PSW,#00011000b ; Entono ISR_1: banco 3
JBC FLAG, TRATA ; Si FLAG no se resetea HW
SJMP FIN_ISR_1
TRATA: ….. ; lo que tenga ISR que hacer
FIN_ISR_1: POP PSW ; restaura entorno (desapila):
POP ACC
SET EA ;Habilita INTs
RETI

25

25
Otros asuntos sobre INT
„ Enmascarable vs. no enmascarable
‰ Enmascarable: el programador define el estado de cierto

flag que hace que la CPU ignore la interrupción


„ Importante si el comportamiento temporal del código en ejecución
es crítico
‰ No enmascarable: no es posible ignorar la señal de
interrupción
„ Normalmente reservado para situaciones drásticas.
‰ P.ej., ante fallo de alimentación, realizar un backup a memoria no
volátil
„ Prioridades
‰ El modo de resolver la concurrencia en el uso de recursos
compartidos
‰ Diversos mecanismos de arbitraje
26

26
Interrupciones MCS-51
„ Importante en un μC
„ Necesario habilitar y
priorizar
‰ 2 registros: IE, IP
‰ 2 niveles prioridad
„ En el 8051, 7 fuentes de
interrupción (eventos
posibles) ligados a
periféricos
‰ 2 externas
‰ 5 internas
„ En el 8052, 2 fuentes
más
„ Tabla de vectores fija

27

27
Interrupciones: IE (enable), IP (priority)

28

28
¿Cómo se atiende la interrupción?
„ Los flags de interrupción se testean en cada S5P2
„ Se identifica la fuente en C2
„ Se realiza un salto largo al vector de interrupción
(C3, C4), salvo que:
‰ Se esté tratando interrupción con mayor prioridad: se
ignorará
‰ La instrucción en curso no se encuentre al final de su ciclo:
se terminará
‰ La instrucción en curso sea RETI o implique a IE o IP: al
menos se ejecutará una instrucción más

29

29
¿Cómo se atiende la interrupción?
„ Si la interrupción es aceptada:
‰ La instrucción en curso se completa
‰ Se apila el contenido de PC
‰ Se salva internamente el estado de las interrupciones
‰ Las interrupciones se bloquean para el mismo nivel
‰ El PC se carga con el vector de interrupción
‰ Se ejecuta la rutina de tratamiento correspondiente
„ La rutina debe terminar con RETI:
‰ Restaura el contenido de PC y el estado anterior de las
interrupciones
„ Excepción: interrupciones compartidas por dos eventos
posibles
„ Tiempo de respuesta, más de 3 y menos de 9 ciclos
máquina
30

30
Vectores y flags

31

31
Un uso curioso de la INT externa
„ Ejecutar un programa en modo traza (ver transp. 51)

INT_0:
JNB P3.2,$ ;Espera aquí hasta que INT0 a ‘1’
JB P3.2,$ ;Espera aquí hasta que INT0 a ‘0’
RETI ;Vuelve y ejecuta una instrucción

„ En este caso, el programa principal se ejecutará


instrucción a instrucción, temporizado por una señal
cuadrada en INT0
„ Esto se utiliza en herramientas de depuración

32

32
Reset
„ La interrupción de mayor prioridad, no enmascarable
„ Se produce si se mantiene la señal a nivel bajo durante al
menos dos ciclos máquina (24 Tclk)
„ La inicialización se produce al cabo de 19 Tclk

33

33
Reset

34

34
Temporizadores, contadores, y otros
„ Temporizador (timer): mide intervalos de
tiempo
‰ Para producir eventos controlados por tiempo
„ P.ej, mantener el semáforo en amarillo durante 10s.
‰ Para medir la duración de eventos de entrada Timer básico

„ P.ej, medir velocidad del coche Clk


Contador 16 Cnt
creciente
16 bits
„ Fundamento: contar pulsos de reloj Top
„ P.ej, sea Tclk = 10 ns. Se cuentan 20.000 pulsos de Reset
clk. Así pues, han pasado 200 μs.
„ ¿Cuánto retardo se puede conseguir con un contador
de 16 bits?
„ Top: señala que la cuenta ha alcanzado el límite
superior: enclavamiento, vuelta atrás, o inicio de
cuenta.

35

35
Contadores
„ Son como temporizadores,
pero cuentan pulsos (Cnt_in)
de una entrada externa en
lugar de pulsos Clk Timer/contador

Clk
‰ P.ej., contar botellas sobre un Mux Contador
creciente
16 Cnt

sensor, en una línea de 2x1 16 bits


Cnt_in Top
embotellado
Reset
‰ Normalmente el dispositivo se Modo C/T

puede configurar como


temporizador o como contador

36

36
Otras estructuras en temporizadores
„ Temporizadores de Timer de intervalo Timer de 16/32 bits

intervalo Clk Contador


Clk Contador creciente 16 Cnt1
‰ Señala cuándo se ha creciente 16 Cnt 16 bits
16 bits
sobrepasado cierto periodo Top1
de tiempo Reset
Contador
‰ Se debe inicializar la cuenta = creciente
16 Cnt2

de temporizador para Top 16 bits


conseguir el intervalo Top2
deseado
Cuenta límite
„ Nº Tclks = Tiempo del Timer con prescaler
intervalo/ Tclk Clk Prescaler Contador
creciente
„ Contadores en cascada 16 bits

„ Pre-escalado
‰ Divisor de Fclk Modo
‰ Incrementa el rango a costa
de una menor resolución

37

37
Un ejemplo: medida del tiempo de reacción
Indicador
luminoso Botón

LCD T = 114 ms

/* Pseudocódigo ejemplo timer*/

„ El objetivo es medir el tiempo entre la #define MS_INIT 63535


activación de una luz y la pulsación del usuario void main(void){
int cuenta_ms = 0;
‰ Timer de 16 bits con “top”, Fclk=12Mhz: Configura modo timer
Inicializa Cnt a MS_INIT
Tclk=83,33 ns.
Espera un tiempo aleatorio
‰ La resolución es de un ciclo instrucción: Activa indicador luminoso
Inicia cuenta timer
la cuenta se incrementa cada 6 Tclk
6*83.33=0.5 μs
while (usuario no pulse el botón){
if(Top) {
Para timer
‰ El rango será: 65535*0.5 μs = 32.77 ms Inicializa Cnt a MS_INIT
Inicia cuenta timer
‰ El programa requiere contar ms para Resetea Top
cuenta_ms++;
generar una lectura cómoda. Así, se }
}
diseña para que “top” se produzca cada Apaga indicador luminoso
printf(“T = %i ms“, cuenta_ms);
ms. La constante de carga en el timer }
será: 65535 – 1000/0.5 = 63535
38

38
Temporizador “watchdog”
„ Se tiene que inicializar el
temporizador cada cierto Fosc = Fclk =
tiempo, y si no, overflow Overflow Overflow Al reset de
12 Mhz Prescaler 1Mhz Scalereg Timereg
genera señal 11 bits 16 bits sistema o a
interrupción
„ Muy importante en Checkreg
aplicaciones embedded:
detección de fallos, auto-
reset
/* main.c */ rutina_watchdog_reset (){
„ Otra aplicación: timeout /* Checkreg habilita. Scalereg se carga con 0
main(){ y timereg se carga con el valor 11070 */
‰ P.ej, cajero esperar hasta insertar tarjeta
llamar rutina_watchdog_reset checkreg = 1
automático scalereg = 0
‰ Timer 16 bits, 2 μs while(transacción en marcha){
if(botón apretado){ }
timereg = 11070

de resolución realizar el servicio correspondiente


llamar rutina_watchdog_reset void rutina_interrupt (){
‰ Si timeout = 2 min. , X = } expulsa tarjeta
120,000 μs, entonces: inicializa pantalla
/* Si la rutina_watchdog_reset no se ejecuta }
‰ Valor de carga timereg = cada < 2 minutos, se producirá una llamada a
2*(216-1)–X = 131070–X rutina_interrupt*/
}
„ Otras habilidades:
detección fallos pwr, etc.

39

39
Temporizadores en MCS-51

40

40
TMOD: modos de funcionamiento de T0 y
T1

41

41
T0 y T1: 4 modos de funcionamiento

42

42
TCON: control de T0 y T1

43

43
T2: modos de funcionamiento

44

44
T2CON: control de T2

45

45
Ejercicio
„ Generar señal cuadrada de 3 ms de periodo en el
TM311, asumiendo un Tclk de 12 MHz
„ Solución posible:
USES 80537
ORG 0
LJMP 8000H

ORG 8000H
MOV TMOD, #0h
SETB TR0
BUCLE: MOV TH0,#1AH
MOV TL0,#24H
ACI: JNB TF0, ACI
CPL P1.1
CLR TF0
SJMP BUCLE

END

46

46
Comunicaciones
„ Tipos de interfaces: paralelo y serie
‰ Los primeros son rápidos. Los segundos, aunque más lentos, presentan
ventajas:
„ En la construcción de PCBs: tamaño de PCB, consumo, etc.
„ Decodificación exige lógica extra: más componentes, más coste
„ Comportamiento EM: una pista es una antena
‰ Por ello, tienen gran interés, y han originado diversos modelos estándar.
„ Protocolo: convenio común entre sistemas para la transmisión de
datos. Fija aspectos tales como la representación de los datos,
relación temporal entre emisor y receptor, mecanismos de control de
flujo, etc.
„ La transmisión de los datos se suele realizar carácter a carácter
(bytes, usualmente). Dentro de cada uno, la cadencia de bit debe ser
constante
‰ Crítico para conseguir una correcta transferencia
„ Tipos de protocolos:
‰ Síncronos, en los que el flujo de información está sincronizado por una
señal de reloj (CLK)
‰ Asíncronos, en los que los caracteres aparecen en el canal en instantes
arbitrarios de tiempo
„ Otra clasificación, según flujo de datos: Simplex /H-duplex /F-duplex

47

47
Transmisión serie mediante USARTs
„ Periférico: USART (Universal Asynchronous /
Synchronous Receiver Transmitter)
„ Funcionamiento:
‰ Para transmitir toma datos en paralelo y los transmite en serie
‰ Recibe datos en serie y los convierte en paralelo para su
lectura
‰ Transmisor y receptor tienen que estar sincronizados, pero
¿cómo conseguirlo?

Dispositivo
0 “embedded”
1 1 1
0 1 1
0

10011011 10011011

UART envia UART recibe

48

48
Comunicación serie asíncrona
„ Transmisor y receptor parten de la misma base de tiempos (XTAL)
„ Si el enlace es síncrono, CLK por línea aparte de los datos
„ Si es asíncrono, información adicional para sincronización adjunto
al DATO y en la misma línea
‰ Formato de trama:
„ Bit de arranque: primera transición
„ Bits de datos: 5 a 8 intervalos de bit
„ Bit de paridad: opcional para detección de errores
„ Bits de paro: 1, 1.5 o 2 intervalos de bit
‰ Penalización( % de bits añadidos):
bits de control
Penalización(%) = × 100
bits de datos
Tiempo de caracter

LSB Bits de datos MSB Bits de


Estado de parada Estado de
parada parada
Bit de Bit de
arranque paridad

49

49
Comunicación serie asíncrona
„ Error entre las bases de tiempos de receptor y transmisor
‰ Se utiliza un reloj de periodo mucho menor que el intervalo de bit
„ Habitualmente: 16 veces mayor que la velocidad de
transmisión
‰ Se muestrea la línea en el 8º periodo
‰ La máxima desviación aceptable (ΔT), pues:
TBIT
> Δ T ⋅ (n ⋅ 16 − 8 ) donde:
2 TBIT: Intervalo de bit
ΔT: desviación del reloj
Bit de arranque
n: número de bits
P erio do de
m uest reo

Sin cro n izació n

50

50
Modelo UART genérico
„ Arquitectura general de un CI dedicado a comunicaciones
serie:
Paralelo-serie
D0..D7
A0..A3 Lógica de
control
INT, CS,
WR, RD, RST Reg.Salida

Canal
Reg. Entrada
Temporizador
CLK de la
comunicación
Serie-paralelo

Reg. Estado Reg. Control

„ Popular como CI, muy frecuente dentro de mC

51

51
Periférico de comunicaciones MCS-51
„ El 8051 incluye un periférico USART
‰ Registro SBUF (buffer)
„ Full-duplex: SBUF físicamente duplicado
‰ Registro SCON (control):
„ Selección modo de trabajo: 1 modo síncrono, 3 modos
asíncronos
„ Selección de velocidad de comunicación (con frecuencia
junto con algún temporizador)
„ Noveno bit de dato para transmitir y recibir (TB8 y RB8)
„ Gestión de interrupciones asociadas al puerto serie (flags
TI y RI)

52

52
SCON: control del puerto serie

53

53
Baudios
„ Modo 0: fija, 1/12 de
la frecuencia del
oscilador
„ Modo 2: variable en
función de SMOD
SMOD
BAUDIOS en Modo 2 = 2 • frecuencia oscilador
64

„ Modos 1 y 3:
variable. Empleando
T1 en autorecarga,
la velocidad viene
dada por: SMOD
frecuencia oscilador
BAUDIOS en Modos 1 y 3 = 2 •
32 12 • (256 - (TH 1))

54

54
Comunicación síncrona: Modo 0

55

55
Comunicación asíncrona: Modo 3

56

56
Cronogramas Modo 0 y Modo 3

57

57
¿ Y el noveno bit?
„ Gracias a flags RB8 y TB8 se dispone de un noveno
bit en la comunicación serie
„ Posibles usos:
‰ Palabra de 9 bits MOV A, @R1 ;Saco el dato a enviar
‰ Bit de paridad: MOV C, P ;Obtengo su paridad.
MOV TB8,C ;Lo coloco en TB8
MOV SBUF, A ;Inicio el envío

‰ En modo multiprocesador, en esquemas “maestro-


multiesclavo”:
„ Mediante flag SM2 se puede condicionar la activación de la
interrupción RI al estado del 9º bit: se interrumpe si RB8 a ‘1’, y
no se interrumpe si RB8 a ‘0’
„ El 9º bit diferencia entre información de dirección (todos se
interrumpen) o información de comando/datos (sólo se interrumpe
el que le interesa)

58

58
Gestión del consumo
„ La tecnología CMOS es estática. Es posible la
gestión del consumo, muy interesante en
aplicaciones “embedded”
„ 2 modos, invocables por software (registro PCON):
‰ Modo idle:
„ CPU parado. RAM, SFR y periféricos funcionando
„ Reducción del consumo respecto al modo normal: ~15%
desde 15 – 5.5 mA hasta 5 – 1 mA
„ Salida mediante INT o RST
‰ Modo power down:
„ CPU y periféricos parados. RAM y SFR “congelados”
„ Consumo: ~ 100 - 20 μA
„ Salida mediante RST: se inicializa SFR, pero se
recupera intacta la RAM
„ CLK puede ralentizarse, e incluso pararse

59

59
Gestión del consumo

60

60
Recapitulando
„ Hemos repasado los aspectos más relevantes de la familia MSC-51:
arquitectura, mapa de memoria, juego de instrucciones y periféricos
„ Para aprender hay que PRACTICAR !!
‰ En el siguiente tema, ejercicios de diseño
‰ Muchas webs sobre el tema:
„ www.8052.com
„ www.keil.com
„ http://ee.cleversoul.com/8051.html
„ Etc, etc,etc…
„ ¿Qué queda? Arquitecturas avanzadas, herramientas de alto nivel,
aplicaciones en sistema embarcados (sistemas operativos,
comunicaciones), integración SoC:
‰ Asignatura 3º ITTSE: Sistemas Electrónicos con μP
„ El uso de mC es básico para trabajar como ingeniero de diseño en
electrónica

61

61

También podría gustarte