Post on 26-Mar-2015
description
DISSENY DE SISTEMES ELECTRÒNICS BASATS EN MICROPROCESSADORS
Codi assignatura: 28203 Horari: Dilluns 11:00-13:00 (Teoria) Dimecres 11:00-12:00 (Problemes) OBJECTIUS L’assignatura pretén formar estudiants que entenguin el mode de funcionament bàsic d’un sistema encastat (embedded) basat en un microcontrolador i que hagin adquirit les habilitats fonamentals de la programació en llenguatge ensamblador. L’assignatura posarà un èmfasi important en la resolució de casos pràctics alhora que reforçarà conceptes bàsics adquirits en altres assignatures de la titulació. En particular, s’estudiarà l’arquitectura bàsica d’un sistema microcontrolador, el seu repertori d’instruccions i els seus modes d’adreçament. S’aplicaran els principis de disseny top-down per al desenvolupament de programes per al microcontrolador i s’aprendrà a escriure programes estructurats en llenguatge ensamblador per al Motorola HCS12. Es descriuran les principals interfícies d’Entrada/Sortida i es practicaran els conceptes bàsics de programació de port paral·lels, control de temporitzadors i gestió d’interrupcions. Per últim, l’assignatura acabarà amb l’estudi dels elements bàsics necessaris per al disseny d’un sistema encastat i es revisaran els circuits bàsics necessaris per construir un sistema senzill basat en un microcontrolador, tot analitzant la placa Motorola M68HC12A4EVB i altres plaques similars. TEORIA 1. INTRODUCCIÓ
- Conceptes bàsics: microprocessadors i microcontroladors. Arquitectures i encapsulats típics. - Evolució històrica dels microprocessadors: una classificació generacional amb exemples
representatius. 2. ARQUITECTURA DE MICROPROCESSADORS/MICROCONTROLADORS
- Microcontroladors (la família M68HC11/12): organització interna, interfície externa i timings. Mapa de memòria.
3. PROGRAMACIÓ DEL M68HC12
- Repertori d’instruccions: moviment d’informació, aritmètiques, lògiques, salts condicionals i incondicionals, subrutines i miscel·lànies.
- Modus d’adreçament: immediat, directe i estès, indexat, inherent i relatiu. - Llenguatge ensamblador i l’ensamblador ASM12: format, directives, macros, opcions,
errors, . 4. ENTRADA/SORTIDA PARAL·LELA
- Modes d’operació: Single-Chip, Expanded, Register. - Ports paral·lels del M68HC12: registres de dades i registres de direcció. - Programació bàsica de ports. - Electrònica del pins d’E/S.
- Conceptes avançats: sincronització i hardware handshake. 5. TEMPORITZADORS
- Temporitzador bàsic. Comptador free-running. - Funcions d’Output Compare. - Funcions d’Input Capture. - Acumulador de polsos.
6. INTERRUPCIONS
- Principis bàsics de gestió d’interrupcions: el procés d’interrupció, capacitació/descapacitació d’interrupcions, peticions d’interrupció, la seqüència d’interrupcions i el retorn del servei d’interrupcions.
- Taules de vectors i taules indirectes de salt. - Rutines d’inicialització i de gestió. - Fonts d’interrupcions: emmascarables i no emmascarables; internes i externes. - Interrupcions anidades.
7. MÒDULS ADICIONALS I DISSENY DE PLAQUES
- Components de suport a la CPU: Circuits de reset, circuits generadors de rellotge, circuits generadors d’estats d’espera, circuits característics d'interfície a un bus.
- Eines de suport al disseny de sistemes basats en microcontroladors: Plaques d’avaluació, emuladors, simuladors i monitors.
- Depuradors: conceptes bàsics, tècniques hardware i software, conceptes avançats (Background Debug Mode).
- Anàlisi de la placa de desenvolupament M68HC12A4EVB. Dates importants 1ª convocatòria 1ª prova parcial: 22 d’ març del 2009 2ª prova parcial: 7 de juny del 2009 2ª convocatòria: per confirmar PRÀCTIQUES Realització de diversos programes en ensamblador per a la placa HCS12E128. Calendari Nombre total de sessions: 10 Inici de sessions de pràctiques: veure calendari Final de sessions de pràctiques: veure calendari Horaris: Dimarts 15:00-18:00 Dijous 11:00-14:00 Dijous 15:00-18:00
Les pràctiques s’han de realitzar en grups de tres persones. Només en casos excepcionals els professors admetran grups de menys membres. La gestió de grups es farà amb el campus virtual. L’obertura de l’aplicació s’anunciarà a classe. Altres informacions específiques sobre les pràctiques s’aniran incloent en altres documents específics que es publicaran al llarg del curs, BIBLIOGRAFIA Teoria Bàsica - Software and Hardware Engineering. M68HC12. Fredrick M. Cady & James M. Sibigtroth. Oxford University Press, (2000). Complementària - 68HC12 Microcontroller: Theory and Applications, Daniel J. Pack, Steven F. Barret, Prentice-Hall, (2002). Pràctiques - Software and Hardware Engineering. M68HC12. Fredrick M. Cady & James M. Sibigtroth. Oxford University Press, (2000).
La bibliografia es complementa amb documents tècnics i manuals de components usats en el laboratori. També hi ha força recursos d’informació disponibles a Internet. Es posarà una selecció dels més útils a la pàgina corresponent de l’assignatura dins el Campus Virtual. PROFESSORS Teoria: Diego Lugones Problemes: Claudia Rosas Eduardo Cabrera Pràctiques: Claudia Rosas Eduardo Cabrera Andrea Trujillo
AVALUACIÓ 1ª convocatòria La nota final de l'assignatura s'obté sumant les notes corresponents a les pràctiques i a la teoria, ponderades en un percentatge del 70% teoria, i 30% pràctiques (tant la nota de teoria com la de pràctiques han de ser, com a mínim, de 5 per poder fer la suma; en cas contrari, l'assignatura es qualificarà amb un suspès). La nota de teoria s’obté 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 pràctiques serà la mitja aritmètica de totes les pràctiques, però només es pot suspendre una única pràctica que no sigui l’última per poder aprovar les pràctiques. En cas contrari no s’aprovarà la part de pràctiques. L’assistència al laboratori de pràctiques és obligatòria i condició "sine qua non" per aprovar. Les pràctiques també es faran en grups de tres persones. No cal que coincideixin els integrants dels grups de pràctiques i de problemes. Tot i que la realització de les pràctiques es faci en grup, l’avaluació final serà individual i es tindrà en compte la valoració que el professor de pràctiques 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 període inicial del curs seran descartades si l’alumne decideix abandonar l’assignatura i que li sigui avaluada amb un “No Presentat”. És a dir, la qualificació de “No Presentat” s’obtindrà si no es realitza cap de les proves, dels problemes i de les pràctiques avaluables després d’aquesta setmana, amb independència del que s’hagi fet abans. Si passat aquest punt del curs es continuen realitzant proves, pràctiques o problemes, s’avaluarà globalment tota l’assignatura en la 1ª convocatòria tenint en compte totes les notes aconseguides al llarg del curs. Aquelles persones que vulguin realitzar problemes o pràctiques sense que els hi siguin comptabilitzades en la nota final, caldrà que ho consultin amb el professor de teoria. 2ª convocatòria En cas de no haver superat la part de teoria, en la 2ª convocatòria es realitzarà una prova individual escrita. No hi ha examen de pràctiques en la 2ª convocatòria (cal aprovar-les al llarg de les 10 sessions de
5/ 2
2
1≥∑
=
examenscExámenesi
i
Problemas
laboratori que es fan durant el curs). A part de les qualificacions obtingudes amb la realització dels diferents treballs proposats al llarg del curs, els professors podran tenir en compte elements més subjectius com la participació, l’autonomia i la iniciativa personal. D’altra banda, es penalitzaran aquells comportaments deshonestos i poc respectuosos amb els professors, els companys o el material de laboratori. En particular, es considera com a falta molt greu la còpia fraudulenta de treballs. ASPECTES ÈTICS
Dels estudiants matriculats en aquesta assignatura s’espera que segueixin un codi de conducta que estigui guiat pels següents principis, sense perjudici de complir el principis generals establerts per la Universitat Autònoma de Barcelona:
Participació Els estudiants han d’assumir la plena responsabilitat en l’aprenentatge dels continguts d’aquesta assignatura mitjançant la realització de totes les tasques que els hi siguin assignades de la millor manera possible. Això inclou, entre d’altres, l’assistència a classe, la participació en les activitats de classe, la obtenció, lectura i estudi dels materials bibliogràfics usats a l’assignatura, conèixer les qualificacions pròpies a mesura que siguin publicades, i demanar assessorament addicional en cas de necessitat.
Respecte Els estudiants han de respectar el seu entorn d’aprenentatge, les aules i laboratoris i tot el seu equipament, els seus companys, les activitats docents i els seus professors.
Previsió Els estudiants han de gestionar el seu temps i planificar amb anticipació. Els conflictes en la planificació d’activitats s’hauran de discutir amb els professors abans de la seva ocurrència. Les emergències només seran considerades si fan totalment impossible que l’estudiant pugui completar alguna tasca del curs. Les emergències que només suposin una reducció del temps disponible o que afegeixin alguna càrrega de treball addicional no seran considerades com a raons suficients per al no compliment d’algun requeriment de l’assignatura.
Honestedat Tots els materials que realitzin el estudiants han de ser fruit del seu treball personal. No es tolerarà els intents d’obtenció de millors qualificacions basats en mètodes de còpia, de plagi, alteració o falsificació de documents oficials, o que suposin una actuació deshonesta. Els estudiants són encoratjats a discutir i intercanviar idees amb els seus companys sobre els diferents treballs de l’assignatura però no han de copiar el treball d’altri. Permetre o facilitar la còpia del treball propi també serà considerat com un acte punible.
La violació d’aquestes regles implicarà l’aplicació de possibles sancions, l’estudi de les quals els hi serà comunicada als estudiants perquè puguin presentar les al·legacions que creguin oportunes. En cas de ser adoptades, les sancions dependran de la gravetat de la falta comesa i podran ser, sense que estiguin limitades a, alguna de les següents accions:
• assignació d’una qualificació final de Suspès en l’assignatura; • baixar al qualificació final de l’assignatura; • baixar la qualificació de l’activitat en la que es va detectar la falta.
Els professors de l’assignatura subscriuen el codi ètic de l’IEEE (http://www.ieee.org/about/whatis/code.html)
DISSENY DE SISTEMES ELECTRÒNICS BASATS EN MICROPROCESSADORS
Calendario curso 09-10 Teoría: Lunes (11:00-13:00); Aula Q1/1003 Problemas: Miércoles (11:00-12:00) Q1/1003
Semana Teoría Problemas Prácticas 15-02-10 Presentación
22-02-10 Tema 1 Arquitecturas Sesión 1
01-03-10 Tema 2 Programación Sesión 2 Sesión 1
Tutorial
08-03-10 Tema 3
Interfaces (Memoria)
Sesión 3 Sesión 2 Tutorial
15-03-10 Tema 4
Interfaces (Entrada/Salida)
Sesión 4 Sesión 3
Programación básica
22-03-10 *1ª PRUEBA* Sesión 4
Programación puertos de salida
29-03-10 Periodo no lectivo
Periodo no lectivo
Periodo no lectivo
05-04-10 Periodo no lectivo
Periodo no lectivo
Periodo no lectivo
12-04-10 Tema 5 Temporizadores Sesión 5
Sesión 5 Programación
puertos de entrada
19-04-10 Tema 5 Temporizadores Sesión 6 Sesión 6
Temporizadores
26-04-10 Tema 6 Interrupciones Sesión 7
Sesión 7 puertos +
Temporizadores
03-05-10 Tema 6 Interrupciones Sesión 8
Sesión 8 Módulos
adicionales
10-05-10 Tema 7
(Módulos integrados)
Sesión 9 Sesión 9 Módulos
adicionales
17-05-10 Tema 7
(Módulos integrados)
Sesión 10 Sesión de recuperación
24-05-10 Festivo Repaso
31-05-10 Semana previa al periodo de
exámenes
Semana previa al periodo de exámenes
Semana previa al periodo de
exámenes
07-06-10 * 2ª PRUEBA*
Disseny de Sistemes Electrònics Basat en Microprocessadors
¡Microprocesadores en todos sitios!Aplicaciones:Diagnosis e investigación médica Prótesis e implantesControl de vehículos, de producción …EntretenimientoPredicción del tiempo, terremotos …Análisis aerodinámicoAnálisis molecularFísica nuclearOceanografíaExploración petrolífera Militar / defensaSocio-economíaInteligencia Artificial
“Máquina digital electrónica programablepara el tratamiento automático de la información,
capaz de recibirla, operar sobre ella mediante procesos determinados y suministrar los resultados
de tales operaciones.” William Stallings
¿Qué es un Procesador?
ProcesadorEntrada Salida
Programa
Procesador = Intérprete de Instrucciones
Procesador: Una máquina de estados finita.interpreta bits (instrucciones) y así controla el uso de sus elementos (memoria, unidades de cómputo, ...)
Leer Instrucción de Memoria
Decodificar Instrucción
Ejecutar Instrucción
Leero Escribir en
Memoria
Verificar Interrupción
(1)(3)
(4)
(2)
(5)
Cómputo de Sobremesa:Precio / Prestaciones (cómputo y gráficos)
Compatibilidad: IA-32+Windows / GNU: Linux + gcc + RISC
Servidores (WEB, Almacenamiento, Cómputo, Bases de datos):Rendimiento (“Throughput”: transacciones por minuto)
Disponibilidad (“downtime” al año),Escalabilidad
Sistemas Empotrados:Rendimiento deseado al mínimo precio y consumo eléctrico
Respuestas en tiempo Real Aplicaciones cuidadosamente sintonizadas
Mercado de los Procesadores
Mercado de los Procesadores (2)
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 today’s
notebooks, PCs, and servers” Josh Fisher
Sistemas Empotrados°Sistemas heterogéneos:
° múltiples procesadores de diversos tipos ° sistemas de memoria diseñado a “medida” de la aplicación
°Aplicaciones (DSP, multimedia, ...) fáciles de paralelizar° No es necesario preservar compatibilidad S/W° Diseños sensibles a coste y consumo
Prestaciones• Tiempo
– Tiempo de Respuesta (orientado al usuario)– Productividad (Throughput) (orientado al sistema)
• Capacidad– Datos y Programas
• Coste– Fabricación y Diseño
• Limitaciones– Consumo de Energía y Calor generado– Tamaño físico, restricciones eléctricas– Fiabilidad!!
Muy importante en ciertas aplicaciones:• Automoción, aviones, plantas nucleares …• Se mide en fallos por años• Hay que sacrificar otras cosas: velocidad, coste, …
No olvidar la fiabilidad!
Microprocesador / circuito analógico
ADC DACProcesamiento Digital
1) Menor COSTE: material + fabricación + consumo + DISEÑO· diseñar programa en lugar de hardware· cargar programa en lugar de construir hardware
2) Estabilidad, Repetitividad, RobustezMás Insensibilidad a cambios de temperatura, envejecimiento …Siempre mismo Resultado: Sin errores de construcción (tolerancias)
3) Nuevas posibilidades: compresión, encriptación, …
Procesadores
DSP (digital signal
processor)Microcontrolador
µC:
Microprocesador:GPP
Procesador:
Una Clasificación• Procesador: Término genérico
• Microprocesador (µP): Procesador dentro de un chip de silicio, de propósito general. Ejemplos: familia i80x86, Motorola, MIPS, ALPHA, SPARC ...
• Microcontrolador (µC):Diseñado para sistemas empotrados, integra más elementos.Típicamente: CPU + memoria + periféricos. Ejemplos : 8051, Intel 80196, familia Motorola 68HCxx.
• Digital signal processor (DSP):Optimizado para aplicaciones de procesamiento de señal discreta en el tiempo. Conjunto de instrucciones complejas. Ejemplos: TI's 320Cxx, series de Motorola 5600x, dsPIC
Aproximaciones de Implementación
• Algoritmo más o menos cerca de los transistores• Coste de Diseño frente prestaciones y coste final
Procesador Propósito
General
Procesador Digital de
SeñalProcesador
con Repertorio Específico Field
Programmable Devices
ApplicationSpecific IC
(Circ.Integr.)Physically
Optimized IC(Circ.Integr.)
Log RENDIMIENTO
Log F
LEXI
BILID
AD
Log P
OTEN
CIA
DISI
PADA
Software
Hardware
Alternativas: más o menos a medida Microprocesadores computacionales:
• de propósito general, y muy eficientes para aplicaciones de sobremesa• soporte específico para aplicaciones multimedia y buen rendimiento de punto-flotante
Microprocesadores empotrados:• versiones reducidas de los anteriores• muchas variedades en función de rendimiento, coste y consumo • de propósito general: los puede hacer poco eficientes para ciertas aplicaciones (lentos para señal)
Custom H/W (ASIC: application specific integrated circuit)• alto rendimiento y eficiencia (área de chip y energía)• en grandes cantidades: eficiencia menor coste• enorme esfuerzo de diseño: requiere “buenas” herramientas (lenguaje, compilador, depurador ...)
Alternativas intermedias Programmable Logic Device (PLD):
– Elementos• elementos combinacionales (cómputo) y estructura de
interconexión entre ellos• Memoria de datos y de control (de la interconexión)
– PLD: Recursos Dinámicos + Algoritmo Dinámico• H/W = Recursos Fijos + Algoritmo fijo• Procesador = Recursos Fijos + Algoritmo Dinámico
– Tecnología en evolución• Mejor eficiencia en el uso del área del chip y en el consumo
energético. Menor tiempo de configuración.• Mejores herramientas de diseño
Ejemplo de PLD
CCB CCB CCB
CCB CCB CCB
CCB CCB CCB
FPGA (Field-Programmable Gate Arrays)Son capaces de realizar cualquier implementación en lógica digitalEl chip contiene bloques básicos capaces de realizar una función sencilla, pero programable para cada bloque individualLa conexión entre los bloques tiene un esquema fijo (malla) pero también es programable qué bloques se conectan y cómo.
El paralelismo del H/W es
enorme: pero la complejidad
para utilizarlo recae en el
programador y en el S/W
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 memoryprovide better system balance.+ Lower frequencies mean lower power andbetter reliability.- BUT application specific design meanssmaller production runs and more concernwith 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 número 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 tamaño o número de bancos de memoria
¡Permite aumentar GHz y rendimiento!
¡Como el PIB de algunos países!
• Gran Problema: Calor!!
• Cada vez más caro incrementar GHz (frecuencia de reloj) (a pesar de economía de producción en masa)
• Solución:menos GHZ y más PARALELISMO
Una tarea nada fácil!
¡Problemas a la vista!
€
NOW: Network of Workstations
La potencia agregada de muchos procesadores baratos es superior a la del mayor SUPERCOMPUTADOR, y con un
precio total mucho menor
Blue Gene (IBM) - MarenostrumSUPERCOMPUTADOR=Miles de procesadores conectados de forma
jerárquica
http://www.bsc.es/
Evolución del Computador
La nueva era de la Computación“If you round off the fractions, embedded systems consume 100% ofthe worldwide production of microprocessors.” Jim Turley
“a new generation of smart, connected (wired or wireless), powerful, and cheap devices is upon us.” Josh Fisher
DSEBM
Teoría – Tema 2Arquitectura de Microprocesadores
2008-2009
2
HCS12 es el “core” utilizado
Diversas familias de microcontroladores utilizan el core HCS12
Estudiaremos el MC9S12E128CPV
Como se identifican los distintos modelos de cada familia con el core HCS12 ???
Arquitectura del HCS12
3
Arquitectura del HCS12
4
MC9S12E128CPV
Arquitectura del HCS12
5
Arquitectura del HCS12
6
Arquitectura del HCS12
7
Características:Core 16-bits HCS12Entradas de interrupción “wake-up”Memoria internaConversor A/DConversor D/ATimers (TIM)PWMInterfaces Serie (SCI y SPI)Soporte para depuración
8
Arquitectura del HCS12. Mapa de memoria
9
Arquitectura del HCS12• port A, B, E, and K related to the corelogic and multiplexed bus interface• port T connected to the timer modules• port U connected to PWM and TIM2 modules• port S associated with 2 SCI and 1 SPI modules• port M associated with 1 SCI2, 1 IIC, and 2 DAC modules• port P and Q connected to the PMF module• port AD connected to ADC module, which also can be used as an externalinterrupt source
10
Arquitectura del HCS12
Registros:
11
WEBS INTERESANTES:http://www.motorola.comhttp://www.freescale.com
Lectura recomendada:AN1057: Selecting the Right Microcontroller Unit,
Motorola Semiconductor Application Note, Phoenix, AZ, 1990
DSEBM
Teoría – Tema 3Programación del HCS12
2008-2009
2
Modelo de programación
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 más significativo)
Cuando se modifica D, también se modifican A y B
A = ABB = 32
D = AB32
3
Modelo de programación
Registros:Registros índice X e Y:
Son utilizados principalmente para indexar
direccionamientos
Algunas instrucciones aritméticas utilizan los
registros índices
4
Modelo de programación
Registros: Registro Puntero de Pila SP:
La pila es usada para almacenar el “contexto” del sistema durante el llamado de una subrutina o de una interrupción y también puede ser utilizada para el almacenamiento de datos temporalmente
La pila puede ser localizada en cualquier lugar del espacio de direcciones y puede crecer hasta cualquier tamaño hasta el total de memoria disponible
El valor de SP se decrementa cuando se inserta un nuevo elemento a la pila y se incrementa cuando se lo saca
5
Modelo de programación
Registros:
Registro Contador de Programa PC:
• Registro de 16 bits que contiene la dirección de la próxima instrucción a ejecutar.
• Se incrementa automáticamente cada vez que una instrucción es fetched
6
Modelo de programación
Registros:
Registro de Condición
7
Tipos de Datos
•Bit.
•Enteros con signo de 5-bit(offset en direccionamientoindexado).
•Enteros con y sin signo de 8 bits
•Enteros con signo de 9-bit (offset en direccionamientoindexado).
•Enteros con y sin signo de 16 bits.
•Dirección efectiva de 16 bits.
•Enteros con y sin signo de 32 bits.
8
Modos de Direccionamiento
Inmediato
Directo
Extendido
Indexado
Indexado-indirecto
Inherente
Relativo
Hay 7 modos de direccionamiento:
9
Notación utilizada
Nombre de registro: indica un registro y su contenido
: indica una operación de transferencia de datosA B, el contenido de A es transferido a B
(…) : contenido de una posición de memoria($1234) B, el contenido de la posición de memoria $1234 es transferido a B
((…)) : modo de direccionamiento indirecto. El interior de los paréntesis especifica una dirección de memoria cuyo contenido es la dirección del dato
A (($1234)), el contenido de A es transferido a una dirección de memoria cuya dirección está en $1234:1235
10
Modos de DireccionamientoDireccionamiento Inmediato
Usado cuando el operando es una constante conocida al momento de escribir el programa
Observar el ‘#’ que indica que es direccionamiento inmediato
Ldaa #!64 ; Decimal !64 -> A
; En el CodeWarrior no hay que introducir el “!”
Ldaa #$64 ; Hexadecimal 64 ->A
Ldx #$1234 ; Hexadecimal 1234 -> X
Lda #%10101010 ; Binario -> A
11
Modos de DireccionamientoDireccionamiento Directo y Extendido:
El operando contiene la dirección de memoria donde se encuentra el dato.En el tipo directo la dirección es de 8 bits y en el extendido de 16.
12
Modos de DireccionamientoDireccionamiento Indexado:El formato operación que usa este direccionamiento es:
Op Offset, Registro_IndiceDonde 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 direcciónefectiva del dato al hacer : Registro_Indice + Offset.
13
Modos de DireccionamientoDireccionamiento Indexado (cont.):
14
Modos de Direccionamiento
Direccionamiento indexado
Direccionamiento Indexado (cont.):
15
Modos de DireccionamientoDireccionamiento Indexado (cont.):
Direccionamiento indexado con post/pre incremento/decremento
Direccionamiento indexado
16
Modos de DireccionamientoDireccionamiento Indexado (cont.):
Direccionamiento indexado con acumulador
17
Modos de DireccionamientoDireccionamiento Indexado (cont.):
Direccionamiento indexado-indirecto
18
Modos de DireccionamientoDireccionamiento Indexado (cont.):
Direccionamiento indexado- Indirecto
Direccionamiento indexado- Indirecto
19
Modos de DireccionamientoDireccionamiento Inherente:
Todos los datos para la ejecución de la instrucciónestán dentro de la CPU
20
Modos de DireccionamientoDireccionamiento Relativo:
•Saltos pequeños (Short Branch): Usan direcciones de salto de 8 bits. Direcciones accesibles:
PC + 127 o PC - 127 bytes
•Saltos largos (Long Branch): Usan direcciones de salto de 16 bits. Direcciones accesibles:
PC + 32568 o PC - 32767 bytes
Hay instrucciones de bucle como DBEQ,IBEQ o TBEQ pueden usardirecciones de 9 bits en cuyo caso las direcciones accesibles son: PC + 256 o PC - 255 bytes
Direccionamiento usado en las instrucciones de salto.Podemos tener dos tipos de saltos:
21
Modos de DireccionamientoDireccionamiento Relativo (cont.):
22
Modos de DireccionamientoResumen:
23
Programas en AssemblerCada línea de código tiene cuatro campos:
;Inicialización reg A<tab>#64<tab>ldaa<tab>Ejemplo
Commentfield
Operandfield
Opcodefield
Label field
Label field”:• Comienza en la primera columna de la línea de código• Un “label” es un “simbolo” seguido (opcionalmente) por dos puntos “:”• Los “labels” son opcionales• Provee una referencia a una memoria. Ejemplo: saltos• Puede tener entre 1 a 16 caracteres.• Caracteres válidos:
• Letras mayúsculas y minúsculas (a-z y A-Z)• Dígitos 0-9• $, _ y –
• Pueden comenzar con un carácter alfabético o un (_)• Pueden comenzar en la primera columna de la línea• No hay diferencia entre mayúsculas y minúsculas• Pueden estar en una línea el solo
24
Programas en AssemblerEjemplos:
25
Programas en Assembler
;Inicialización reg A<tab>#64<tab>ldaa<tab>Ejemplo
Commentfield
Operandfield
Opcodefield
Label field
Opcode u Operation Field”:
• Comienza después del primer “whitespace” (<tab> o espacio) • Contiene pseudooperation, assembler directive o macro name
26
Programas en Assembler
;Inicialización reg A<tab>#64<tab>ldaa<tab>Ejemplo
Commentfield
Operandfield
Opcodefield
Label field
Operand Field”• Tipos de Operandos:
•Símbolos: representan enteros de 8 o 16 bits. Ej. Si CRLF es definido como$0D0A cuando el programa es “ensamblado” CRLF es reemplazadopor $0D0A
• Constantes: valores numéricos que no cambian durante el programa. Pueden ser Decimales, Hexadecimales, Binarios o ASCII
H$HexadecimalT!DecimalQ%Binario
SufijoPrefijoBase
27
Programas en Assembler
H$Hexadecimal
T!Decimal
Q%Binario
SufijoPrefijoBase
28
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 bestway to load the ASCII code into the A register in a program.
Solutions:ASCII - "C"Hexadecimal - $43Decimal - !67Binary - %01000011
The best way to load the A register with the ASCII code for the character C isldaa #"C"
Solutions:
29
Programas en Assembler
;Inicialización regA
<tab>#64<tab>ldaa<tab>Ejemplo
Commentfield
Operandfield
Opcodefield
Label field
Comment Field”:
• Los comentarios comienzan con (;)• Cualquier línea que comience con (;) o (*) se considera como
una línea de comentario• Útil para simplificar el entendimiento del código
30
Programas en AssemblerPseudooperation
31
Programas en AssemblerPseudooperation
EQU
DS
ORG
32
Programas en AssemblerPseudooperation
DC
dc.b
dc.b
dc.bdc.bdc.b
dc.bdc.w
33
Repertorio de InstruccionesGrupos de instrucciones:
• Load and Store• Transfer and Exchange• Move• Addition and Subtraction• Binary-Coded Decimal• Decrement and Increment• Compared and Test• Boolean Logic• Clear, Complement and Negate• Multiplication and Division• Bit Test and Manipulation• Shift and Rotate
• 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
34
Repertorio de InstruccionesLoad and Store
35
Repertorio de InstruccionesTransfer and Exchange
36
Repertorio de InstruccionesMove
Addition and Subtraction
37
Repertorio de InstruccionesBinary-Coded Decimal
Decrement and Increment
38
Repertorio de InstruccionesCompared and Test
Boolean Logic
39
Repertorio de InstruccionesClear, Complement and Negate
Multiplication and Division
40
Repertorio de InstruccionesBit Test and Manipulation
Shift and Rotate
41
Repertorio de InstruccionesBranch
42
Repertorio de InstruccionesLoop Primitive
Jump and Subroutine
43
Repertorio de InstruccionesInterrupt
44
Repertorio de InstruccionesIndex Manipulation
45
Repertorio de InstruccionesStacking
46
Repertorio de InstruccionesPointer and Index Calculation
Condition Code
47
Repertorio de InstruccionesStop and Wait
•Background Mode and Null Operations
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
58
LECTURA : LDAx (x es A o B), LDz (z es D,X,Y), funcionalidad: (M)->RegESCRITURA: 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
DECx (x es A o B), DEz (z es X,Y), funcionalidad: Reg-1->RegSuma: ABA: funcionalidad:(A+B)->A , ABX: funcionalidad:(B+X)->X
ADDx (x es A o B) funcionalidad: Reg+(M)->RegADDD: Reg. D + (M:M+1)->Reg. D
Resta: SBA: funcionalidad:(A-B)->A
SUBx (x es A o B) funcionalidad: Reg-(M)->Reg
SUBD: Reg. D - (M:M+1)->Reg. DMultiplicación y división: MUL: A*B->D, EMUL: D*Y->Y:D
IDIV: D/X->X,D, EDIVS: Y:D/X->Y,D
Repertorio de Instrucciones
59
LOGICAS: ANDx (x es A o B) Reg and (M) ->Reg, ORAx (x es A o B) Reg or (M) ->RegEORx(x es A o B) Reg xor (M) ->Reg
SALTO CONDICIONAL: BEQ: Salta si igual, BNE: Salta si no es igualBGT(con signo)BHI (sin signo) : Salta si es mayorBLT(con signo)BLO (sin signo) : Salta si es menorBGE(con signo)BHS (sin signo) : Salta si es mayor o igualBLE(con signo)BLS (sin signo) : Salta si es menor o igual
COMPROBACIÓN DE DATOS: CBA: A-B -> Reg de flags de estadoCMPx (x es A o B) CPz (z es D,X,Y) funcionalidad: Reg- (M) -> Reg de flags de estadoBITx (x es A o B) Test de los bits del Reg (and sin modificar el registro destino).
SALTO: JMP: Salto a una dirección, BRA: Salto cercano a una dirección.
Repertorio de Instrucciones
60
Repertorio de Instrucciones
CCR – Condition Code Register
N : refleja el estado del bit más significativo (MSB) del resultado.Es muy utilizado en operaciones aritméticas en complemento a 2 donde el
MSB es 1 si el número es negativo y 0 si es positivo.
Z : este flag es 1 cuando todos los bits de un resultado son 0.
V : se pone en 1 cuando ocurre un desbordamiento en complemento a 2 comocomo resultado de una operación
61
ProgramaciónIF – THEN – ELSE (Decisión)
Get TemperaureIF Temperature > Allowed MaximumTHEN
Turn the water valve offELSE
Turn the water valve onENDIF Temperature > Allowed Maximum
62
Programación; IF-THEN-ELSE example; Equates define constants need by the codeAD_PORT: EQU $20 ; A/D Data portMAX_ALLOWED: EQU !128 ; Maximum TempVALVE_OFF: EQU 0 ; Bits for valve offVALVE_ON: EQU 1 ; Bits for valve onVALVE_PORT: EQU $24 ; Port H; Get Temperature
ldaa AD_PORT; IF Temperature > Allowed Maximum
cmpa #MAX_ALLOWEDbls ELSE_PART;
; THEN Turn the water valve offldaa VALVE_OFFstaa VALVE_PORTbra END_IF
; ELSE Turn the water valve onELSE_PART:
ldaa VALVE_ONstaa VALVE_PORT
END_IF:; END IF Temperature > Allowed Maximum
Get TemperaureIF Temperature > Allowed MaximumTHEN
Turn the water valve offELSE
Turn the water valve onENDIF Temperature > Allowed Maximum
IF – THEN – ELSE(Decisión)
63
ProgramaciónWHILE – DO (Repetición)
Get the temperaure from the A/DWHILE the temperature > maximum allowed
DOFlash light 0.5 sec on, 0.5 sec offGet the temperature from the A/D
END_DOEND_WHILE
64
ProgramaciónWHILE – DO(Repetición)
Get the temperaure from the A/DWHILE the temperature > maximum allowed
DOFlash light 0.5 sec on, 0.5 sec offGet the temperature from the A/D
END_DOEND_WHILE
; WHILE - DO ExampleAD_PORT: EQU $70 ; A/D Data portMAX_ALLOWED: EQU !128 ; Maximum TempLIGHT_ON: EQU 1LIGHT_OFF: EQU 0LIGHT_PORT: EQU $24 ; Port H; - - -; Get the temperature from the A/D
ldaa AD_PORT; WHILE the temperature > maximum allowedWHILE_START:
cmpa MAX_ALLOWEDbls END_WHILE
; DO ; Flash light 0.5 sec on, 0.5 sec off
ldaa LIGHT_ONstaa LIGHT_PORT ; Turn the light jsr delay ; 0.5 sec delay ldaa LIGHT_OFFstaa LIGHT_PORT ; Turn the light offjsr delay
; End flashing the light; Get the temperature from the A/D
ldaa AD_PORT; END_DO
bra WHILE_STARTEND_WHILE:; END_WHILE the temperature > maximum allowed
; Dummy subroutinedelay: rts
65
ProgramaciónDO - WHILE (Repetición)
DOGet data from the switchesOutput the value to the LEDs
END_DOWHILE Any switch is set
66
ProgramaciónDO - WHILE(Repetición)
; DO-WHILE example; Equates needed for this exampleSW_PORT: EQU $28 ; The switches are on Port JLEDS: EQU $24 ; The LEDs are on Port H; - - -; DODO_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_PORTbne DO_BEGIN
; END_WHILE
DOGet data from the switchesOutput the value tothe LEDs
END_DOWHILE Any switch is set
67
Saltos Subrutinas
INICIALIZAR EL SPY RETORNAR DE
LA SUBRUTINA CON RTS!!!!
DSEBM
Teoría – Tema 4Entrada/Salida
2008-2009
2
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 , asíncorono.
• Puerto M. CAN. Controller Area Netork. Red entre microcontroladores. SPI. Serial PeripheralInterface. Serie, síncrono
•Puertos A y B. Puertos paralelos de propósito general.
• Puerto E. Puerto paralelo. Admite usos especiales en funcion del modo de operaciónd el microcontrolador.
•Puerto AD. Conversor 10bits AD
• Puerto J. Generación de interrupciones o estándar E/S
La mayoría de canales pueden ser de propósito general
3
Puertos
4
Puertos
Modelo E/STotalmente integradoE/S paralelas y serieE/S analógicasFunciones de “timer”Algunos “pins” tienen funciones de doble propósitoTODAS las operaciones de E/S y el CONTROL se realiza mediante registros
5
Puertos
Todos los puertos I/O tienen asociados dos registros :
Dirección (DDRx)Datos (PORTx o PTx)
DirecciónBit en “H” o 1 salidaBit en “L” o 0 entrada
6
PuertosE/S Software
E/S Software
Inicialización
Transmisión de datos (E/S)
Sincronización
Configuración de los puertos. Determinar las líneas que serán de entrada o salida.
Lectura o escritura de los datos
Determinar si la transmisión puede considerarse correcta.
7
PuertosSincronización
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.
¿Cómo sincronizar?
Handshaking
Real-Time
En general los procesadores son mucho más rápidos que los dispositivos de Entrada/Salida
Polling
8
PuertosSincronización Real-TimeUtiliza un “delay” por software para ajustar los requerimientos de tiempo del software y el hardware.
Ejemplo: Envío de caracteres por un puerto a una velocidad de hasta 10 caracteres/segundo.Considerar insignificante el tiempo usado en obtener y enviar cada carácter. Un “delay” de 100 mSeg es requerido entre cada operación de salida.
Dos subrutinas
Obtención del carácter y envío del mismo
“delay” de 100 mSeg
PROBLEMA!!Dependencia con la frecuencia del Clock de la CPUProblemas de exactitud en el “delay”
Solución Uso del sistema de Timing (próximo tema)
9
PuertosPolling
Utiliza bits de E/S como bits de estado para los dispositivos de E/S
Ejemplo 1:
Envío de informaciónd de HCS12 a un dispositivo de E/S
PJ0 bit de estado
PJ0 lo modifica el dispositivo cuando está listo para recibir más información. Para esto es necesario un hardware adicional en el dispositivo externo.
El programa verifica constantemente el bit de estado PJ0 y envía datos cuanto el disp. está listo por las líneas PH[3:0].
10
PuertosPolling
Ejemplo 2:
Envío 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.
11
PuertosPORTJ: EQU $28 ; Port J addressPORTH: EQU $24 ; Port H addressDDRH: EQU $25 ; Data direction Port HBIT0: EQU %00000001 BIT1: EQU %00000010O_BITS: EQU %00001111
; - - -data1: DS 1 ; variable de salidadata2: DS 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
; - - -
; Output data to Port H ; Wait until the status bit, Port J, Bit-0 is 1SPIN1: brclr PORTJ,BIT0,SPIN1; Now can output the data
ldaa data1staa PORTH
; - - -
; Input data from Port H; Wait until the status bit, Port J, Bit-1 is 1SPIN2: brclr PORTJ,BIT1,SPIN2; Now can input the data
ldaa PORTHstaa data2
; - - -
12
PuertosPolling
Ejemplo 2:
Envío 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.
¿Cómo sabe el dispositivo externo que la CPU ya ha tomado su dato?
El bit New_Data_Ready aporta información desde el dispositivo al procesador………
No hay información en la dirección CPU Dispositivopara determinar que es seguro enviar un nuevo dato.Soluciones:
•Generar interrupción con PJ1•Handshaking
13
PuertosHandshaking
Hay microcontroladores que tienen líneas dedicadas al Handshaking (HC11), el HCS12 no.
14
Puertos
PORTJ: EQU $28 ; Port J addressDDRJ: EQU $29 ; Data direction Port JPORTH: EQU $24 ; Port H addressDDRH: EQU $25 ; Data direction Port HBIT0: EQU %00000001 BIT1: EQU %00000010BIT2: EQU %00000100BIT3: EQU %00001000O_BITS: EQU %00001111; - - -; Initialization
bset DDRH,O_BITS ; Port H outputbset DDRJ,BIT1|BIT3 ; Port J-1,3 outputbclr PORTJ,BIT1|BIT3 ; Reset NEW_DATA_READYbclr PORTH,BIT3 ; READY_FOR_NEW_DATA
Inicialización
15
Puertos
BIT0: EQU %00000001 BIT1: EQU %00000010BIT2: EQU %00000100BIT3: EQU %00001000O_BITS: EQU %00001111; - - -; Initialization
bset DDRH,O_BITS ; Port H output
bset DDRJ,BIT1|BIT3; Port J-1,3 output
bclr PORTJ,BIT1|BIT3; Reset NEW_DATA_READYbclr PORTJ,BIT3 ; READY_FOR_NEW_DATA
; Handshaking output data to Port H ; Wait until the status bit, Port J, Bit-0 is 1
SPIN1: brclr PORTJ,BIT0,SPIN1
; Now can output the dataldaa data1staa PORTH
; and can strobe the handshaking bitbset PORTJ,BIT1bclr PORTJ,BIT1
; - - -
; Handshaking input data from Port H; Set READY_FOR_NEW_DATA on Port J, Bit-3
bset PORTJ,BIT3; Wait until the status bit, Port J, Bit-2 is 1
SPIN2: brclr PORTJ,BIT2,SPIN2
; Now can input the dataldaa PORTHstaa data2
; and reset the READY_FOR_NEW_DATAbclr PORTJ,BIT3
; - - -data1: DS 1data2: DS 1
16
PuertosTransferencia de Datos Asíncrona (ejemplo: entrada)
¿Puedo?
Sí, puedes
GraciasDe nada
17
Puertos
PORTT $0240
DDPRT $0242
Puerto T conectado a 8 LEDs
Puerto T
18
Puertos
movb variable1, PORTTo
staa PORTT
¿Cómo escribir un valor en el puerto?
19
Puertos; export symbols
XDEF Entry ; export 'Entry' symbolABSENTRY Entry ; for absolute assembly: mark this as
application entry point
;LEDSPORTT EQU $0240 DDPRT EQU $0242
CODE EQU $4000 DATA EQU $0400STACK EQU $1FFF
; variable/data sectionORG DATA
temp_byte ds.b 5var_A: dc.b $AA ; 1010 1010
; code sectionORG CODE
Entry:lds #STACK ;inicializa la pila SP
bset DDPRT,#$FF;define el puerto T (leds) como puerto de salida
movb var_A,PORTT
bucle:nop ; no operationbra bucle
Configuración y escritura en el puesto T
20
Puertos
; export symbolsXDEF EntryABSENTRY Entry
;LEDSPORTT EQU $0240 DDPRT EQU $0242
CODE EQU $4000 DATA EQU $0400STACK EQU $1FFF
; variable/data sectionORG DATA
temp_byte ds.b 5var_A: dc.b $AA
; code sectionORG CODE
Entry:lds #STACKbset DDPRT,#$FF
bucle:movb var_A,PORTTjsr retardo ldaa #$00staa PORTTjsr retardobra bucle
; subrutina Retardoretardo:
pshxpshbldab #$FF
ciclo: ldx #$FFFciclo_1:nop
dbne x,ciclo_1 dbne b,ciclopulbpulx
rts
Ejemplo de escritura en el puerto T
21
(I)
(II)
(III)
(IV)
DSEBM
Teoría – Tema 5Temporizadores I
2008-2009
2
Manejo de tiempos
Buclesfor (i=0; i<tiempo; i++)
{NOP
}Dificultad para el control exacto del tiempo
3
Manejo de tiempos
ContadorClock
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
F F F F
0000
FFFF
16 Bits
Por cada ciclo de reloj se incrementa en 1 el contador
4
Manejo de tiempos
ContadorClock
0000000000000000
0 0 0 0
1111111111111111
F F F F
$0000
$FFFF
Clock = A ciclos/segundoIncrementar el contador hasta FFFF tardará:
t = FFFF/A [Seg]
0000000000000000
1111111111111111
0000000000000001
0000000000000000
0000000000000001
1
Reg. Estado TimerTFTLG2Time FLaG2
TOFTime Overflow Flag
Ej: Clock = 8 Mhz t = (2^16 Ciclos)/8 Mhz = 65536 / 8 106 Sg= 8,19 mSeg
5
Manejo de tiempos
Prescaler: incrementa el contador cada n ciclosDonde n = 2,4,8,16,32,64,128
0000000000000000
1111111111111111
0000000000000001Ej: Prescaler = 32 (n)
t = (2^16 Ciclos)/8 Mhz/32 = 262 mSeg
6
Manejo de tiempos
Para manejar tiempos más exactos
comparar el contador con un registro
0000000000000000
1111111111100000
0000000000000001
F F E 0
F F E 0Contador
CnF Reg. Estado Timer
TFLG1
Registro decomparación
Ej: Clock = 8 MHz 1/8 MHz = 125ns
7
Manejo de tiempos
TOF (Time Overflow Flag ) y OC (Ouput Compare) son detectados por polling pero puede configurarse el sistema para que
generen interrupción
8
TemporizadorSistema de tiempos del HCS12
Principales funciones:Timer Overflow: Input Capture:Output Compare:Pulse Accumulator:
9
TemporizadorInput Capture:Permite la medición de características de una señal de entrada. El sistema de Input Capturepuede ser programado para medir la longitud de un pulso de entrada o usado para computar las características de una señal periódica ( “duty cycle” y período)
TrailingedgeRising
edge
Longituddel pulso
On time
Período
Duty cycle = On Time x 100Período
10
Temporizador
Output Compare:Permite un control de tiempos más preciso que el TimerOverflow. El control lo realiza mediante la comparación del contador con el contenido de un registro programable. Se puede usar para la generación de formas de ondas de salida.
Pulse Accumulator:Permite contar contabilizar pulsos externos.
11
Temporizador
Componentes del TIM (detalle)
1. 16-bit free running counterfree running counterand its associated time scaling hardware
2. Eight input capture/output input capture/output comparecompare channels. TIM0 four plus TIM1 another four.
3. The pulse accumulatorpulse accumulatorHardware
Habilita el timer
12
$0046
TemporizadorFree Running CounterFree Running Counter
TCNT(hi):TCNT(lo)
Free running counter
TCNT
TOFTOI
TCRE
Channel 7Output Compare
4:1MUX
prescalerP Clock
PR[2:1:0]
PACLKPACLK/256
PACLK/65536
CLK[1:0]
Habilita el timer
13
TemporizadorFree Running CounterFree Running Counter
TCNT(hi):TCNT(lo)
Free running counter
TCNT
TOFTOI
TCRE
Channel 7Output Compare
4:1MUX
prescalerP Clock
PR[2:1:0]
PACLKPACLK/256
PACLK/65536
CLK[1:0]
14
TemporizadorFree Running CounterFree Running Counter
TCNT(hi):TCNT(lo)
Free running counter
TCNT
TOFTOI
TCRE
Channel 7Output Compare
4:1MUX
prescalerP Clock
PR[2:1:0]
PACLKPACLK/256
PACLK/65536
CLK[1:0]
$004D
15
TemporizadorFree Running CounterFree Running Counter
TCNT(hi):TCNT(lo)
Free running counter
TCNT
TOFTOI
TCRE
Channel 7Output Compare
4:1MUX
prescalerP Clock
PR[2:1:0]
PACLKPACLK/256
PACLK/65536
CLK[1:0]
Time Overflow Flag
16
TemporizadorEjemplo de uso del Timer OverFlow Pseudocódigo; export symbols
XDEF Entry ABSENTRY Entry
ROMStart EQU $00004000RAMStart: equ $00000400
DDRT: equ $00000242PTT: equ $00000240
mTIM0_TSCR2_PR0: equ %00000001mTIM0_TSCR2_PR1: equ %00000010mTIM0_TSCR2_PR2: equ %00000100
TIM0_TSCR1: equ $00000046TIM0_TSCR2: equ $0000004DTIM0_TFLG2: equ $0000004F
mTIM0_TFLG2_TOF: equ %10000000mTIM1_TSCR1_TEN: equ %10000000
; variable/data sectionORG RAMStart
; Insert here your data definition.Datos dc.b $1,$2,$4,$8,$10,$20,$40,$80
; code sectionORG ROMStart
Entry:;Inicialización de los 8 canales del
puerto T como salidabset DDRT,#$FF;Inicialización del TimerOverFlow;Configurarmos el prescale a 128bset TIM0_TSCR2,#(mTIM0_TSCR2_PR2 |
mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0);Nos aseguramos que el bit TOF esté a 0bset TIM0_TFLG2,#mTIM0_TFLG2_TOF;Activamos el contadorbset TIM0_TSCR1,#mTIM1_TSCR1_TEN;Fin inicialización del TimerOverFlow
ldab #0ldx #Datos; Hasta que el bit TOF del registro TFLG2 no
;sea 1 nos quedamos en la siguiente instrucción ;indefinidamenteBucle_1: brclr TIM0_TFLG2,#mTIM0_TFLG2_TOF, Bucle_1
; Una vez que el TOF se pone a 1 ( ha habido ;desbordamiento lo ponemos a 0 para que nos podamos dar ;cuenta de cuando se vuelva a desbordar el contador
bset TIM0_TFLG2,#mTIM0_TFLG2_TOF; a partir de aquí ya realizamos las acciones que se requieran
movb b,x,PTTincbcmpb #8bne Bucle_1ldab #0;Ya hemos realizado las acciones y volvemos a
esperar que se desborde el contadorbra Bucle_1
17
Temporizador
‘TSCR2’
‘TSCR2’
‘TIE’
TO 7 MORE TIMER
CHANNELS
‘TCTL1’
•TCNT es incrementado en función del prescaler PR2:PR1:PR0
•TCn (Timer Input Capture/Output compare register) es cargado por software
•TCn comparado con TCNT y si son iguales CnF (Channel Flag) es puesto es 1
•CnF (Registro TFLG1)es aplicada junto a FOCn (timer compare Force bit-n) causa el mismo efecto que una comparación.
•En OMn y OLn controlan las acciones del puerto T cuando se produjo un output compare. Registro TCTL1
•El registro TIOS determina si el canal (Puerto T) es utilizado como Output Compare (1) o como Input Capture o puerto de uso general (0)
•El CnF puede ser utilizado por polling o interrupción. Registro TFLG1
Output CompareOutput Compare
•Permite manejar tiempos enforma mas exacta que con eltimer overflow.
•Permite manejar tiempos enforma mas exacta que con eltimer overflow.
18
$004D
Temporizador
TCNT(hi):TCNT(lo)
Free running counter
TCNT
TOFTOI
TCRE
Channel 7Output Compare
4:1MUX
prescalerP Clock
PR[2:1:0]
PACLKPACLK/256
PACLK/65536
CLK[1:0]
Output CompareOutput Compare
19
Temporizador - Output Compare Time DelaysOutput Compare Time Delays
XDEF Entry ABSENTRY Entry
ROMStart EQU $4000RAMStart: equ $00000400
DDRT: equ $00000242PTT: equ $00000240
mTIM0_TSCR2_PR0: equ %00000001mTIM0_TSCR2_PR1: equ %00000010mTIM0_TSCR2_PR2: equ %00000100
TIM0_TIOS: equ $00000040mTIM0_TIOS_IOS7: equ %10000000
TIM0_TSCR1: equ $00000046TIM0_TSCR2: equ $0000004DTIM0_TFLG2: equ $0000004F
mTIM1_TSCR1_TEN: equ %10000000
TIM0_TC7: equ $0000005EmTIM1_TFLG1_C7F: equ %10000000
Tiempo EQU $5555ORG RAMStart
Datos dc.b $1,$2,$4,$8,$10,$20,$40,$80ORG ROMStartEntry:
;Inicialización de los 8 canales del puerto T como salida
bset DDRT,#$FF
;Inicialización del TimerOverFlow;Configurarmos el prescale a 128bset TIM0_TSCR2,#(mTIM0_TSCR2_PR2
| mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0)
ldab #0ldx #Datos;Activamos el canal 7 como output comparebset TIM0_TIOS, #mTIM0_TIOS_IOS7 ;Cargamos en el registro TC7 el valor que queremos ;comparar con el contador libremovw #Tiempo, TIM0_TC7;Activamos el contador librebset TIM0_TSCR1,#mTIM1_TSCR1_TEN; Fin de la inicialización 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 instrucción indefinidamenteBucle_1: brclr TIM0_TFLG1,# mTIM1_TFLG1_C7F, Bucle_1
; Una vez que se ha obtenido una comparación ;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 ejecución del programa prosigue
; Forzamos a que el bit C7F sea 0. Así nos podremos dar cuenta del próximo output compare ( comparación correcta entre el TCNT y el TIM0_TC7 en nuestro ejemplo)
bset TIM0_TFLG1,#mTIM1_TFLG1_C7F
ldd #Tiempoaddd TIM0_TC7std TIM0_TC7
movb b,x,PTTincb
cmpb #8bne Bucle_1ldab #0bra Bucle_1
20
TemporizadorOutput Compare Bit OperationOutput Compare Bit Operation
‘TSCR2’
‘TSCR2’
‘TIE’
TO 7 MORE TIMER
CHANNELS
‘TCTL1’
El CnF puede poner en “1” o “0”automáticamente un bit del puerto T
$0048
21
TemporizadorEjemplo: Output Compare Bit Operation (canal 7)Ejemplo: Output Compare Bit Operation (canal 7)ROMStart EQU $00004000RAMStart: equ $00000400mTIM0_TCTL1_OM7: equ %10000000mTIM0_TCTL1_OL7: equ %01000000Tiempo EQU $5555ORG ROMStartEntry:
bset DDRT,#$FFbset TIM0_TSCR2,#(mTIM0_TSCR2_PR2 | mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0)bset TIM0_TSCR2,#mTIM0_TSCR2_TCRE ; Resetbset TIM0_TIOS, #mTIM0_TIOS_IOS7 ; canal 7 como Output Capturemovw #Tiempo, TIM0_TC7bclr TIM0_TCTL1,#mTIM0_TCTL1_OM7bset TIM0_TCTL1,#mTIM0_TCTL1_OL7bset TIM0_TSCR1,#mTIM1_TSCR1_TEN
Bucle_1:brclr TIM0_TFLG1,,# mTIM1_TFLG1_C7F, Bucle_1
bset TIM0_TFLG1,#mTIM1_TFLG1_C7Fbra Bucle_1
DSEBM
Teoría – Tema 5Temporizadores II
2008-2009
2
TemporizadorCanal 7 Output Compare Canal 7 Output Compare parapara controlarcontrolar hastahasta 8 8 salidassalidas
•El canal 7 puede controlar hasta 8 canales de salida (Canal 0-7)
•Los registros OC7M y OC7D son utilizados en forma conjunta para definir la acción que realizarán los pins del Puerto T (0-3)
•OC7M – máscara, los bits de este registro que estén en 1 tomarán el valor correspondiente que se encuentra en el registro OC7D cuando el TCNT=TC7
‘TSCR2’
‘TSCR2’
‘TIE’
TO 7 MORE TIMER
CHANNELS
‘TCTL1’
3
Temporizador
4
TemporizadorInput Capture:Permite la medición de características de una señal de entrada. El sistema de Input Capturepuede ser programado para medir la longitud de un pulso de entrada o usado para computar las características de una señal periódica ( período, “duty cycle” y frecuencia)
TrailingedgeRising
edge
Longituddel pulso
On time
Período
Duty cycle = On Time x 100Período
5
TemporizadorInput CaptureInput Capture
6
TemporizadorInput CaptureInput Capture
“TCTL3”
7
TemporizadorPulse accumulatorPulse accumulator
Puede operara de dos formas:
Event counter mode (usa flancos) subida-bajada
Gated time accumulation mode(usa niveles) alto-bajo
8
TemporizadorPulse accumulatorPulse accumulator
El sistema de pulse accumulator utiliza 3 registros:
•Pulse Accumulator Control Register (PACTL) – $0060•Pulse Accumulator Flag Register (PAFLG) - $0061•Pulse Accumulator Counter Register (PACNT) - $0062:$0063
‘PAFLG’
9
TemporizadorPulse accumulatorPulse accumulator
PAEN Pulse Accumulator System Enable0 disabled (default)1 enabledPAMOD Pulse Accumulator Mode Select0 Event counter mode (default)1 Gated time accumlation modePEDGE Pulse Accumulator Edge ControlSi PAMOD=0(event counter mode)
0 flanco de bajada en PT7 incrementa el contador (defecto)1 flanco de subida
Si PAMOD=1(gated time accumulation mode)0 PT7 en nivel alto habilita al reloj del bus/64 a incrementar el contador1 ídem pero con PT7 en nivel bajo
PAOVI Pulse Accumulator OverflowInterrupt Enable
0 deshabilitado (defecto)1 habilitado
PAI Pulse Accumulator Input InterruptEnable
0 deshabilitado (defecto)1 habilitado
$0060
10
TemporizadorPulse accumulatorPulse accumulator
$0061
PAOVF Pulse Accumulator Overflow FlagEl bit se pone a 1 al desbordarse el contador. Se pone a 0 escribiendo sobre el un 1
PAIF Pulse Accumulator Input Edge FlagSe pone a 1 cuando se detecta un PEDGE (transición)
11
TemporizadorPulse accumulatorPulse accumulator
$0062
DSEBM
Teoría – Tema 6Interrupciones I
2008-2009
2
Interrupciones
¿Qué es una interrupción?Es un evento que requiere la interrupción de la ejecución normal de un programa y que la CPU ejecute una rutina relacionada con el evento.
Una interrupción puede ser generada:Externamente:
Cuando un circuito externo genera una señal de interrupción en la CPU
Internamente :Por medio de circuitos internos del CHIP (Timers, interfaces I/O, ..) o errores de Software (División por cero, overflow, “illegal opcodes”)
CONCEPTOS GENERALES
3
InterrupcionesRelación de pasos
1. El procesador está ejecutando programas la mayor cantidad de tiempo. Solamente una interrupción detiene la ejecución de un programa brevemente y realiza una acción.
1. La mayoría de los procesadores finalizarán la instrucción que está ejecutando y guardará la posición de memoria de la siguiente para poder retomar la ejecución mas tarde.
1. Identificación del origen de la interrupción antes de tomar la acción apropiada (hardware).
1. De acuerdo con la fuente de interrupción se tomará la acción adecuada.
1. Después de realizar la acción determinada por la fuente de interrupción, el procesador continúa con la tarea que estaba realizando antes.
4
Interrupciones¿Por qué utilizamos interrupciones?
Coordinar las actividades de I/O
Salir de una aplicación cuando sucede un error de software
“Recordar” a la CPU de realizar tareas rutinarias:Tener presente la hora
Adquisición periódica de datos
Conmutación de tareas en un sistema operativo multitarea
……
5
Interrupciones
Tipos de Interrupciones:EnmascarablesEnmascarables
Interrupciones que pueden ser ignoradas por la CPU.
NoNo--EnmascarablesEnmascarablesNo pueden ser ignoradas por la CPU y tiene que tomar acción inmediata.
Cuando una interrupción enmascarable está habilitadahabilitada, la CPU responderá por ella, en caso contrario, será ignorada.Una interrupción esta pendientependiente cuando está habilitada pero aún no es atendida.Todas la interrupciones enmascarables pueden ser deshabilitadas en forma globalglobal o individualmenteindividualmente.
6
Interrupciones
Prioridad
Cuando varias fuentes de interrupción necesitan la atención de la CPU simultáneamente
múltiples interrupciones pendientesinterrupciones pendientes
Solución: priorizar las interrupciones
7
InterrupcionesServicio de Interrupción
Pasos para la atención de una petición de interrupción:Guardar el contador de programa (PC Pila)Guardar el estado de la CPU (CCR, Reg. D X Y Pila)Identificar la fuente de interrupciónResolver la dirección de inicio de la rutina de servicio de interrupción adecuadaEjecutar la rutina de servicio de interrupciónRestaurar el estado de la CPU (almacenado en la pila)Restaurar el contador de programa (almacenado en la pila)Reanudar el programa interrumpido
8
InterrupcionesVector de Interrupción
Definición: dirección donde comienza la rutina de servicio de interrupciónLos Vectores de InterrupciVectores de Interrupcióónn son almacenadosalmacenados
en una Tabla de Vectores de InterrupciTabla de Vectores de Interrupcióónn
Formas de determinar el vector:1. Predeterminada (Intel 8051) 2. Traer el vector de una posición de memoria predefinida (HCS12) 3. Ejecutar un ciclo de reconocimiento para obtener el número del
vector para localizar el vector de interrupción (motorola 680000, Intelx86)
9
InterrupcionesOverhead de las interrupciones
La atención de las interrupciones provoca una sobrecarga:
1. Guardar el estado de la CPU y obtener el vector de interrupción – 9 ciclos
2. Ejecución de la instrucción RTI (restaura los registros) – 9 a 11 ciclos
3. Ejecución del rutina de interrupción – depende la cantidad de instrucciones
Cantidad de ciclos 17 a 20 + Rutina Interrupción
Clock de 24Mhz
Tiempo mínimo ≈ 1 µSeg
10
Interrupciones
DISPOSITIVO LENTO
Tiempo de CPU:
11
Interrupciones
DISPOSITIVO RÁPIDO
12
InterrupcionesHCS12
CCR
Modelo de programación
INTERRUPCIONES
No-Enmascarables
Enmascarables
13
Interrupciones
No-Enmascarables
No pueden ser deshabilitadas por el usuario.Están 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)
14
InterrupcionesEnmascarables
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 poniéndolo en 1 (SEI).
3. Las interrupciones enmascarables deben ser habilitadas globalmente con el comando CLI y localmente con el bit de habilitación asociado con la interrupción adecuada.
15
InterrupcionesInterrupciones enmascarables:
•Maskable interrupt request (IRQ_L)
•Real-time interrupt (RTI)
••Timer channelTimer channel
••Timer overflowTimer overflow
•Pulse accumulator overflow
•Pulse accumulator input edge
•SPI and SCI
•Analog-to-digital system
•Key wake up
16
Interrupciones - TimerTimer Overflow Interrupts
‘TSCR2’
‘TSCR2’
17
Interrupciones - TimerTimer Overflow Interrupts
‘TSCR2’
‘TSCR2’
CCR
18
Interrupciones - Timer
‘TSCR2’
‘TSCR2’
Timer Overflow Interrupts
19
‘TSCR2’
‘TSCR2’
Ejemplo:Timer Overflow Interrupts
20
‘TSCR2’
‘TSCR2’
Ejemplo:Timer Overflow Interrupts
21
‘TSCR2’
‘TSCR2’
Ejemplo:Timer Overflow Interrupts
22
‘TSCR2’
‘TSCR2’
Ejemplo:Timer Overflow Interrupts
23
‘TSCR2’
‘TSCR2’
Ejemplo:Timer Overflow Interrupts
24
‘TSCR2’
‘TSCR2’
Ejemplo:Timer Overflow Interrupts
25
‘TSCR2’
‘TSCR2’
Ejemplo:Timer Overflow Interrupts
26
Ejemplo:Timer Overflow Interrupts
27
Ejemplo:Timer Overflow Interrupts
28
Interrupciones - TimerOutput Compare Interrupts
29
Interrupciones - TimerOutput Compare Interrupts
30
Interrupciones - TimerOutput Compare Interrupts
31
Ejemplo:Output Compare Interrupts
32
Ejemplo:Output Compare Interrupts
33
Ejemplo:Output Compare Interrupts
34
Ejemplo:Output Compare Interrupts
35
Ejemplo:Output Compare Interrupts
36
Ejemplo:Output Compare Interrupts
37
Timer
‘TSCR2’
‘TSCR2’
‘TIE’
TO 3 MORE TIMER
CHANNELS
‘TCTL1’
38
Pulse accumulatorPulse accumulator
39
40
41
42
DSEBM
Teoría – Tema 6Interrupciones II
2008-2009
2
InterrupcionesInterrupciones enmascarables:
•Maskable interrupt request (IRQ*)
•Real-time interrupt (RTI)
•Timer channel
•Timer overflow
••Input CaptureInput Capture
••Pulse accumulator overflowPulse accumulator overflow
••Pulse accumulator input edgePulse accumulator input edge
•SPI and SCI
•Analog-to-digital system
•Key wake up
3
InterrupcionesInput CaptureInput Capture
Habilitación int. global
Habilitación int. local
4
InterrupcionesPulse accumulator Pulse accumulator -- input edge input edge
El sistema de pulse accumulator utiliza 3 registros:
•Pulse Accumulator Control Register (PACTL) – $0060•Pulse Accumulator Flag Register (PAFLG) - $0061•Pulse Accumulator Counter Register (PACNT) - $0062:$0063
5
InterrupcionesPulse accumulator Pulse accumulator -- OverflowOverflow
El sistema de pulse accumulator utiliza 3 registros:
•Pulse Accumulator Control Register (PACTL) – $0060•Pulse Accumulator Flag Register (PAFLG) - $0061•Pulse Accumulator Counter Register (PACNT) - $0062:$0063
6
InterrupcionesPulse accumulatorPulse accumulator
7
InterrupcionesInterrupciones 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
••AnalogAnalog--toto--digital systemdigital system
•Key wake up
8
InterrupcionesInterrupciones - Puerto PAD
9
InterrupcionesInterrupciones - Puerto PAD
Habilitación “local”
PERADL0:Pull up Pull Down Enable Port ADATDDIEN: Digital Input Enable Register ADDDRADL0: Direction Data Register ADPIFAD - Port AD Interrupt Flag Register
10
InterrupcionesInterrupciones - Puerto PAD
11
InterrupcionesInterrupciones - Puerto PAD
Habilitación global
12
InterrupcionesInterrupciones - Puerto PAD
13
InterrupcionesInterrupciones - Puerto PAD
14
InterrupcionesInterrupciones - Puerto PAD
15
InterrupcionesInterrupciones - Puerto PAD
16
InterrupcionesInterrupciones 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 upKey wake up
17
InterrupcionesKey Wakeup
18
InterrupcionesKey Wakeup andcc CCR·(M)->CCR
19
InterrupcionesKey Wakeup
20
InterrupcionesInterrupciones enmascarables:
•Maskable interrupt request (IRQ*)
••RealReal--time interrupt (RTI)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
21
InterrupcionesReal-Time InterruptPermite generar interrupciones con diferentes períodos de tiempo
Se acostumbra a usar para “recordar” al microcontrolador que realice alguna tarea
Ejemplo: Test del estado de la batería
RTIE
RTIF
I
RTR6 RTR5 RTR0
RTICTL
CRGINT
CRGFLG
CCR
REAL TIMEINTERRUPTREQUEST
OSCCLK
Habilitación local
Habilitación global
Configuración.Registro de control
Real Time Interrupt Flag
22
InterrupcionesReal-Time Interrupt
RTIE
RTIF
I
RTR6 RTR5 RTR0RTICTL
CRGINT
CRGFLG
CCR
REAL TIMEINTERRUPTREQUESTOSCCLK
23
InterrupcionesPreescale Reloj 16Mhz(2 x fec.cpu)
/ 1024
RTR6 RTR5 RTR4
‘RTICTL’divide entre 1,2,4 .. 64
RTR3 RTR2 RTR1
‘RTICTL’divide entre 1,2,3,..16
RTR0
RTIF
‘CRGFLG’
24
InterrupcionesReal-Time Interrupt
RTIE
RTIF
I
RTR6 RTR5 RTR0RTICTL
CRGINT
CRGFLG
CCR
REAL TIMEINTERRUPTREQUESTOSCCLK
25
InterrupcionesReal-Time Interrupt
RTIE
RTIF
I
RTR6 RTR5 RTR0RTICTL
CRGINT
CRGFLG
CCR
REAL TIMEINTERRUPTREQUESTOSCCLK
26
InterrupcionesPrioridad
Utilizada cuando se produce más de un evento que genera interrupción
El programador mediante el registro ‘HPRIO’ (Highest PRIOrity interrupt) puede determinar que fuente de interrupción es la más prioritaria, el resto se mantiene igual
E registro ‘HPRIO’ puede ser escrito cuando el bit I del CCR es 1 (interrupciones enmascarables deshabilitadas)
27
InterrupcionesPrioridad
28
InterrupcionesPrioridad
29
InterrupcionesPrioridad - ejemplo
………………
SEI
LDD #Vtim0ch7 ; vector canal 7STAD HPRIO
CLI
………………
Canal 7 con máxima prioridad
30
InterrupcionesInterrupción, acciones del programador y de la CPU
• Inicializar la tabla de vectores de interrupción con la dirección de la rutina de interrupción PROGRAMADOR
• Inicializar el Stack Pointer PROGRAMADOR• Habilitar las interrupciones enmascarables PROGRAMADOR• Completar la instrucción actual CPU• Calcular la dirección de retorno CPU• Guardar los registros de la CPU en la pila CPU• Poner en 1 el bit I del registro de estado (CCR) CPU• Buscar el vector de interrupción para la interrupción en curso de máxima
prioridad CPU• Pasar el control a la rutina de tratamiento de interrupción CPU• Borrar el flag asociado a la producción de la interrupción PROGRAMADOR• Restaurar los registros de la CPU desde la pila CPU• Poner en 0 el bit I del registro de estado (CCR) CPU• Transferir el control de ejecución al programa principal CPU
31
InterrupcionesXIRQ*
• Interrupción externa no-enmascarable
• Las interrupciones provenientes de este pin son enmascaradas y el programador luego de inicializar la pila, debe habilitarla
• Durante el proceso de reset, I=X=1 enmascaradas
• ANDCC #%1 0 1 1 1 1 1 1 se habilita
• Una vez que X es puesto en 0, no puede ser enmascarado nuevamente (X=1)
32
InterrupcionesXIRQ*
• Proceso en una interrupción no-enmascarable(parte)
• ……
• Registros de la CPU Pila
• X=I=1
• Ejecución de la rutina de interrupción
• Pila Registros de la CPU
•……
33