Top Banner
DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El temporizador 1 y las Interrupciones MI. Mario Alfredo Ibarra Carrillo Facultad de Ingeniería; Telecomunicaciones 16/03/2011 Ver_02_01_01 9-1
19

2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

Oct 02, 2018

Download

Documents

lycong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

MI. Mario Alfredo Ibarra Carrillo Año 2012

2012Capítulo 09.El

temporizador 1 y lasInterrupciones

MI. Mario Alfredo Ibarra Carrillo

Facultad de Ingeniería; Telecomunicaciones

16/03/2011

Ver_02_01_01

9-1

Page 2: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-2

Page 3: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Contenido

Copia de un segmento de la hoja de cálculo sirve de índice.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-3

Page 4: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-4

Page 5: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Los leds y el DIP-switch: el CPLD

Introducción

La tarjeta DSK incluye cuatro LEDs y cuatro switches DIP de posición (figura 9.1), como una simple forma de proveer realimentación interactiva con el usuario. Ambos son accedidos mediante la lectura y la escritura de los registros del CPLD.

Los cuatro registros CPLD son de 8-bits y se encuentran mapeados en memoria a partir de la dirección 0x90080000, la tabla 9.1 muestra la definición de cada bits de esos registros Para mayor información consultar la referencia técnica de la tarjeta DSK C6713. Nótese que el registro que controla los leds en la tabla 9.1.

Ejemplo de uso de los LEDS

Cree un nuevo proyecto así como un nuevo archivo para código fuente. En el código fuente se encenderá en forma intermitente uno de los leds de la DSK. El diagrama de flujo para lograr este propósito se muestra en la figura 9.2. El respectivo código muestra en la misma figura 9.2.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-5

Illustration 9.1: Fotografía del dipswitch y de los cuatro leds. Estos periféricos están conectados a registros del CPLD. A su vez, estos registros están mapeados en memoria.

Tabla 9.1 Registros del CPLD

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

0 USER_REG USR_SW3 USR_SW2 USR_SW1 USR_SW0 USR_LED3 USR_LED2 USR_LED1 USR_LED0R R R R R/W R/W R7W R/W

1 DC_REG DC_DET 0 DC_STAT1 DC_STAT0 DC_RST 0 DC_CNTL1 DC_CNTL0R R R R/W R/W R/W

4 VERSION CPLD_VER [3.0] 0 BOARD VERSION (2.0)R R

6 MISC SCR_5 SCR_4 SCR_3 SCR_2 SCR_1 FLASH_PAGE McBSP1 McBSP0R/W R/W R/W R/W R/W R/W ON/OFF ON/OFF

Offset Name

Board Board

Page 6: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

El temporizador o “timer”

En las páginas siguientes se describe la operación fundamental del temporizador. Se recomienda memorizar en secuencia:

• El diagrama del temporizador

• La función de cada PIN

• El modo “pulso” y el modo “reloj”

Introducción

Una vez establecida la operación fundamental del temporizador se estudiará el proceso de interrupción al CPU para tomar ventaja de este temporizador.

El TMS320C6713 tiene un temporizador de 32 bits, mismo que puede ser utilizado en:

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-6

Illustration 9.2: Algoritmo y código para encender y apagar un led..

main() {

int t; unsigned char *leds;

leds= (unsigned char *) 0x90080000;

for (;;) {

for (t=0;t<0x005FFFFF;t++); *leds=1 ^ (*leds);

} }

Page 7: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

• Eventos temporizados

• Conteo de eventos

• Generador de pulsos

• Interrumpir al CPU

• Enviar pulsos de sincronización para el DMA.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-7

Illustration 9.3: Diagrama a bloques del temporizador del TMS320C6713.

Page 8: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Operación fundamental

La figura 8.3 ilustra el diagrama a bloques del temporizador. En este diagrama puede notarse tres registros, los cuales están mapeados a memoria:

• Timer Control Register (CTL) (0x 0198 0000)

• Timer Period Register (PRD) (0x 0198 0004)

• Timer Count Register (CNT) (0x 0198 0008)

Así entonces el modo de operar es simple:

• El registro CNT comienza un conteo desde cero (o bien, desde cualquier otro valor que se cargue).

• El conteo se realiza

• Una vez que el valor de CNT iguala al valor en PRD se genera un pulso de reset sobre el registro CNT y el conteo vuelve a comenzar desde cero.

Operación de los terminales del temporizador

Para controlar el modo en que trabaja el temporizador hay varios pines de control que están agrupados en un registro único llamado “Timer Control Register” o CTL. Este registro puede verse en la tabla 9.1

Ninguno de los registros CTL, CNT Y PRD está mapeado a memoria, más bien, son parte del conjunto de registros del núcleo del CPU. Las tablas 9.3 y 9.4 describen la función de cada terminal de control del temporizador.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-8

31 16

15 14 13 12 11 10 9 8TSTAT INVINP CLKSRC CP

7 6 5 4 3 2 1 0HLD GO PWID DATIN DATOUT INVOUT FUNC

Tabla 9.2.Registro de control del temporizador: “Timer Control Register” (CTL) en la dirección “0x 0198 0000”

Reserved

Reserved

Reserved

Page 9: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-9

Bit Campo Valor Descripción

31-16 '- 0

15 SPND

0

1

14-12 Reservado '- 0

11 TSTAT

0 01 1

10 INVINP

NO 0SI 1

9 CLKSRC

EXTERNAL 0 Una señal de reloj puede leerse desde el pin TINP.CPU OVER 4 1 La señal de reloj es el reloj del CPU dividida por 4.

8 CP

PULSE 0

CLOCK 1

Tabla 9.3. Descripción de las celdas del registro CTLValor

simbólicoReserved Reservado. Una lectura sobre estos campos siempre

arroja “0” y un proceso de escritura no tiene efecto.Bit de suspensión. Detiene el temporizador cuando la DSK opera en modo “emulación”. El temporizador se puede controlar solamente cuando la fuente de señal es interna. Este bit no es accesible en el TMS320C6713.El temporizado continua contando durante el modo “emulación”.El temporizador se detiene durante el modo de emulación.Reservado. Una lectura sobre estos campos siempre arroja “0” y un proceso de escritura no tiene efecto.“Timer Status” bit. Esta celda es para el monitoreo del generador de pulsos. Así que cada vez que cambia la salida del generador de pulsos se almacena el nuevo valor en esta celdaEsta celda es monitoreada por el circuito controlador de interrupciones.

“TINTP Inverter Control” bit. Esta celda es para negar el valor de una entrada externa

“Clock Source” bit. Esta celda permite elegir la fuente de la señal de reloj.

“Clock/Pulse” bit. Esta celda permite elegir el modo de operación del generador de pulsos.Modo “pulso”. El generador de pulsos se comporta como un monoestable, es decir, con cada transición de “0” a “1” del comparador, el generador entrega un “1” que dura uno o dos periodos de la señal de reloj. La cantidad de periodos es elegida en la celda PWID.Modo “reloj”. El generador de pulsos se comporta como un biestable. Es decir, con cada transición de “0” a “1” que entrega el comparador, cambia el estado del generador de pulsos.

Page 10: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

La secuencia de pasos para configurar el temporizador es como sigue:

1. Se cargan ceros en el registro de control: este detiene al circuito contador.

2. Se carga un valor inicial en el registro contador.

3. Se configura el generador de pulsos y la fuente de señal de reloj (interna o externa).

4. Se habilita el contador (HLD=1) y se envía la señal de (GO=1)

5. Deshabilite la señal de reinicio (GO=0)

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-10

Bit Campo Valor Descripción

7 HLD

SI 0

NO 1

6 GO

CONTEO 0 Sin efectoRESET 1

5 Reservado '- 0

4 PWID

UNO 0

DOS 1

3 DATA IN

0 01 1

2 DATAOUT

1 INVOUT

0 La salida del generador de pulsos es afirmada

INVERTED 1 La salida del generador de pulsos es negada0 FUNC

GPIO 0 TOUT es un pin de I/O de propósito generalTOUT 1 Es la salida del temporizador.

Tabla 9.4. Descripción de las celdas del registro CTLValor

simbólico“Hold” bit. Es una celda que habilita el registro CNT para contar. Cualquier valor puede ser escrito en el registro CNT sin importar el valor del bit HLD.La señal de reloj no pasa al contador CNT. Una señal de “reset” externa también está deshabilitada.La señal de reloj pasa al contador CNT. Una señal de “reset” externa está habilitada.“GO” bit. Esta celda es para enviar una señal de “reset” al registro CNT

El registro CNT se inicializa al valor de “0”. El circuito contador es sensitivo a la transición positiva de su entrada de resetReservado. Una lectura sobre estos campos siempre arroja “0” y un proceso de escritura no tiene efecto.“Pulse Width” bit. Solo en modo “Pulso”: el generador de pulsos se comporta como un monoestable.El generador de pulsos entrega un “1” que dura un periodo de la señal de reloj.El generador de pulsos entrega un “1” que dura dos periodos de la señal de reloj.“Data in” bit. Esta celda es para monitorear la señal de reloj en la terminal “TINP”.

“Data out” bit. Esta celda es para colocar un bit en la terminal de salida “TOUT”. (Esta celda es funcional sólo si FUNC=1)“TOUT inverter control” bit. Esta celda invierte la salida del generador de pulsos.

NON INVERTED

“Function of TOUT” bit. Esta celda es para elegir el tipo de función del terminal “TOUT”

Page 11: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Introducción a las interrupciones

Tratándose de interrupciones hay algunos elementos que deben conocerse como las:

• Peticiones de interrupción o señales enviadas al procesador por algún dispositivo ajeno al procesador y que requiere de su atención.

• Interrupción de la ejecución de un proceso

• El servicio de interrupción o subrutina que atiende al dispositivo que interrumpe.

Definición 9.1. La petición de interrupción es una señal que algún dispositivo envía al CPU pretendiendo su atención.

Definición 9.2 Una interrupción es una suspensión temporal de la ejecución de un proceso para pasar a ejecutar una subrutina.

Definición 9.3 El servicio de interrupción (Interrupt Service Routine o ISR) es la subrutina que se invoca ante una petición de interrupción y que establece algún tipo de interacción entre CPU y el dispositivo que interrumpe. Luego de finalizada la subrutina se reanuda la ejecución del proceso.

Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema de computación. La primera técnica que se empleó fue que el propio procesador se encargara de sondear (polling) los dispositivos cada cierto tiempo para averiguar si tenía pendiente alguna comunicación. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo. El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitara. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).

El mecanismo de las interrupciones

Definición 9.4 Linea IRQ. Cada dispositivo que desea comunicare con el procesador por medio de interrupciones debe tener asignada una linea única capaz de avisar al CPU que le requiere para una operación. Esta línea es la llamada IRQ (“Interrupt ReQuest” o petición de interrupción).

Definición 9.5 Controlador de interrupciones. Las IRQ son líneas que llegan al circuito controlador de interrupciones, un componente hardware dedicado a la gestión de las interrupciones y que puede estar integrado en el procesador principal o ser un circuito separado conectado al procesador principal. El controlador de interrupciones debe ser capaz de habilitar o inhibir líneas de interrupción (operación llamada comúnmente enmascarar por la utilización de un arreglo de compuertas AND y un registro que almacena las máscaras: uno-habilitado o cero-inhabilitado), y establecer prioridades entre las distintas interrupciones habilitadas. Cuando varias lineas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al CPU.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-11

Page 12: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

También puede darse el caso de que una rutina de tratamiento de interrupción sea interrumpida para realizar otra rutina de tratamiento de una interrupción de mayor prioridad a la que se estaba ejecutando. Sin embargo hay interrupciones que no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no enmascarables o NMI.

El proceso de una interrupción generalmente toma algunos pasos para lograr la conmutación de un proceso a otro.

1. Terminar la ejecución de la instrucción en curso

2. Respaldar el contador de programa (Instruction Pointer o IP)

3. Respaldar otros registros del CPU

4. La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (Interrupt Service Routine o ISR) y ejecuta esa rutina que tiene como objetivo atender al dispositivos que generó la interrupción.

5. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.

Las fuentes de interrupción

El CPU tiene una gran cantidad de periféricos entre los que se cuentan

• Dos interrupciones por timer

• Dos puertos seriales: McASP y McBSP

• Dos puertos I2C

• Un puerto serial genérico GPIO

• 4 pines para conectar periféricos externos como un chip de audio (ADC y DAC) un botón de “reset”, etc.

En general se tienen 16 lineas IRQ para atender todos estos dispositivos. Estas lineas se multiplexan en 12 lineas IRQ que es el máximo de interrupciones que puede atender el CPU. La interrupción de más alta prioridad es el RESET, seguida en prioridad por la linea NMI . El resto de las interrupciones se atienden con rutinas ISR que define el programador.

Registros de control de interrupción

Los registros de control de interrupción son los siguientes [Rulph]:

• CSR (Control Status Regsiter) Este registro contiene la máscara global de interrupción o GIE (Global Interrupt Enable). Vea la tabla 9.5.

• IER (Interrupt Enalbe Register): Es un registro contiene las máscaras mediante las cuales se habilitan y deshabilitan interrupciones particulares. Vea la tabla 9.6

• IRP (Interrupt Return Pointer) Es un registro que almacena la dirección de retorno de una interrupción.

• ISTP ( Interrupt Service Table Pointer). Contiene la dirección de la “Interrupt Service Table Base” o ISTB. Vea la tabla 9.7

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-12

Page 13: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-13

31 30 29 28 27 26 25 24CPU ID

23 22 21 20 19 18 17 16Revision ID

15 14 13 12 11 10 9 8PWRD SAT EN

7 6 5 4 3 2 1 0PCC DCC PGIE GIE

Tabla 9.5. Registro CSR. Sólo interesa la celda 0 ya que contiene el permiso global de interrupciones

31 30 29 28 27 26 25 24Reserved

23 22 21 20 19 18 17 16Reserved

15 14 13 12 11 10 9 8IE15 IE14 IE13 IE12 IE11 IE10 IE9 IE8

7 6 5 4 3 2 1 0IE7 IE6 IE5 IE4 Rsv Rsv NMIE 1

Tabla 9.6. Registro IER para permisos locales de interrupción

Tabla 9.7. Registro ISTP para localizar la tabla de ISR

31 30 29 28 27 26 25 24ISTB

23 22 21 20 19 18 17 16ISTB

15 14 13 12 11 10 9 8ISTB HPEINT

7 6 5 4 3 2 1 0HPEINT 0 0 0 0 0

Page 14: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Cuando ocurre una interrupción, el CPU usa el registro ISTP que contiene una dirección en memoria llamada “Interrupt Service Table Base” o ISTB. A esta dirección se suma un “offset”, correspondiente con el número de interrupción, para saltar a un conjunto de instrucciones que invocan a una subrutina ISR. Como ejemplo, considere la interrupción INT15, el CPU saltará a la dirección “ISTB+10h” en donde encontrará el código mostrado en la figura 9.4. La dirección de retorno de la ISR se almacena en el IRP.

El programador no tiene que programar el registro ISTP, ni las subrutinas de la tabla ISTB ya que el DSP BIOS tiene todo arreglado. Al respecto, el programador solo tiene que indicar el nombre de la ISR.

Ejemplo: led intermitente

El problema

Encender un led de forma intermitente un “led” de la DSK. El periodo debe ser de 1 segundo.

Descripción general de la solución

La solución al problema se implementará usando un temporizador que interrumpe al CPU cada medio segundo para actualizar el estado del led de apagado a encendido y viceversa,}

La solución a este problema consta de dos códigos:

• “_main”: configura el temporizador 1 y prepara la interrupción por temporizador.

• “_activaLed”: código ISR que enciende o apaga un led mediante la negación del estado actual.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-14

STW B0,*--B15 MVC B0,IRP MVKL <dirección de la ISR>,B0 MVKH <dirección de la ISR>,B0 B B0 LDW *B15++,B0 NOP 2 NOP NOP

Illustration 9.4: Código para invocar la subrutina se servicios de interrupción o ISR.

Page 15: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

La rutina main

La rutina “_main” realiza, en resumen, los siguientes pasos para la configuración del temporizador. Estos pasos pueden verse en el código de la figura 9.6

• Detener el temporizador

• Cargar un valor de arranque en el registro contador del temporizador

• Cargar un valor máximo de conteo en el registro periodo del temporizador

• Cargar valores de configuración en el registro control del temporizador (fuente de señal de reloj, modo de operación "pulso", ancho del pulso.

• Habilitar la interrupción 15 para el temporizador

• Habilitar el permiso global de interrupción

• Arrancar el temporizador

El cálculo del periodo de conteo para el temporizador (valor a cargar en el registro periodo) se realiza a partir de la siguiente relación:

regPRDclkCPU /4

=tencendido

(9.1)

donde:

• tencendido es el tiempo que estará encendido o apagado el led.

• regPRD Es el valor que contendrá el registro PRD para lograr el periodo de tiempo requerido.

• clkCPU Es la frecuencia de reloj del CPU. Esta frecuencia es de 225MHz. La frecuencia se divide por cuatro a alimentarse al circuito temporizador.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-15

Illustration 9.5: Diagrama a bloques de los códigos usados para encender un led en forma intermitente usando el temporizador 1 e interrupciones.

Page 16: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-16

;Archivo`principal : Este archivo contiene código para inicializar las interrupciones

.global _main

RegCTL1 .set 0x01980000 ;Registro de control RegPRD1 .set 0x01980004 ;Registro periodo (A8) RegCNT1 .set 0x01980008 ;Registro contador (A7)

Timer_stop .set 0x0000 Timer_configure .set 0x0300 Timer_run .set 0x0380

.text ;Timer detenido ;0x0000 -> RegCTL1

_main MVKL Timer_stop,A4 MVKH Timer_stop,A4 MVKL RegCTL1,A7 MVKH RegCTL1,A7 STW A4,*A7

;Valor de arranque del contador MVKL 0x0000,A4 MVKH 0x0000,A4 MVKL RegCNT1,A7 MVKH RegCNT1,A7 STW A4,*A7

;Valor màximo en el registro PRD MVKL 0x1AD2748,A4 MVKH 0x1AD2748,A4 MVKL RegPRD1,A7 MVKH RegPRD1,A7 STW A4,*A7

;configurando el Control del Timer MVKL Timer_configure,A4 MVKH Timer_configure,A4 MVKL RegCTL1,A7 MVKH RegCTL1,A7 STW A4,*A7

;Habilitar la interrupcion 15 en el registro IER MVC IER,B1 SET B1,15,15,B1 MVC B1,IER

;Habilitar la interrupcion global: GIE MVC CSR,B0 OR 1,B0,B0 MVC B0,CSR

;Arranca el timer ;0x0000 -> RegCTL1 MVKL Timer_run,A4 MVKH Timer_run,A4 MVKL RegCTL1,A7 MVKH RegCTL1,A7 STW A4,*A7

loopF B loopF NOP 5

.end

Illustration 9.6: Código para configura el temporizador 1.

Page 17: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Despejando la variable regPRD de la fórmula (9.1) y sustituyendo datos se tiene que:

regPRD=tencendidoclkCPU4

=0.5∗225 E6

4=28125000 (9.2)

La función “_activaLed”

Esta función lee el estado del registro del CPLD y modifica su estado para encender o apagar un led. El respectivo código se muestra en la figura 9.7.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-17

;Este archivo contiene codigo para atender una interrupcion

.global _funcionTimer dirLeds .set 0x90080000 ;Registro de control

.text

_activeLed MVKL dirLeds,A7 MVKH dirLeds,A7 LDW *A7,A4 NOP 4 MVKL 0x01,A6 XOR A6,A4,A4 STW A4,*A7 B IRP NOP 5

.end

Illustration 9.7: Código de la función ISR.

Page 18: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Bibliografía

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-18

[Nasser] Nasser Kehtarnavaz, Namjin Kim, “Real Time Sigital Signal processing base on the TMS320C6000”, Elsevier, 2005

Page 19: 2012 Capítulo 09.El temporizador 1 y las Interrupciones · DSK TMS320C6713 El temporizador 1 y las interrupciones MI. Mario Alfredo Ibarra Carrillo Año 2012 2012 Capítulo 09.El

DSK TMS320C6713 El temporizador 1 y las interrupciones

Los números de versión

Tercer número

Correcciones ortográficas

Las definiciones, teoremas y demás proposiones se mantienen sin alterar

Total compatibilidad

Segundo número

Correcciones de algunas definiciones, teoremas, etc.

se agregan definiciones y teoremas

La compatibilidad con versiones anteriores es parcial

Primer número

Se está cambiando el contexto del archivo:

Se cambia de editor de textos

Se cambia el contenido para adaptarse a una nueva filosofía del libro.

MI. Mario Alfredo Ibarra Carrillo Año 2012

9-19