Professional Documents
Culture Documents
Curso HCS12
Curso HCS12
11:00-13:00 (Teoria)
11:00-12:00 (Problemes)
OBJECTIUS
Lassignatura pretn formar estudiants que entenguin el mode de funcionament bsic dun sistema
encastat (embedded) basat en un microcontrolador i que hagin adquirit les habilitats fonamentals de la
programaci en llenguatge ensamblador.
Lassignatura posar un mfasi important en la resoluci de casos prctics alhora que reforar conceptes
bsics adquirits en altres assignatures de la titulaci. En particular, sestudiar larquitectura bsica dun
sistema microcontrolador, el seu repertori dinstruccions i els seus modes dadreament. Saplicaran els
principis de disseny top-down per al desenvolupament de programes per al microcontrolador i saprendr
a escriure programes estructurats en llenguatge ensamblador per al Motorola HCS12. Es descriuran les
principals interfcies dEntrada/Sortida i es practicaran els conceptes bsics de programaci de port
parallels, control de temporitzadors i gesti dinterrupcions. Per ltim, lassignatura acabar amb
lestudi dels elements bsics necessaris per al disseny dun sistema encastat i es revisaran els circuits
bsics necessaris per construir un sistema senzill basat en un microcontrolador, tot analitzant la placa
Motorola M68HC12A4EVB i altres plaques similars.
TEORIA
1. INTRODUCCI
-
2. ARQUITECTURA DE MICROPROCESSADORS/MICROCONTROLADORS
-
4. ENTRADA/SORTIDA PARALLELA
-
5. TEMPORITZADORS
-
6. INTERRUPCIONS
-
Dates importants
1 convocatria
1 prova parcial: 22 d mar del 2009
2 prova parcial: 7 de juny del 2009
2 convocatria: per confirmar
PRCTIQUES
Realitzaci de diversos programes en ensamblador per a la placa HCS12E128.
Calendari
Nombre total de sessions: 10
Inici de sessions de prctiques: veure calendari
Final de sessions de prctiques: veure calendari
Horaris:
Dimarts
Dijous
Dijous
15:00-18:00
11:00-14:00
15:00-18:00
Les prctiques shan de realitzar en grups de tres persones. Noms en casos excepcionals els professors
admetran grups de menys membres. La gesti de grups es far amb el campus virtual. Lobertura de
laplicaci sanunciar a classe. Altres informacions especfiques sobre les prctiques saniran incloent
en altres documents especfics que es publicaran al llarg del curs,
BIBLIOGRAFIA
Teoria
Bsica
- Software and Hardware Engineering. M68HC12. Fredrick M. Cady & James M. Sibigtroth.
Oxford University Press, (2000).
Complementria
- 68HC12 Microcontroller: Theory and Applications, Daniel J. Pack, Steven F. Barret,
Prentice-Hall, (2002).
Prctiques
- Software and Hardware Engineering. M68HC12. Fredrick M. Cady & James M. Sibigtroth.
Oxford University Press, (2000).
La bibliografia es complementa amb documents tcnics i manuals de components usats en el laboratori.
Tamb hi ha fora recursos dinformaci disponibles a Internet. Es posar una selecci dels ms tils a la
pgina corresponent de lassignatura dins el Campus Virtual.
PROFESSORS
Teoria:
Problemes:
Prctiques:
Diego Lugones
Claudia Rosas
Eduardo Cabrera
Claudia Rosas
Eduardo Cabrera
Andrea Trujillo
AVALUACI
1 convocatria
La nota final de l'assignatura s'obt sumant les notes corresponents a les prctiques i a la teoria,
ponderades en un percentatge del 70% teoria, i 30% prctiques (tant la nota de teoria com la de
prctiques han de ser, com a mnim, de 5 per poder fer la suma; en cas contrari, l'assignatura es
qualificar amb un susps).
La nota de teoria sobt a partir de dues proves
individuals, que representen el 60% (30%
cadascuna), i de la realitzaci de problemes en
grup, que suposen el 10% restant. La nota de
problemes es tindr en compte en la nota final
de teoria sempre que la mitja de les dues proves
individuals sigui superior a 4 i que la nota de
problemes impliqui una millora respecte les
notes de les proves individuals; en cas contrari,
la nota de teoria vindr exclusivament de les
proves individuals.
Els problemes es realitzaran en grups de dues i
es destinaran les classes de dimecres per a la
seva correcci.
La nota de prctiques ser la mitja aritmtica de
totes les prctiques, per noms es pot
suspendre una nica prctica que no sigui
lltima per poder aprovar les prctiques. En cas
contrari no saprovar la part de prctiques.
Problemas
i =1
Exmenesi
c / examens 5
2
Lassistncia al laboratori de prctiques s obligatria i condici "sine qua non" per aprovar. Les
prctiques tamb es faran en grups de tres persones. No cal que coincideixin els integrants dels grups de
prctiques i de problemes. Tot i que la realitzaci de les prctiques es faci en grup, lavaluaci final ser
individual i es tindr en compte la valoraci que el professor de prctiques faci de cada integrant del
grup, tenint en compte la seva feina i la seva participaci durant les diferents sessions de treball en el
laboratori.
Les qualificacions obtingudes durant aquest perode inicial del curs seran descartades si lalumne
decideix abandonar lassignatura i que li sigui avaluada amb un No Presentat. s a dir, la qualificaci
de No Presentat sobtindr si no es realitza cap de les proves, dels problemes i de les prctiques
avaluables desprs daquesta setmana, amb independncia del que shagi fet abans. Si passat aquest punt
del curs es continuen realitzant proves, prctiques o problemes, savaluar globalment tota lassignatura
en la 1 convocatria tenint en compte totes les notes aconseguides al llarg del curs. Aquelles persones
que vulguin realitzar problemes o prctiques sense que els hi siguin comptabilitzades en la nota final,
caldr que ho consultin amb el professor de teoria.
2 convocatria
En cas de no haver superat la part de teoria, en la 2 convocatria es realitzar una prova individual
escrita. No hi ha examen de prctiques en la 2 convocatria (cal aprovar-les al llarg de les 10 sessions de
Semana
Teora
15-02-10
Presentacin
Tema 1
Arquitecturas
Tema 2
Programacin
Tema 3
Interfaces
(Memoria)
Tema 4
Interfaces
(Entrada/Salida)
22-02-10
01-03-10
08-03-10
15-03-10
Problemas
Sesin 1
Sesin 2
Sesin 1
Tutorial
Sesin 3
Sesin 2
Tutorial
Sesin 4
22-03-10
*1 PRUEBA*
29-03-10
Periodo no
lectivo
Periodo no
lectivo
05-04-10
Periodo no
lectivo
Periodo no
lectivo
12-04-10
Tema 5
Temporizadores
Sesin 5
19-04-10
Tema 5
Temporizadores
Sesin 6
26-04-10
Tema 6
Interrupciones
Sesin 7
03-05-10
Tema 6
Interrupciones
Sesin 8
10-05-10
17-05-10
Tema 7
(Mdulos
integrados)
Tema 7
(Mdulos
integrados)
Prcticas
Sesin 9
Sesin 10
24-05-10
Festivo
Repaso
31-05-10
Semana previa
al periodo de
exmenes
Semana previa al
periodo de
exmenes
07-06-10
* 2 PRUEBA*
Sesin 3
Programacin
bsica
Sesin 4
Programacin
puertos de salida
Periodo no
lectivo
Periodo no
lectivo
Sesin 5
Programacin
puertos de
entrada
Sesin 6
Temporizadores
Sesin 7
puertos +
Temporizadores
Sesin 8
Mdulos
adicionales
Sesin 9
Mdulos
adicionales
Sesin de
recuperacin
Semana previa
al periodo de
exmenes
Disseny de Sistemes
Electrnics Basat en
Microprocessadors
Qu es un Procesador?
Mquina digital electrnica programable
para el tratamiento automtico de la informacin,
capaz de recibirla, operar sobre ella mediante
procesos determinados y suministrar los resultados
de tales operaciones. William Stallings
Entrada
Procesador
Programa
Salida
Decodificar
Instruccin
(3)
Ejecutar
Instruccin
(4)
Leer
o Escribir en
Memoria
Verificar
Interrupcin
(5)
Servidores
Sistemas Empotrados:
Rendimiento deseado al mnimo precio y consumo elctrico
Respuestas en tiempo Real
Aplicaciones cuidadosamente sintonizadas
Sistemas Empotrados
any device that includes a programmable computer but is not
itself intended to be a general-purpose computer Wayne Wolf
Embedded is all computing that is not general purpose (GP),
where general-purpose processors are the ones in todays
notebooks, PCs, and servers Josh Fisher
Sistemas Empotrados
Sistemas heterogneos:
mltiples procesadores de diversos tipos
sistemas de memoria diseado a medida de la aplicacin
Aplicaciones (DSP, multimedia, ...) fciles de paralelizar
No es necesario preservar compatibilidad S/W
Diseos sensibles a coste y consumo
Tiempo
Prestaciones
Tiempo de Respuesta
(orientado al usuario)
Productividad (Throughput) (orientado al sistema)
Capacidad
Datos y Programas
Coste
Fabricacin y Diseo
Limitaciones
Consumo de Energa y Calor generado
Tamao fsico, restricciones elctricas
Fiabilidad!!
No olvidar la fiabilidad!
Muy importante en ciertas aplicaciones:
Automocin, aviones, plantas nucleares
Se mide en fallos por aos
Hay que sacrificar otras cosas: velocidad, coste,
ADC
Procesamiento
Digital
DAC
Procesadores
Procesador:
DSP
(digital signal
processor)
Microcontrolador
C:
Microprocesador:
GPP
Una Clasificacin
Procesador: Trmino genrico
Microprocesador (P):
Microcontrolador (C):
Diseado para sistemas empotrados, integra ms elementos.
Tpicamente: CPU + memoria + perifricos.
Ejemplos : 8051, Intel 80196, familia Motorola 68HCxx.
Log FLEXIBILIDAD
Procesador
Propsito
General
Procesador
Digital de
Procesador
Seal
con Repertorio
Field
Especfico
Programmable
Devices
Application
Specific IC
(Circ.Integr.)
Physically
Optimized IC
(Circ.Integr.)
Software
Hardware
Aproximaciones de Implementacin
Log RENDIMIENTO
Microprocesadores empotrados:
versiones reducidas de los anteriores
muchas variedades en funcin de rendimiento, coste y consumo
de propsito general: los puede hacer poco eficientes para ciertas
aplicaciones (lentos para seal)
Alternativas intermedias
Programmable Logic Device (PLD):
Elementos
elementos combinacionales (cmputo) y estructura de
interconexin entre ellos
Memoria de datos y de control (de la interconexin)
Tecnologa en evolucin
Mejor eficiencia en el uso del rea del chip y en el consumo
energtico. Menor tiempo de configuracin.
Mejores herramientas de diseo
Ejemplo de PLD
FPGA (Field-Programmable Gate Arrays)
Son capaces de realizar cualquier implementacin en lgica digital
El chip contiene bloques bsicos capaces de realizar una funcin
sencilla, pero programable para cada bloque individual
La conexin entre los bloques tiene un esquema fijo (malla) pero
tambin es programable qu bloques se conectan y cmo.
El paralelismo
del H/W es
enorme: pero la
complejidad
para utilizarlo
recae en el
programador y
en el S/W
CCB
CCB
CCB
CCB
CCB
CCB
CCB
CCB
CCB
Alternativas intermedias
SOC (system on a chip) application specific, multiple
heterogeneous processors on chip (or board); defined
(and relatively small) memory
The new SOC
+ Plenty of low cost area (transistors).
+ Lower frequencies and fast on-die memory
provide better system balance.
+ Lower frequencies mean lower power and
better reliability.
- BUT application specific design means
smaller production runs and more concern
with design costs and design complexity.
Procesadores personalizados
Why use ASIPs (Application Specific Processor Architectures)?
Rainer Leupers, Aachen University
Higher efficiency for given range of applications
IP (Intellectual Property) protection
Cost reduction (no royalties)
Product differentiation
Procesadores personalizados
Tensilica Xtensa:
Fixed RISC-like processor core
Configurable and optional components
ISA extension language (application specific instructions)
Escoger el repertorio de instrucciones
- Escoger el nmero de registros
- Eliminar modos de direccionamiento no utilizados
Personalizar la microarquitectura
- reemplazar unidades funcionales (MUL) por S/W
- eliminar controladores de E/S no usados
- configurar la cach de instrucciones (eliminarla)
- configurar tamao o nmero de bancos de memoria
Problemas a la vista!
Cada vez ms caro incrementar GHz
(frecuencia de reloj) (a pesar de
economa de produccin en masa)
http://www.bsc.es/
DSEBM
Teora Tema 2
Arquitectura de Microprocesadores
2008-2009
Estudiaremos el MC9S12E128CPV
Caractersticas:
10
WEBS INTERESANTES:
http://www.motorola.com
http://www.freescale.com
Lectura recomendada:
AN1057: Selecting the Right Microcontroller Unit,
Motorola Semiconductor Application Note, Phoenix, AZ, 1990
11
DSEBM
Teora Tema 3
Programacin del HCS12
2008-2009
Modelo de programacin
Registros:
Acumuladores A, B y D:
A y B son dos acumuladores de 8 bits
Algunas instrucciones tienen operandos de 16 bits
y tratan a los registros A y B como uno solo (A es
el byte ms significativo)
Cuando se modifica D, tambin se modifican A y B
A = AB
B = 32
D = AB32
Modelo de programacin
Registros:
Registros ndice X e Y:
Son utilizados principalmente para indexar
direccionamientos
Algunas instrucciones aritmticas utilizan los
registros ndices
Modelo de programacin
Registros:
Modelo de programacin
Registros:
Registro Contador de Programa PC:
Registro de 16 bits que contiene la direccin de la
prxima instruccin a ejecutar.
Se incrementa automticamente cada vez que una
instruccin es fetched
Modelo de programacin
Registros:
Registro de Condicin
Tipos de Datos
Bit.
Enteros con signo de 5-bit(offset en direccionamiento
indexado).
Enteros con y sin signo de 8 bits
Enteros con signo de 9-bit (offset en direccionamiento
indexado).
Enteros con y sin signo de 16 bits.
Direccin efectiva de 16 bits.
Enteros con y sin signo de 32 bits.
7
Modos de Direccionamiento
Hay 7 modos de direccionamiento:
{
Inmediato
Directo
Extendido
Indexado
Indexado-indirecto
Inherente
Relativo
Notacin utilizada
Modos de Direccionamiento
Direccionamiento Inmediato
Usado cuando el operando es una constante
conocida al momento de escribir el programa
Ldaa #!64
; Hexadecimal 64 ->A
Ldx
#$1234
Modos de Direccionamiento
Direccionamiento Directo y Extendido:
El operando contiene la direccin de memoria donde se encuentra el dato.
En el tipo directo la direccin es de 8 bits y en el extendido de 16.
11
Modos de Direccionamiento
Direccionamiento Indexado:
El formato operacin que usa este direccionamiento es:
Op Offset, Registro_Indice
Donde Registro_Indice puede ser: X,Y SP o en algunos casos PC y Offset
es un valor de 5, 9 o 16 bits. Este direccionamiento nos da una direccin
efectiva del dato al hacer : Registro_Indice + Offset.
12
Modos de Direccionamiento
Direccionamiento Indexado (cont.):
13
Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado
14
Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado
15
Modos de Direccionamiento
Direccionamiento Indexado (cont.):
16
Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado-indirecto
17
Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado- Indirecto
18
Modos de Direccionamiento
Direccionamiento Inherente:
Todos los datos para la ejecucin de la instruccin
estn dentro de la CPU
19
Modos de Direccionamiento
Direccionamiento Relativo:
Direccionamiento usado en las instrucciones de salto.
Podemos tener dos tipos de saltos:
Saltos pequeos (Short Branch): Usan direcciones de salto de 8
bits. Direcciones accesibles:
20
Modos de Direccionamiento
Direccionamiento Relativo (cont.):
21
Modos de Direccionamiento
Resumen:
22
Programas en Assembler
Cada lnea de cdigo tiene cuatro campos:
Label field
Ejemplo
Label field:
Opcode
field
<tab>
ldaa
Operand
field
<tab>
#64
Comment
field
<tab> ;Inicializacin reg A
Programas en Assembler
Ejemplos:
24
Programas en Assembler
Label field
Ejemplo
Operand
field
Opcode
field
<tab>
ldaa
<tab>
#64
Comment
field
<tab> ;Inicializacin reg A
25
Programas en Assembler
Label field
Ejemplo
Opcode
field
<tab>
ldaa
Comment
field
Operand
field
<tab>
#64
Operand Field
Tipos de Operandos:
Smbolos: representan enteros de 8 o 16 bits. Ej. Si CRLF es definido como
$0D0A cuando el programa es ensamblado CRLF es reemplazado
por $0D0A
Constantes: valores numricos que no cambian durante el programa. Pueden
ser Decimales, Hexadecimales, Binarios o ASCII
Base
Prefijo Sufijo
Binario
Decimal
Hexadecimal
H
26
Programas en Assembler
Base
Prefijo Sufijo
Binario
Decimal
Hexadecimal
27
Programas en Assembler
ASCII:
se utilizan o
Show four ways to specify the code for the ASCII code for the character C and choose the best
way to load the ASCII code into the A register in a program.
Solutions:
ASCII - "C"
Hexadecimal - $43
Decimal - !67
Binary - %01000011
The best way to load the A register with the ASCII code for the character C is
ldaa #"C"
28
Programas en Assembler
Label field
Ejemplo
Opcode
field
<tab>
ldaa
Operand
field
<tab>
#64
Comment
field
<tab>
;Inicializacin reg
A
Comment Field:
Los comentarios comienzan con (;)
Cualquier lnea que comience con (;) o (*) se considera como
una lnea de comentario
til para simplificar el entendimiento del cdigo
29
Programas en Assembler
Pseudooperation
30
Programas en Assembler
Pseudooperation
ORG
EQU
DS
31
Programas en Assembler
Pseudooperation
DC
dc.b
dc.w
dc.b
dc.b
dc.b
dc.b
dc.b
32
Repertorio de Instrucciones
Grupos de instrucciones:
Fuzzy Logic
Branch
Loop Primitive
Jump and Subroutine
Interrupt
Index Manipulation
Stacking
Pointer and Index Calculation
Condition Code
Stop and Wait
Background Mode and Null Operations
33
Repertorio de Instrucciones
Load and Store
34
Repertorio de Instrucciones
Transfer and Exchange
35
Repertorio de Instrucciones
Move
36
Repertorio de Instrucciones
Binary-Coded Decimal
37
Repertorio de Instrucciones
Compared and Test
Boolean Logic
38
Repertorio de Instrucciones
Clear, Complement and Negate
39
Repertorio de Instrucciones
Bit Test and Manipulation
40
Repertorio de Instrucciones
Branch
41
Repertorio de Instrucciones
Loop Primitive
42
Repertorio de Instrucciones
Interrupt
43
Repertorio de Instrucciones
Index Manipulation
44
Repertorio de Instrucciones
Stacking
45
Repertorio de Instrucciones
Pointer and Index Calculation
Condition Code
46
Repertorio de Instrucciones
Stop and Wait
47
Repertorio de Instrucciones
48
Repertorio de Instrucciones
49
Repertorio de Instrucciones
50
Repertorio de Instrucciones
51
Repertorio de Instrucciones
52
Repertorio de Instrucciones
53
Repertorio de Instrucciones
54
Repertorio de Instrucciones
55
Repertorio de Instrucciones
56
Repertorio de Instrucciones
57
Repertorio de Instrucciones
LECTURA : LDAx (x es A o B), LDz (z es D,X,Y), funcionalidad: (M)->Reg
ESCRITURA: STAx (x es A o B), STz (z es D,X,Y), funcionalidad: Reg->(M:M+1)
ARITMETICAS: INCx (x es A o B), INz (z es X,Y), funcionalidad: Reg+1->Reg
Repertorio de Instrucciones
LOGICAS: ANDx (x es A o B) Reg and (M) ->Reg, ORAx (x es A o B) Reg or (M) ->Reg
EORx (x es A o B) Reg xor (M) ->Reg
Repertorio de Instrucciones
CCR Condition Code Register
60
Programacin
IF THEN ELSE (Decisin)
Get Temperaure
IF Temperature > Allowed Maximum
THEN
Turn the water valve off
ELSE
Turn the water valve on
ENDIF Temperature > Allowed Maximum
61
Programacin
IF THEN ELSE
(Decisin)
Get Temperaure
IF Temperature > Allowed Maximum
THEN
Turn the water valve off
ELSE
Turn the water valve on
ENDIF Temperature > Allowed Maximum
; IF-THEN-ELSE example
; Equates define constants need by the code
AD_PORT:
EQU
$20
; A/D Data port
MAX_ALLOWED:
EQU
!128
; Maximum Temp
VALVE_OFF:
EQU
0
; Bits for valve off
VALVE_ON:
EQU
1
; Bits for valve on
VALVE_PORT:
EQU
$24
; Port H
; Get Temperature
ldaa
AD_PORT
; IF Temperature > Allowed Maximum
cmpa
#MAX_ALLOWED
bls
ELSE_PART;
; THEN Turn the water valve off
ldaa
VALVE_OFF
staa
VALVE_PORT
bra
END_IF
; ELSE Turn the water valve on
ELSE_PART:
ldaa
VALVE_ON
staa
VALVE_PORT
END_IF:
; END IF Temperature > Allowed Maximum
62
Programacin
WHILE DO (Repeticin)
63
Programacin
WHILE DO
(Repeticin)
; WHILE - DO Example
AD_PORT:
EQU
$70
; A/D Data port
MAX_ALLOWED: EQU
!128
; Maximum Temp
LIGHT_ON:
EQU
1
LIGHT_OFF:
EQU
0
LIGHT_PORT:
EQU
$24
; Port H
;
- - ; Get the temperature from the A/D
ldaa AD_PORT
; WHILE the temperature > maximum allowed
WHILE_START:
cmpa MAX_ALLOWED
bls
END_WHILE
; DO
; Flash light 0.5 sec on, 0.5 sec off
ldaa LIGHT_ON
staa LIGHT_PORT ; Turn the light
jsr
delay
; 0.5 sec delay
ldaa LIGHT_OFF
staa LIGHT_PORT ; Turn the light off
jsr
delay
; End flashing the light
; Get the temperature from the A/D
ldaa AD_PORT
; END_DO
bra
WHILE_START
END_WHILE:
; END_WHILE the temperature > maximum allowed
; Dummy subroutine
delay:
rts
64
Programacin
DO - WHILE (Repeticin)
DO
Get data from the switches
Output the value to the LEDs
END_DO
WHILE Any switch is set
65
Programacin
DO - WHILE
(Repeticin)
DO
Get data from the switches
Output the value tothe LEDs
END_DO
WHILE Any switch is set
; DO-WHILE example
; Equates needed for this example
SW_PORT: EQU
$28
; The switches are on Port J
LEDS:
EQU
$24
; The LEDs are on Port H
;
- - ; DO
DO_BEGIN:
; Get data from the switches
ldaa
SW_PORT
; Output the data to the LEDs
staa
LEDS
; END_DO
; WHILE Any switch is set
tst
SW_PORT
bne
DO_BEGIN
; END_WHILE
66
Saltos Subrutinas
INICIALIZAR EL SP
Y RETORNAR DE
LA SUBRUTINA CON RTS!!!!
67
DSEBM
Teora Tema 4
Entrada/Salida
2008-2009
PIM y Puertos
PIM: Port Integration Module. Interfaz entre los
elementos de E/S y el microcontrolador
Puerto T. Relacionado con el TImer Module y el
PWM. 8 canales.
Port P: generador de formas de onda. 6 canales.
Puerto S. SCI. Serial Communications Interface.
Serie , asncorono.
Puerto M. CAN. Controller Area Netork. Red
entre microcontroladores. SPI. Serial Peripheral
Interface. Serie, sncrono
Puertos A y B. Puertos paralelos de propsito
general.
Puerto E. Puerto paralelo. Admite usos
especiales en funcion del modo de operacind el
microcontrolador.
Puerto AD. Conversor 10bits AD
Puerto J. Generacin de interrupciones o
estndar E/S
2
La mayora de canales pueden ser de propsito
general
Puertos
Puertos
Modelo E/S
{
{
{
{
{
Totalmente integrado
E/S paralelas y serie
E/S analgicas
Funciones de timer
Algunos pins tienen funciones de doble
propsito
TODAS las operaciones de E/S y el CONTROL se
realiza mediante registros
Puertos
Direccin (DDRx)
Datos (PORTx o PTx)
Direccin
{
{
Bit en H o 1 salida
Bit en L o 0 entrada
Puertos
E/S Software
Puertos
Sincronizacin
El software de E/S debe sincronizar la lectura y escritura de los datos con los
requerimientos de tiempo de los dispositivos de Entrada/Salida.
En general los procesadores son mucho ms rpidos que los dispositivos de
Entrada/Salida
Real-Time
Cmo sincronizar?
Polling
Handshaking
Puertos
Sincronizacin Real-Time
Utiliza un delay por software para ajustar los requerimientos de tiempo del
software y el hardware.
Ejemplo:
Envo de caracteres por un puerto a una velocidad de hasta 10 caracteres/segundo.
Considerar insignificante el tiempo usado en obtener y enviar cada carcter.
Un delay de 100 mSeg es requerido entre cada operacin de salida.
Obtencin del carcter y envo del mismo
Dos subrutinas
delay de 100 mSeg
PROBLEMA!!
Dependencia con la frecuencia del Clock de la CPU
Problemas de exactitud en el delay
Solucin Uso del sistema de Timing (prximo tema)
8
Puertos
Polling
Utiliza bits de E/S como bits de estado para los dispositivos de E/S
Ejemplo 1:
Envo de informacind de HCS12 a un dispositivo
de E/S
PJ0 bit de estado
PJ0 lo modifica el dispositivo cuando est listo para
recibir ms informacin. Para esto es necesario un
hardware adicional en el dispositivo externo.
El programa verifica constantemente el bit de
estado PJ0 y enva datos cuanto el disp. est listo
por las lneas PH[3:0].
Puertos
Polling
Ejemplo 2:
Envo de un dispositivo de E/S al HCS12
PJ1 bit de estado
PJ1 lo modifica el dispositivo cuando tiene un nuevo
dato para ser transmitido a la CPU.
10
Puertos
PORTJ:
PORTH:
DDRH:
BIT0:
BIT1:
O_BITS:
;
data1:
data2:
EQU
EQU
EQU
EQU
EQU
EQU
$28
; Port J address
$24
; Port H address
$25
; Data direction Port H
%00000001
%00000010
%00001111
DS
DS
- - 1 ; variable de salida
1 ; variable de entrada
; Initialization
; Set up PORTH[3:0] to be output and PORTH[7:4] to be
; input
bset
DDRH,O_BITS
; Port H output
;
- - -
- - -
- - -
11
Puertos
Polling
Ejemplo 2:
Envo entre HCS12 y un dispositivo
PJ1 bit de estado
PJ1 lo modifica el dispositivo cuando tiene un nuevo
dato para ser transmitido a la CPU.
Puertos
Handshaking
Hay microcontroladores que tienen lneas dedicadas al Handshaking (HC11),
el HCS12 no.
13
Puertos
Inicializacin
PORTJ:
EQU
DDRJ:
EQU
PORTH:
EQU
DDRH:
EQU
BIT0:
EQU
BIT1:
EQU
BIT2:
EQU
BIT3:
EQU
O_BITS: EQU
;
; Initialization
bset
bset
bclr
bclr
$28
;
$29
;
$24
;
$25
;
%00000001
%00000010
%00000100
%00001000
%00001111
- - -
Port
Data
Port
Data
DDRH,O_BITS
DDRJ,BIT1|BIT3
PORTJ,BIT1|BIT3
PORTH,BIT3
J address
direction Port J
H address
direction Port H
;
;
;
;
Port H output
Port J-1,3 output
Reset NEW_DATA_READY
READY_FOR_NEW_DATA
14
Puertos
; Handshaking output data to Port H
; Wait until the status bit, Port J, Bit-0 is 1
SPIN1:
;
brclr
PORTJ,BIT0,SPIN1
BIT0:
EQU
BIT1:
EQU
BIT2:
EQU
BIT3:
EQU
O_BITS:
EQU
;
; Initialization
bset
bset
bclr
bclr
%00000001
%00000010
%00000100
%00001000
%00001111
- - DDRH,O_BITS
; Port H output
DDRJ,BIT1|BIT3; Port J-1,3 output
PORTJ,BIT1|BIT3; Reset NEW_DATA_READY
PORTJ,BIT3
; READY_FOR_NEW_DATA
- - -
brclr
PORTJ,BIT2,SPIN2
;
data1:
data2:
DS
DS
- - 1
1
15
Puertos
Transferencia de Datos Asncrona (ejemplo: entrada)
S, puedes
Puedo?
De nada
Gracias
16
Puertos
Puerto T
17
Puertos
Cmo escribir un valor en el puerto?
movb
staa
variable1, PORTT
o
PORTT
18
Puertos
Configuracin y escritura en el puesto T
; export symbols
XDEF Entry
ABSENTRY Entry
application entry point
;LEDS
PORTT
DDPRT
CODE
DATA
STACK
EQU
EQU
EQU
EQU
EQU
$0240
$0242
$4000
$0400
$1FFF
; variable/data section
ORG DATA
temp_byte
ds.b 5
var_A:
dc.b $AA ; 1010 1010
; code section
ORG CODE
Entry:
lds #STACK
;inicializa la pila SP
var_A,PORTT
bucle:
nop
; no operation
bra bucle
19
Puertos
Ejemplo de escritura en el puerto T
; export symbols
XDEF Entry
ABSENTRY Entry
;LEDS
PORTT
EQU
$0240
DDPRT
EQU
$0242
CODE
DATA
STACK
EQU
EQU
EQU
$4000
$0400
$1FFF
; variable/data section
ORG DATA
temp_byte
ds.b 5
var_A:
dc.b $AA
; subrutina Retardo
retardo:
pshx
pshb
ldab #$FF
ciclo: ldx #$FFF
ciclo_1:nop
dbne x,ciclo_1
dbne b,ciclo
pulb
pulx
rts
; code section
ORG CODE
Entry:
lds #STACK
bset DDPRT,#$FF
bucle:
movb var_A,PORTT
jsr
retardo
ldaa #$00
staa PORTT
jsr
retardo
bra
bucle
20
(I)
(II)
(III)
(IV)
21
DSEBM
Teora Tema 5
Temporizadores I
2008-2009
Manejo de tiempos
Bucles
for (i=0; i<tiempo; i++)
{
NOP
}
{
Manejo de tiempos
Clock
16 Bits
Contador
0000000000000000
0
1111111111111111
F
0000
FFFF
Manejo de tiempos
Clock
$0000
Contador
0000000000000000
0
$FFFF 1111111111111111
0000000000000000
TOF
1
Reg. Estado Timer
TFTLG2
Time FLaG2
Clock = A ciclos/segundo
Incrementar el contador hasta FFFF tardar:
t = FFFF/A [Seg]
Ej: Clock = 8 Mhz
t = (2^16 Ciclos)/8 Mhz = 65536 / 8 106 Sg= 8,19 mSeg
4
Manejo de tiempos
Prescaler: incrementa el contador cada n ciclos
Donde n = 2,4,8,16,32,64,128
0000000000000000
0000000000000001
1111111111111111
Manejo de tiempos
Para manejar tiempos ms exactos
Registro de
comparacin
Contador
FFE0
CnF
TFLG1
6
Manejo de tiempos
Temporizador
Principales funciones:
{
{
{
{
Timer Overflow:
Input Capture:
Output Compare:
Pulse Accumulator:
Temporizador
Input Capture:
Permite la medicin de caractersticas de una
seal de entrada. El sistema de Input Capture
puede ser programado para medir la longitud de
un pulso de entrada o usado para computar las
caractersticas de una seal peridica
( duty cycle y perodo)
Trailing
edge
Rising
edge
Longitud
del pulso
On time
Perodo
Duty cycle = On Time x 100
Perodo
Temporizador
Output Compare:
Permite un control de tiempos ms preciso que el
TimerOverflow. El control lo realiza mediante la
comparacin del contador con el contenido de un
registro programable. Se puede usar para la
generacin de formas de ondas de salida.
Pulse Accumulator:
Permite contar contabilizar pulsos externos.
10
Temporizador
Componentes del TIM
(detalle)
1. 16-bit free running counter
and its associated time
scaling hardware
2. Eight input capture/output
compare channels. TIM0 four
plus TIM1 another
Habilita four.
el timer
Temporizador
TCNT(hi):TCNT(lo)
4:1
MUX
Free running
counter
prescaler
PR[2:1:0]
TOF
TOI
TCRE
Channel 7
Output Compare
CLK[1:0]
Habilita el timer
$0046
12
Temporizador
TCNT(hi):TCNT(lo)
4:1
MUX
prescaler
PR[2:1:0]
Free running
counter
TOF
TOI
TCRE
CLK[1:0]
Channel 7
Output Compare
13
Temporizador
TCNT(hi):TCNT(lo)
4:1
MUX
Free running
counter
prescaler
PR[2:1:0]
TOF
TOI
TCRE
Channel 7
Output Compare
CLK[1:0]
$004D
14
Temporizador
TCNT(hi):TCNT(lo)
4:1
MUX
prescaler
PR[2:1:0]
Free running
counter
CLK[1:0]
Channel 7
Output Compare
15
Temporizador
Entry:
ROMStart
RAMStart:
EQU
equ
$00004000
$00000400
DDRT:
PTT:
equ
equ
$00000242
$00000240
mTIM0_TSCR2_PR0:
mTIM0_TSCR2_PR1:
mTIM0_TSCR2_PR2:
equ
equ
equ
%00000001
%00000010
%00000100
TIM0_TSCR1:
TIM0_TSCR2:
TIM0_TFLG2:
equ
equ
equ
$00000046
$0000004D
$0000004F
mTIM0_TFLG2_TOF:
mTIM1_TSCR1_TEN:
equ
equ
%10000000
%10000000
; variable/data section
ORG RAMStart
; Insert here your data definition.
Datos
dc.b $1,$2,$4,$8,$10,$20,$40,$80
; code section
ORG
ROMStart
Temporizador
Output Compare
TSCR2
TSCR2
TIE
TO 7 MORE
TIMER
CHANNELS
TCTL1
Temporizador
Output Compare
TCNT
PACLK
PACLK/256
PACLK/65536
P Clock
TCNT(hi):TCNT(lo)
4:1
MUX
Free running
counter
prescaler
PR[2:1:0]
TOF
TOI
TCRE
Channel 7
Output Compare
CLK[1:0]
$004D
18
Temporizador ROMStart
RAMStart:
XDEF Entry
ABSENTRY Entry
EQU $4000
equ
$00000400
DDRT:
PTT:
equ
equ
$00000242
$00000240
mTIM0_TSCR2_PR0:
mTIM0_TSCR2_PR1:
mTIM0_TSCR2_PR2:
equ
equ
equ
%00000001
%00000010
%00000100
TIM0_TIOS:
mTIM0_TIOS_IOS7:
equ
equ
$00000040
%10000000
TIM0_TSCR1:
TIM0_TSCR2:
TIM0_TFLG2:
equ
equ
equ
$00000046
$0000004D
$0000004F
mTIM1_TSCR1_TEN:
equ
%10000000
TIM0_TC7:
mTIM1_TFLG1_C7F:
equ
equ
$0000005E
%10000000
Tiempo
EQU
$5555
ORG RAMStart
Datos
dc.b $1,$2,$4,$8,$10,$20,$40,$80
ORG
ROMStart
Entry:
;Inicializacin de los 8 canales
del puerto T como salida
bset DDRT,#$FF
;Inicializacin del TimerOverFlow
;Configurarmos el prescale a 128
bset TIM0_TSCR2,#(mTIM0_TSCR2_PR2
| mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0)
ldab #0
ldx #Datos
;Activamos el canal 7 como output compare
bset TIM0_TIOS, #mTIM0_TIOS_IOS7
;Cargamos en el registro TC7 el valor que queremos
;comparar con el contador libre
movw #Tiempo, TIM0_TC7
;Activamos el contador libre
bset TIM0_TSCR1,#mTIM1_TSCR1_TEN
; Fin de la inicializacin del Output Compare
; Mientras el bit C7f sea 0 ( el valor del contador
; libre TCNT y el valor del registro TIM0_TC7 son diferentes )
; nos quedamos en la siguiente instruccin indefinidamente
Bucle_1:
brclr TIM0_TFLG1,# mTIM1_TFLG1_C7F, Bucle_1
; Una vez que se ha obtenido una comparacin
;verdadera ( el valor del contador libre TCNT y el valor del
;registro TIM0_TC7 son iguales ) el bit C7F ( dentro del
;registro TFLG1 ) se pone a 1. Ya no salta a la etiqueta
;Bucle_1 y a partir de aqu la ejecucin del programa prosigue
; Forzamos a que el bit C7F sea 0. As nos podremos
dar cuenta del prximo output compare ( comparacin correcta
entre el TCNT y el TIM0_TC7 en nuestro ejemplo)
bset TIM0_TFLG1,#mTIM1_TFLG1_C7F
ldd #Tiempo
addd TIM0_TC7
std TIM0_TC7
movb b,x,PTT
incb
cmpb #8
bne Bucle_1
ldab #0
bra Bucle_1
19
Temporizador
Output Compare Bit Operation
El CnF puede poner en 1 o 0
automticamente un bit del puerto T
TSCR2
TSCR2
TIE
$0048
TO 7 MORE
TIMER
CHANNELS
TCTL1
20
Temporizador
Ejemplo: Output Compare Bit Operation (canal 7)
ROMStart
EQU $00004000
RAMStart:
equ $00000400
mTIM0_TCTL1_OM7:
equ %10000000
mTIM0_TCTL1_OL7:
equ %01000000
Tiempo
EQU $5555
ORG
ROMStart
Entry:
bset DDRT,#$FF
bset TIM0_TSCR2,#(mTIM0_TSCR2_PR2 | mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0)
bset TIM0_TSCR2,#mTIM0_TSCR2_TCRE ; Reset
bset TIM0_TIOS, #mTIM0_TIOS_IOS7 ; canal 7 como Output Capture
movw #Tiempo, TIM0_TC7
bclr TIM0_TCTL1,#mTIM0_TCTL1_OM7
bset TIM0_TCTL1,#mTIM0_TCTL1_OL7
bset TIM0_TSCR1,#mTIM1_TSCR1_TEN
Bucle_1:
brclr TIM0_TFLG1,,# mTIM1_TFLG1_C7F, Bucle_1
bset TIM0_TFLG1,#mTIM1_TFLG1_C7F
bra Bucle_1
21
DSEBM
Teora Tema 5
Temporizadores II
2008-2009
Temporizador
Canal 7 Output Compare para controlar hasta 8 salidas
TSCR2
TSCR2
TIE
TO 7 MORE
TIMER
CHANNELS
TCTL1
Temporizador
Temporizador
Input Capture:
Permite la medicin de caractersticas de una
seal de entrada. El sistema de Input Capture
puede ser programado para medir la longitud de
un pulso de entrada o usado para computar las
caractersticas de una seal peridica ( perodo,
duty cycle y frecuencia)
Trailing
edge
Rising
edge
Longitud
del pulso
On time
Perodo
Duty cycle = On Time x 100
Perodo
Temporizador
Input Capture
Temporizador
Input Capture
TCTL3
Temporizador
Pulse accumulator
Temporizador
Pulse accumulator
PAFLG
Temporizador
Pulse accumulator
$0060
Temporizador
Pulse accumulator
$0061
10
Temporizador
Pulse accumulator
$0062
11
DSEBM
Teora Tema 6
Interrupciones I
2008-2009
Interrupciones
CONCEPTOS GENERALES
Qu es una interrupcin?
{
Externamente:
Internamente :
Interrupciones
Relacin de pasos
1. El procesador est ejecutando programas la mayor cantidad de tiempo.
Solamente una interrupcin detiene la ejecucin de un programa brevemente y
realiza una accin.
1. La mayora de los procesadores finalizarn la instruccin que est ejecutando y
guardar la posicin de memoria de la siguiente para poder retomar la ejecucin
mas tarde.
1. Identificacin del origen de la interrupcin antes de tomar la accin apropiada
(hardware).
1. De acuerdo con la fuente de interrupcin se tomar la accin adecuada.
1. Despus de realizar la accin determinada por la fuente de interrupcin, el
procesador contina con la tarea que estaba realizando antes.
Interrupciones
Interrupciones
Tipos de Interrupciones:
{
Enmascarables
No-Enmascarables
Interrupciones
Prioridad
{
Interrupciones
Servicio de Interrupcin
Interrupciones
Vector de Interrupcin
{
Interrupciones
Interrupciones
DISPOSITIVO LENTO
Tiempo de CPU:
10
Interrupciones
DISPOSITIVO RPIDO
11
Interrupciones
HCS12
Modelo de programacin
CCR
No-Enmascarables
INTERRUPCIONES
Enmascarables
12
Interrupciones
No-Enmascarables
No pueden ser deshabilitadas por el usuario.
Estn controladas por el bit X del CCR.
Interrupciones principales No-Enmascarables:
Reset del sistema
Nonmaskable interrupt request (XIRQ_L)
Unimplemented instruction trap
Sofware interrupt instruction (SWI)
13
Interrupciones
Enmascarables
1. Pueden ser habilitadas o deshabilitadas por el usuario.
2. El sistema de interrupciones enmascarable se habilita poniendo
el bit I del CCR en 0 (CLI) y se lo deshabilita ponindolo en 1
(SEI).
3. Las interrupciones enmascarables deben ser habilitadas
globalmente con el comando CLI y localmente con el bit de
habilitacin asociado con la interrupcin adecuada.
14
Interrupciones
Interrupciones enmascarables:
Maskable interrupt request (IRQ_L)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up
15
Interrupciones - Timer
TSCR2
TSCR2
16
Interrupciones - Timer
TSCR2
TSCR2
CCR
17
Interrupciones - Timer
TSCR2
TSCR2
18
19
20
21
22
23
24
25
26
27
Interrupciones - Timer
28
Interrupciones - Timer
29
Interrupciones - Timer
30
31
32
33
34
35
36
Timer
TSCR2
TSCR2
TIE
TO 3 MORE
TIMER
CHANNELS
TCTL1
37
Pulse accumulator
38
39
40
41
42
DSEBM
Teora Tema 6
Interrupciones II
2008-2009
Interrupciones
Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up
Interrupciones
Input Capture
Interrupciones
Interrupciones
Interrupciones
Pulse accumulator
Interrupciones
Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up
Interrupciones
Interrupciones
Habilitacin local
Interrupciones
10
Interrupciones
Habilitacin global
11
Interrupciones
12
Interrupciones
13
Interrupciones
14
Interrupciones
15
Interrupciones
Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up
16
Interrupciones
Key Wakeup
17
Interrupciones
Key Wakeup
andcc CCR(M)->CCR
18
Interrupciones
Key Wakeup
19
Interrupciones
Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up
20
Interrupciones
Real-Time Interrupt
Permite generar interrupciones con diferentes
perodos de tiempo
Se acostumbra a usar para recordar al
microcontrolador que realice alguna tarea
Ejemplo: Test del estado de la batera
Configuracin.Registro de control
RTR6 RTR5
Habilitacin local
RTIE
RTICTL
OSCCLK
CRGINT
CRGFLG
RTR0
RTIF
CCR
REAL TIME
INTERRUPT
REQUEST
Habilitacin global
21
Interrupciones
Real-Time Interrupt
CRGINT
RTIE
RTICTL
OSCCLK
RTR6 RTR5
RTR0
CRGFLG
RTIF
CCR
I
REAL TIME
INTERRUPT
REQUEST
22
Interrupciones
Preescale
23
Interrupciones
Real-Time Interrupt
CRGINT
RTIE
RTICTL
OSCCLK
RTR6 RTR5
RTR0
CRGFLG
RTIF
CCR
I
REAL TIME
INTERRUPT
REQUEST
24
Interrupciones
Real-Time Interrupt
CRGINT
RTIE
RTICTL
OSCCLK
RTR6 RTR5
RTR0
CRGFLG
RTIF
CCR
I
REAL TIME
INTERRUPT
REQUEST
25
Interrupciones
Prioridad
Utilizada cuando se produce ms de un evento que genera interrupcin
El programador mediante el registro HPRIO (Highest
PRIOrity interrupt) puede determinar que fuente de
interrupcin es la ms prioritaria, el resto se mantiene igual
E registro HPRIO puede ser escrito cuando el bit I del CCR es 1
(interrupciones enmascarables deshabilitadas)
26
Interrupciones
Prioridad
27
Interrupciones
Prioridad
28
Interrupciones
Prioridad - ejemplo
SEI
LDD #Vtim0ch7 ; vector canal 7
STAD
HPRIO
CLI
29
Interrupciones
30
Interrupciones
XIRQ*
Interrupciones
XIRQ*
32
33