curso hcs12

255
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.

Upload: angel-triano

Post on 26-Mar-2015

639 views

Category:

Documents


8 download

DESCRIPTION

Curso de microcontroladores HCS12 de freescale

TRANSCRIPT

Page 1: CURSO HCS12

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.

Page 2: CURSO HCS12

- 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

Page 3: CURSO HCS12

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

Page 4: CURSO HCS12

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

Page 5: CURSO HCS12

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)

Page 6: CURSO HCS12

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*

Page 7: CURSO HCS12

Disseny de Sistemes Electrònics Basat en Microprocessadors

Page 8: CURSO HCS12

¡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

Page 9: CURSO HCS12

“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

Page 10: CURSO HCS12

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)

Page 11: CURSO HCS12

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

Page 12: CURSO HCS12

Mercado de los Procesadores (2)

Page 13: CURSO HCS12

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

Page 14: CURSO HCS12

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

Page 15: CURSO HCS12

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!!

Page 16: CURSO HCS12

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!

Page 17: CURSO HCS12

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, …

Page 18: CURSO HCS12

Procesadores

DSP (digital signal

processor)Microcontrolador

µC:

Microprocesador:GPP

Procesador:

Page 19: CURSO HCS12

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

Page 20: CURSO HCS12

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

Page 21: CURSO HCS12

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 ...)

Page 22: CURSO HCS12

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

Page 23: CURSO HCS12

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

Page 24: CURSO HCS12

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.

Page 25: CURSO HCS12

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

Page 26: CURSO HCS12

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

Page 27: CURSO HCS12

¡Permite aumentar GHz y rendimiento!

Page 28: CURSO HCS12

¡Como el PIB de algunos países!

Page 29: CURSO HCS12

• 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!

Page 30: CURSO HCS12

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

Page 31: CURSO HCS12

Blue Gene (IBM) - MarenostrumSUPERCOMPUTADOR=Miles de procesadores conectados de forma

jerárquica

http://www.bsc.es/

Page 32: CURSO HCS12

Evolución del Computador

Page 33: CURSO HCS12
Page 34: CURSO HCS12
Page 35: CURSO HCS12
Page 36: CURSO HCS12
Page 37: CURSO HCS12
Page 38: CURSO HCS12
Page 39: CURSO HCS12
Page 40: CURSO HCS12
Page 41: CURSO HCS12
Page 42: CURSO HCS12
Page 43: CURSO HCS12
Page 44: CURSO HCS12
Page 45: CURSO HCS12
Page 46: CURSO HCS12
Page 47: CURSO HCS12
Page 48: CURSO HCS12
Page 49: CURSO HCS12

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

Page 50: CURSO HCS12

DSEBM

Teoría – Tema 2Arquitectura de Microprocesadores

2008-2009

Page 51: CURSO HCS12

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

Page 52: CURSO HCS12

3

Arquitectura del HCS12

Page 53: CURSO HCS12

4

MC9S12E128CPV

Arquitectura del HCS12

Page 54: CURSO HCS12

5

Arquitectura del HCS12

Page 55: CURSO HCS12

6

Arquitectura del HCS12

Page 56: CURSO 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

Page 57: CURSO HCS12

8

Arquitectura del HCS12. Mapa de memoria

Page 58: CURSO HCS12

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

Page 59: CURSO HCS12

10

Arquitectura del HCS12

Registros:

Page 60: CURSO HCS12

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

Page 61: CURSO HCS12

DSEBM

Teoría – Tema 3Programación del HCS12

2008-2009

Page 62: CURSO HCS12

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

Page 63: CURSO HCS12

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

Page 64: CURSO HCS12

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

Page 65: CURSO HCS12

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

Page 66: CURSO HCS12

6

Modelo de programación

Registros:

Registro de Condición

Page 67: CURSO HCS12

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.

Page 68: CURSO HCS12

8

Modos de Direccionamiento

Inmediato

Directo

Extendido

Indexado

Indexado-indirecto

Inherente

Relativo

Hay 7 modos de direccionamiento:

Page 69: CURSO HCS12

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

Page 70: CURSO HCS12

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

Page 71: CURSO HCS12

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.

Page 72: CURSO HCS12

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.

Page 73: CURSO HCS12

13

Modos de DireccionamientoDireccionamiento Indexado (cont.):

Page 74: CURSO HCS12

14

Modos de Direccionamiento

Direccionamiento indexado

Direccionamiento Indexado (cont.):

Page 75: CURSO HCS12

15

Modos de DireccionamientoDireccionamiento Indexado (cont.):

Direccionamiento indexado con post/pre incremento/decremento

Direccionamiento indexado

Page 76: CURSO HCS12

16

Modos de DireccionamientoDireccionamiento Indexado (cont.):

Direccionamiento indexado con acumulador

Page 77: CURSO HCS12

17

Modos de DireccionamientoDireccionamiento Indexado (cont.):

Direccionamiento indexado-indirecto

Page 78: CURSO HCS12

18

Modos de DireccionamientoDireccionamiento Indexado (cont.):

Direccionamiento indexado- Indirecto

Direccionamiento indexado- Indirecto

Page 79: CURSO HCS12

19

Modos de DireccionamientoDireccionamiento Inherente:

Todos los datos para la ejecución de la instrucciónestán dentro de la CPU

Page 80: CURSO HCS12

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:

Page 81: CURSO HCS12

21

Modos de DireccionamientoDireccionamiento Relativo (cont.):

Page 82: CURSO HCS12

22

Modos de DireccionamientoResumen:

Page 83: CURSO HCS12

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

Page 84: CURSO HCS12

24

Programas en AssemblerEjemplos:

Page 85: CURSO HCS12

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

Page 86: CURSO HCS12

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

Page 87: CURSO HCS12

27

Programas en Assembler

H$Hexadecimal

T!Decimal

Q%Binario

SufijoPrefijoBase

Page 88: CURSO HCS12

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:

Page 89: CURSO HCS12

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

Page 90: CURSO HCS12

30

Programas en AssemblerPseudooperation

Page 91: CURSO HCS12

31

Programas en AssemblerPseudooperation

EQU

DS

ORG

Page 92: CURSO HCS12

32

Programas en AssemblerPseudooperation

DC

dc.b

dc.b

dc.bdc.bdc.b

dc.bdc.w

Page 93: CURSO HCS12

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

Page 94: CURSO HCS12

34

Repertorio de InstruccionesLoad and Store

Page 95: CURSO HCS12

35

Repertorio de InstruccionesTransfer and Exchange

Page 96: CURSO HCS12

36

Repertorio de InstruccionesMove

Addition and Subtraction

Page 97: CURSO HCS12

37

Repertorio de InstruccionesBinary-Coded Decimal

Decrement and Increment

Page 98: CURSO HCS12

38

Repertorio de InstruccionesCompared and Test

Boolean Logic

Page 99: CURSO HCS12

39

Repertorio de InstruccionesClear, Complement and Negate

Multiplication and Division

Page 100: CURSO HCS12

40

Repertorio de InstruccionesBit Test and Manipulation

Shift and Rotate

Page 101: CURSO HCS12

41

Repertorio de InstruccionesBranch

Page 102: CURSO HCS12

42

Repertorio de InstruccionesLoop Primitive

Jump and Subroutine

Page 103: CURSO HCS12

43

Repertorio de InstruccionesInterrupt

Page 104: CURSO HCS12

44

Repertorio de InstruccionesIndex Manipulation

Page 105: CURSO HCS12

45

Repertorio de InstruccionesStacking

Page 106: CURSO HCS12

46

Repertorio de InstruccionesPointer and Index Calculation

Condition Code

Page 107: CURSO HCS12

47

Repertorio de InstruccionesStop and Wait

•Background Mode and Null Operations

Page 108: CURSO HCS12

48

Repertorio de Instrucciones

Page 109: CURSO HCS12

49

Repertorio de Instrucciones

Page 110: CURSO HCS12

50

Repertorio de Instrucciones

Page 111: CURSO HCS12

51

Repertorio de Instrucciones

Page 112: CURSO HCS12

52

Repertorio de Instrucciones

Page 113: CURSO HCS12

53

Repertorio de Instrucciones

Page 114: CURSO HCS12

54

Repertorio de Instrucciones

Page 115: CURSO HCS12

55

Repertorio de Instrucciones

Page 116: CURSO HCS12

56

Repertorio de Instrucciones

Page 117: CURSO HCS12

57

Repertorio de Instrucciones

Page 118: CURSO HCS12

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

Page 119: CURSO HCS12

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

Page 120: CURSO HCS12

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

Page 121: CURSO HCS12

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

Page 122: CURSO HCS12

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) ‏

Page 123: CURSO HCS12

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

Page 124: CURSO HCS12

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

Page 125: CURSO HCS12

65

ProgramaciónDO - WHILE (Repetición)‏

DOGet data from the switchesOutput the value to the LEDs

END_DOWHILE Any switch is set

Page 126: CURSO HCS12

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

Page 127: CURSO HCS12

67

Saltos Subrutinas

INICIALIZAR EL SPY RETORNAR DE

LA SUBRUTINA CON RTS!!!!

Page 128: CURSO HCS12

DSEBM

Teoría – Tema 4Entrada/Salida

2008-2009

Page 129: CURSO HCS12

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

Page 130: CURSO HCS12

3

Puertos

Page 131: CURSO HCS12

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

Page 132: CURSO HCS12

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

Page 133: CURSO HCS12

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.

Page 134: CURSO HCS12

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

Page 135: CURSO HCS12

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)

Page 136: CURSO HCS12

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].

Page 137: CURSO HCS12

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.

Page 138: CURSO HCS12

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

; - - -

Page 139: CURSO HCS12

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

Page 140: CURSO HCS12

13

PuertosHandshaking

Hay microcontroladores que tienen líneas dedicadas al Handshaking (HC11), el HCS12 no.

Page 141: CURSO HCS12

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

Page 142: CURSO HCS12

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

Page 143: CURSO HCS12

16

PuertosTransferencia de Datos Asíncrona (ejemplo: entrada)

¿Puedo?

Sí, puedes

GraciasDe nada

Page 144: CURSO HCS12

17

Puertos

PORTT $0240

DDPRT $0242

Puerto T conectado a 8 LEDs

Puerto T

Page 145: CURSO HCS12

18

Puertos

movb variable1, PORTTo

staa PORTT

¿Cómo escribir un valor en el puerto?

Page 146: CURSO HCS12

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

Page 147: CURSO HCS12

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

Page 148: CURSO HCS12

21

(I)

(II)

(III)

(IV)

Page 149: CURSO HCS12

DSEBM

Teoría – Tema 5Temporizadores I

2008-2009

Page 150: CURSO HCS12

2

Manejo de tiempos

Buclesfor (i=0; i<tiempo; i++)

{NOP

}Dificultad para el control exacto del tiempo

Page 151: CURSO HCS12

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

Page 152: CURSO HCS12

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

Page 153: CURSO HCS12

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

Page 154: CURSO HCS12

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

Page 155: CURSO HCS12

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

Page 156: CURSO HCS12

8

TemporizadorSistema de tiempos del HCS12

Principales funciones:Timer Overflow: Input Capture:Output Compare:Pulse Accumulator:

Page 157: CURSO HCS12

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

Page 158: CURSO HCS12

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.

Page 159: CURSO HCS12

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

Page 160: CURSO HCS12

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

Page 161: CURSO HCS12

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]

Page 162: CURSO HCS12

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

Page 163: CURSO HCS12

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

Page 164: CURSO HCS12

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

Page 165: CURSO HCS12

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.

Page 166: CURSO HCS12

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

Page 167: CURSO HCS12

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

Page 168: CURSO HCS12

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

Page 169: CURSO HCS12

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

Page 170: CURSO HCS12

DSEBM

Teoría – Tema 5Temporizadores II

2008-2009

Page 171: CURSO HCS12

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’

Page 172: CURSO HCS12

3

Temporizador

Page 173: CURSO HCS12

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

Page 174: CURSO HCS12

5

TemporizadorInput CaptureInput Capture

Page 175: CURSO HCS12

6

TemporizadorInput CaptureInput Capture

“TCTL3”

Page 176: CURSO HCS12

7

TemporizadorPulse accumulatorPulse accumulator

Puede operara de dos formas:

Event counter mode (usa flancos) subida-bajada

Gated time accumulation mode(usa niveles) alto-bajo

Page 177: CURSO HCS12

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’

Page 178: CURSO HCS12

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

Page 179: CURSO HCS12

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)

Page 180: CURSO HCS12

11

TemporizadorPulse accumulatorPulse accumulator

$0062

Page 181: CURSO HCS12

DSEBM

Teoría – Tema 6Interrupciones I

2008-2009

Page 182: CURSO HCS12

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

Page 183: CURSO HCS12

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.

Page 184: CURSO HCS12

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

……

Page 185: CURSO HCS12

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.

Page 186: CURSO HCS12

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

Page 187: CURSO HCS12

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

Page 188: CURSO HCS12

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) ‏

Page 189: CURSO HCS12

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

Page 190: CURSO HCS12

10

Interrupciones

DISPOSITIVO LENTO

Tiempo de CPU:

Page 191: CURSO HCS12

11

Interrupciones

DISPOSITIVO RÁPIDO

Page 192: CURSO HCS12

12

InterrupcionesHCS12

CCR

Modelo de programación

INTERRUPCIONES

No-Enmascarables

Enmascarables

Page 193: CURSO HCS12

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)

Page 194: CURSO HCS12

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.

Page 195: CURSO HCS12

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

Page 196: CURSO HCS12

16

Interrupciones - TimerTimer Overflow Interrupts

‘TSCR2’

‘TSCR2’

Page 197: CURSO HCS12

17

Interrupciones - TimerTimer Overflow Interrupts

‘TSCR2’

‘TSCR2’

CCR

Page 198: CURSO HCS12

18

Interrupciones - Timer

‘TSCR2’

‘TSCR2’

Timer Overflow Interrupts

Page 199: CURSO HCS12

19

‘TSCR2’

‘TSCR2’

Ejemplo:Timer Overflow Interrupts

Page 200: CURSO HCS12

20

‘TSCR2’

‘TSCR2’

Ejemplo:Timer Overflow Interrupts

Page 201: CURSO HCS12

21

‘TSCR2’

‘TSCR2’

Ejemplo:Timer Overflow Interrupts

Page 202: CURSO HCS12

22

‘TSCR2’

‘TSCR2’

Ejemplo:Timer Overflow Interrupts

Page 203: CURSO HCS12

23

‘TSCR2’

‘TSCR2’

Ejemplo:Timer Overflow Interrupts

Page 204: CURSO HCS12

24

‘TSCR2’

‘TSCR2’

Ejemplo:Timer Overflow Interrupts

Page 205: CURSO HCS12

25

‘TSCR2’

‘TSCR2’

Ejemplo:Timer Overflow Interrupts

Page 206: CURSO HCS12

26

Ejemplo:Timer Overflow Interrupts

Page 207: CURSO HCS12

27

Ejemplo:Timer Overflow Interrupts

Page 208: CURSO HCS12

28

Interrupciones - TimerOutput Compare Interrupts

Page 209: CURSO HCS12

29

Interrupciones - TimerOutput Compare Interrupts

Page 210: CURSO HCS12

30

Interrupciones - TimerOutput Compare Interrupts

Page 211: CURSO HCS12

31

Ejemplo:Output Compare Interrupts

Page 212: CURSO HCS12

32

Ejemplo:Output Compare Interrupts

Page 213: CURSO HCS12

33

Ejemplo:Output Compare Interrupts

Page 214: CURSO HCS12

34

Ejemplo:Output Compare Interrupts

Page 215: CURSO HCS12

35

Ejemplo:Output Compare Interrupts

Page 216: CURSO HCS12

36

Ejemplo:Output Compare Interrupts

Page 217: CURSO HCS12

37

Timer

‘TSCR2’

‘TSCR2’

‘TIE’

TO 3 MORE TIMER

CHANNELS

‘TCTL1’

Page 218: CURSO HCS12

38

Pulse accumulatorPulse accumulator

Page 219: CURSO HCS12

39

Page 220: CURSO HCS12

40

Page 221: CURSO HCS12

41

Page 222: CURSO HCS12

42

Page 223: CURSO HCS12

DSEBM

Teoría – Tema 6Interrupciones II

2008-2009

Page 224: CURSO HCS12

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

Page 225: CURSO HCS12

3

InterrupcionesInput CaptureInput Capture

Habilitación int. global

Habilitación int. local

Page 226: CURSO HCS12

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

Page 227: CURSO HCS12

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

Page 228: CURSO HCS12

6

InterrupcionesPulse accumulatorPulse accumulator

Page 229: CURSO HCS12

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

Page 230: CURSO HCS12

8

InterrupcionesInterrupciones - Puerto PAD

Page 231: CURSO HCS12

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

Page 232: CURSO HCS12

10

InterrupcionesInterrupciones - Puerto PAD

Page 233: CURSO HCS12

11

InterrupcionesInterrupciones - Puerto PAD

Habilitación global

Page 234: CURSO HCS12

12

InterrupcionesInterrupciones - Puerto PAD

Page 235: CURSO HCS12

13

InterrupcionesInterrupciones - Puerto PAD

Page 236: CURSO HCS12

14

InterrupcionesInterrupciones - Puerto PAD

Page 237: CURSO HCS12

15

InterrupcionesInterrupciones - Puerto PAD

Page 238: CURSO HCS12

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

Page 239: CURSO HCS12

17

InterrupcionesKey Wakeup

Page 240: CURSO HCS12

18

InterrupcionesKey Wakeup andcc CCR·(M)->CCR

Page 241: CURSO HCS12

19

InterrupcionesKey Wakeup

Page 242: CURSO HCS12

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

Page 243: CURSO HCS12

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

Page 244: CURSO HCS12

22

InterrupcionesReal-Time Interrupt

RTIE

RTIF

I

RTR6 RTR5 RTR0RTICTL

CRGINT

CRGFLG

CCR

REAL TIMEINTERRUPTREQUESTOSCCLK

Page 245: CURSO HCS12

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’

Page 246: CURSO HCS12

24

InterrupcionesReal-Time Interrupt

RTIE

RTIF

I

RTR6 RTR5 RTR0RTICTL

CRGINT

CRGFLG

CCR

REAL TIMEINTERRUPTREQUESTOSCCLK

Page 247: CURSO HCS12

25

InterrupcionesReal-Time Interrupt

RTIE

RTIF

I

RTR6 RTR5 RTR0RTICTL

CRGINT

CRGFLG

CCR

REAL TIMEINTERRUPTREQUESTOSCCLK

Page 248: CURSO HCS12

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) ‏

Page 249: CURSO HCS12

27

InterrupcionesPrioridad

Page 250: CURSO HCS12

28

InterrupcionesPrioridad

Page 251: CURSO HCS12

29

InterrupcionesPrioridad - ejemplo

………………

SEI

LDD #Vtim0ch7 ; vector canal 7STAD HPRIO

CLI

………………

Canal 7 con máxima prioridad

Page 252: CURSO HCS12

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

Page 253: CURSO HCS12

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)‏

Page 254: CURSO HCS12

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

•……

Page 255: CURSO HCS12

33