Академический Документы
Профессиональный Документы
Культура Документы
Cdigo Fuente
Debido a lo extenso que resulta la codificacin de los algoritmos, solo se
citar las partes ms resaltantes, dejando toda la informacin de la tesis en un
CD para mayor referencia.
128
Cabe recalcar que todas las seales analizadas han sido obtenidas de la Base
de Datos del MIT, el programa tesis.c elaborador por el autor fue compilado
usando el gcc sobre Linux, instalando previamente las libreras propias de
Physionet, como se especifica en el manual de esta base de datos. En concreto
el cdigo del programa es:
129
130
sprintf(cad,"%d",N);
fprintf(fp,"%s\n",cad);
/*INICIO->DATOS
--Numero de Canales
--Numero total de Muestras
<-FIN */
/*Cerrar Archivo */
fclose(fp);
/*Aqui empieza codigo de lectura del archivo */
if((fp2=fopen(argv[1],"r"))==NULL){
printf("No se puede abrir el archivo \n");
return 1;
}
printf("Leyendo del archivo ...\n");
/*Lee el archivo */
/*Mostrar el contenido */
fscanf(fp2,"%s",Ala1);
while(!feof(fp2)){
printf("%s\n",Ala1);
fscanf(fp2,"%s",Ala1);
}
/*Aqui termina cdigo de comprobacin */
exit(0);
}
Para lograr esto copiar la carpeta Uvi_Wave que viene en el CD de la Tesis, a la carpeta
del Toolbox de Matlab, esto es: C:\matlabR12\toolbox\wavelet
131
tmp='C:\matlabR12\work';
cd C:\matlabR12\toolbox\wavelet\Uvi_Wave
startup;
%Inicio de rutina
q=length(tmq);
p=length(tmp);
N=p+q;
s=q+1;
tempo=tmq;
for i=s:N
tempo(i)=tmp(i-q);
end
eval(tempo);
clear all;
%El proposito de esta rutina es inicializar el paquete Uvi_Wave%
A continuacin se describe algunos programas utilizados en Matlab para la lectura de la
BD del MIT previamente traducidos al formato establecido por el autor de la Tesis.
132
133
134
Q=min(Nor_1);
Nor_1=Nor_1-Q;
Delta=max(Nor_1)-min(Nor_1);
Nor_1=Nor_1/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Nor_1=Nor_1-(sum(Nor_1)/P);
% Canal 2
P=length(Nor_2);
Q=min(Nor_2);
Nor_2=Nor_2-Q;
Delta=max(Nor_2)-min(Nor_2);
Nor_2=Nor_2/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Nor_2=Nor_2-(sum(Nor_2)/P);
% Procesa Seal Taqui Arritmia Ventricular
% Canal 1
P=length(Tav_1);
Q=min(Tav_1);
Tav_1=Tav_1-Q;
Delta=max(Tav_1)-min(Tav_1);
Tav_1=Tav_1/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Tav_1=Tav_1-(sum(Tav_1)/P);
% Procesa Seal Arritmia Supra Ventricular
% Canal 1
P=length(Asv_1);
Q=min(Asv_1);
Asv_1=Asv_1-Q;
Delta=max(Asv_1)-min(Asv_1);
Asv_1=Asv_1/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Asv_1=Asv_1-(sum(Asv_1)/P);
% Canal 2
P=length(Asv_2);
Q=min(Asv_2);
Asv_2=Asv_2-Q;
Delta=max(Asv_2)-min(Asv_2);
Asv_2=Asv_2/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Tav_1=Tav_1-(sum(Tav_1)/P);
% Inicio de Rutinas para mostrar las Seales Cardiacas...
zoom on
%figure(1)
figure
subplot(3,1,1), plot(Nor_1,'red'),title('Seal Normal')
subplot(3,1,2), plot(Asv_1,'blue'),title('Arritmia Supra Ventricular')
135
136
137
(lee_371.m)
%Lee todas las seales de entrenamiento
lee01_entrenamiento % Seal Nor 16265 Asv 800 Tav cu03
lee02_entrenamiento % Seal Nor 16265 Asv 801 Tav cu05
lee03_entrenamiento % Seal Nor 16265 Asv 802 Tav cu06
lee04_entrenamiento % Seal Nor 16265 Asv 803 Tav cu07
lee05_entrenamiento % Seal Nor 16272 Asv 804 Tav cu08
lee06_entrenamiento % Seal Nor 16272 Asv 806 Tav cu09
lee07_entrenamiento % Seal Nor 16272 Asv 807 Tav cu10
lee08_entrenamiento % Seal Nor 16272 Asv 808 Tav cu11
lee09_entrenamiento % Seal Nor 16273 Asv 809 Tav cu12
lee10_entrenamiento % Seal Nor 16273 Asv 810 Tav cu13
lee11_entrenamiento % Seal Nor 16273 Asv 811 Tav cu14
lee12_entrenamiento % Seal Nor 16273 Asv 812 Tav cu15
clear A Asv_1 Asv_2 Ch Delta N Nor_1 Nor_2 P Q Tav_1 i p fid01
(prewavelet250f.m)
function y=prewavelet250(x) % Fs=250 Hz
f=length(x); % se supone f=512 pts
% Reduciendo la Linea Base
[h,g,rh,rg] = daub(4);
yt=wt(x,h,g,5); % descomposicion al 5to nivel
isplit(yt,5,'','r.')
%yt(1:16)=zeros(1,16);
% 1-16:(0-7.8125Hz) 16-32:(7.8125-15.625Hz) 32-64:(15.625-31.25Hz)
138
% 64-128:(31.25-62.5Hz) 128-256:(62.5-125Hz)
for i=0:f/2-1
ytabv(i+1)=yt(i+1);
end
close all
y=ytabv;
( prewavelet250.m )
function y=prewavelet250(x) % Fs=250 Hz
f=length(x); % se supone f=512 pts
% Reduciendo la Linea Base
[h,g,rh,rg] = daub(4);
yt=wt(x,h,g,5); % descomposicion al 5to nivel
isplit(yt,5,'','r.')
%yt(1:16)=zeros(1,16);
% 1-16:(0-7.8125Hz) 16-32:(7.8125-15.625Hz) 32-64:(15.625-31.25Hz)
% 64-128:(31.25-62.5Hz) 128-256:(62.5-125Hz)
for i=0:f/2-1
ytabv(i+1)=yt(i+1);
end
close all
y=iwt(ytabv,rh,rg,4);
(lee12_entrenamiento.m)
% Copy Right ABV
% Lectura de Seales Normales
%
fid01 = fopen('16273.txt','r');
A = fscanf(fid01,'%5d'); % reads 5-digit decimal integers.
A = A';
p=length(A);
N=p-2; % Numero total de muestras
Ch=A(p-1); % Numero de Canales
%Inicio Cadena IF%
if Ch==2
% Se crean dos Subvariables
for i=1:N/2
Nor_1(i)=A(2*i-1);
Nor_2(i)=A(2*i);
end
elseif Ch==3 % Se crean tres Subvariables
for i=1:N/3
Nor_1(i)=A(3*i-2);
Nor_2(i)=A(3*i-1);
Nor_3(i)=A(3*i);
end
elseif Ch==4
% Se crean cuatro Subvariables
for i=1:N/4
139
Nor_1(i)=A(4*i-3);
Nor_2(i)=A(4*i-2);
Nor_3(i)=A(4*i-1);
Nor_4(i)=A(4*i);
end
else % Caso Ch==1
for i=1:N
Nor_1(i)=A(i);
end
end %FIN Cadena IF%
% Lectura de Seales con Arritmia Supra Ventricular
%
fid01 = fopen('812.txt','r');
A = fscanf(fid01,'%5d'); % reads 5-digit decimal integers.
A = A';
p=length(A);
N=p-2; % Numero total de muestras
Ch=A(p-1); % Numero de Canales
%Inicio Cadena IF%
if Ch==2
% Se crean dos Subvariables
for i=1:N/2
Asv_1(i)=A(2*i-1);
Asv_2(i)=A(2*i);
end
elseif Ch==3 % Se crean tres Subvariables
for i=1:N/3
Asv_1(i)=A(3*i-2);
Asv_2(i)=A(3*i-1);
Asv_3(i)=A(3*i);
end
elseif Ch==4
% Se crean cuatro Subvariables
for i=1:N/4
Asv_1(i)=A(4*i-3);
Asv_2(i)=A(4*i-2);
Asv_3(i)=A(4*i-1);
Asv_4(i)=A(4*i);
end
else % Caso Ch==1
for i=1:N
Asv_1(i)=A(i);
end
end %FIN Cadena IF%
% Lectura de Seales con Taqui Arritmia Ventricular
%
fid01 = fopen('cu15.txt','r');
A = fscanf(fid01,'%5d'); % reads 5-digit decimal integers.
A = A';
p=length(A);
N=p-2; % Numero total de muestras
140
141
Tav_1=Tav_1-Q;
Delta=max(Tav_1)-min(Tav_1);
Tav_1=Tav_1/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Tav_1=Tav_1-(sum(Tav_1)/P);
% Procesa Seal Arritmia Supra Ventricular
% Canal 1
P=length(Asv_1);
Q=min(Asv_1);
Asv_1=Asv_1-Q;
Delta=max(Asv_1)-min(Asv_1);
Asv_1=Asv_1/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Asv_1=Asv_1-(sum(Asv_1)/P);
% Canal 2
P=length(Asv_2);
Q=min(Asv_2);
Asv_2=Asv_2-Q;
Delta=max(Asv_2)-min(Asv_2);
Asv_2=Asv_2/Delta; % Rango de la Seal entre 0 y 1
% Si se desea un DC=0, agregar:
% Tav_1=Tav_1-(sum(Tav_1)/P);
% Inicio de Rutinas para mostrar las Seales Cardiacas...
zoom on
%figure(1)
%figure
%subplot(3,1,1), plot(Nor_1,'red'),title('Seal Normal')
%subplot(3,1,2), plot(Asv_1,'blue'),title('Arritmia Supra Ventricular')
%subplot(3,1,3), plot(Tav_1,'green'),title('Taquiarritmia Ventricular')
%figure(2)
%figure
%subplot(3,1,1), plot(Nor_2,'red'),title('Seal Normal')
%subplot(3,1,2), plot(Asv_2,'blue'),title('Arritmia Supra Ventricular')
%subplot(3,1,3), plot(Tav_2,'green'),title('Taquiarritmia Ventricular')
% Considerar:
% 1) 16265.txt
-->
Nor_1-->1900,Nor_2-->1900
% 2) 800.txt
-->
Asv_1-->640 ,Asv_2-->640
% 3) cu03.txt
-->
Tav_1-->1326
% Inicio del Procesamiento de la Red Neuronal...
% figure
% plot(Nor_1,'red')
% title('Normal sinus rhythm')
% title('Supraventricular Arrhythmia')
% title('Ventricular Tachyarrhythmia')
% xlabel('Time, s')
% ylabel('ECG')
142
%
N=512;
for i=1:N
Nor_16273(i)=Nor_1(i);
Asv_812(i)=Asv_1(i);
Tav_cu15(i)=Tav_1(i);
End
144
else if (part.isFile()) {
System.out.println("part as file" + part.getName());
// it's a file part
filePart = (FilePart) part;
filePart.writeTo(new File(dirName));
fileName = filePart.getFileName();
out.println("file; " + "; filename=" + fileName + ",
filePath="
+ filePart.getFilePath() + ", content
type="
+ filePart.getContentType() + ",
size=" + size);
}
}
} catch (IOException lEx) {
this.log( "error reading or saving file",lEx);
}
/*
* MultipartRequest mr = new MultipartRequest(request , "D:\\test2");
* System.out.println(mr.getParameter("userid"));
*/
String userid = paramPart.getStringValue();
File finalFile = new File ( finaldirName + File.separatorChar +
paramPart.getStringValue() + File.separatorChar + fileName);
File tempFile = new File ( dirName + File.separatorChar + fileName);
BufferedOutputStream buffer = null;
FileOutputStream out2 = null;
BufferedReader reader = null;
try {
out2 = new FileOutputStream(finalFile, true);
buffer = new BufferedOutputStream(out2);
reader = new BufferedReader(new FileReader(tempFile));
String temp2 = null;
while ( (temp2 = reader.readLine())!= null)
{
temp2 = temp2 + "\n";
buffer.write(temp2.getBytes());
}
buffer.close();
reader.close();
145
tempFile.delete();
}
catch( Exception e)
{
e.printStackTrace();
}
/*if (fileName != null) {
// the part actually contained a file
String temp = dirName + File.separatorChar +
paramPart.getStringValue();
System.out.println(" temp " + temp);
size = filePart.writeTo(new File(temp));
} else {
// the field did not contain a file
out.println("file; name=" + "; EMPTY");
}*/
out.flush();
}
}
Anlisis en el Tiempo.
Anlisis en Frecuencia.
Anlisis Wavelet.
Anlisis empleando Redes Neuronales.
Asimismo se realizo el modelado web empleando Servlets para desplegar un site donde
se gestiona la Base de Datos de los pacientes, en donde adicionalmente se pueden guardar
las seales ECG, as como la informacin adicional requerida para su diagnostico.
146
Apndice B
B.1: Glosario de Trminos
A continuacin se detalla algunos de los trminos usados en la tesis:
Trmino
Definicin
SE
FIIS
UML
TIC
J2EE
JVM
JSP
J2SE
J2ME
W3C
TCP/IP
RPC
IEEE
AIC
TIC
RPC
TCP
IP
Protocolo de Internet.
RMI
OMG
DCOM
RMI-IIOP
JNDI
JDBC
JTS
147
CWT
DWT
SWT
FT
FFT
WT
IWT
ECG
FIR
IIR
SNR
148
Nomenclatura :
f (t )
f [ n]
C ( a, b)
C[i, j ]
Funcin continua.
Funcin Discreta.
Coeficientes de la transformada Wavelet continua.
Coeficientes de la transformada Wavelet discreta.
Smbolo para " unin de ".
Smbolo para " inclusin de ".
Smbolo para " pertenece a ".
a ,b (t )
j , k [n]
a ,b (t )
j , k [ n]
Wavelet continua.
Wavelet discreta.
Funcin de escalado continua.
Funcin de escalado discreta.
h[n]
g[ n ]
G
H
G
H
G, H , G, H
I
W
N ( , 2 )
Matriz Identidad .
Matriz Wavelet.
Ruido blanco gausiano de media y varianza 2 .
s ( x)dx
s [n]
x[n]
149
Apndice C
Referencias de Internet
La siguiente lista es una recopilacin de dominios pblicos los cuales
fueron consultados durante el desarrollo de esta Tesis durante los primeros
meses del 2002 , algunos de ellos ya no estan disponibles debido al constante
cambio, motivo por el cual se adjunta su contenido en el CD elaborado por el
autor, el cual servir como aporte para futuras investigaciones en esta rea.
http://www.stats.bris.ac.uk/pub/reports/Wavelets/WavByTop.html
http://www.cosy.sbg.ac.at/ uhl/wav.html
Links a otras pginas dedicadas a wavelets y procesamiento de seales.
http://www.che.utexas.edu/ misra/wavelet.html
Pequea gua de libros y software para utilizacin de wavelets.
http://www-stat.stanford.edu/ wavelab/
Completo Software para Matlab.
http://www.isye.gatech.edu/ brani/
Pgina de Brani Vidakovic, Profesor investigador en el campo de wavelets aplicado a
problemas de estadstica y limpieza de ruido.
http://www.dsp.rice.edu/publications/
150
http://www.spd.eee.strath.ac.uk/ interact/fourier/fft.html
Tutorial sobre la Transformada Rpida de Fourier.
http://users.ox.ac.uk/ ball0597/Fourier/
Informacin variada sobre anlisis de Fourier.
http://www.spd.eee.strath.ac.uk/ interact/fourier/dft.html
Tutorial sobre la Transformada Discreta de Fourier.
http://www.med.harvard.edu/JPNM/physics/didactics/improc/intro/fourier1.html
Lista de direcciones online dedicadas a diferentes aplicaciones que utilizan tanto teora de
Fourier como de wavelets.
http://www.amara.com/current/wavelet.html
Completa pgina con links a software, libros, papers, dedicados tanto a teora como
aplicaciones de wavelets.
http://www.mame.syr.edu/faculty/lewalle/tutor/tutor.html
Tutorial de Wavelets.
_ html/index.html
Informacin sobre Fourier y Wavelet.
http://sepwww.stanford.edu/public/docs/pvi/toc
http://www.wavelet.org
donoho/
Pgina de Dave Donoho, cuya principal campo de investigacin es limpieza de ruido
utilizando mtodos estadsticos en conjunto con wavelets.
http://www-stat.stanford.edu/
http://www.ukc.ac.uk/IMS/statistics/people/T.Sapatinas/
rpolikar/WAVELETS/WTtutorial.html
Prctico tutorial wavelet.
http://www.public.iastate.edu/
151
Apndice D
D.1: Generalidades de los Microprocesadores
En este anexo se presentan los conceptos de las tecnologas de los
sistemas web y se discuten algunas metodologas de construccin de software
as como la tecnologa de los Microcontroladores de la familia Microchip.
Para
obtener
la
seal
ECG
de
simulacin
desde
el
152
Los pines de un
153
154
CPU
Memoria
Figura D.3: Arquitectura Von Newman.
155
Memoria
De Programa
Memoria
De Datos
CPU
Figura D.4: Arquitectura Harvard.
El
microcontrolador
dsPIC33FJ256GP710
posee
una
arquitectura
156
16 bit
window
Memoria de
Programa
(12MB)
24
dsPIC33F
RISC
MAC
CPU
(dsPIC)
16
Memoria de
Data
(64KB)
El Procesador Microchip
Es el elemento ms importante del microcontrolador y determina sus
principales caractersticas, tanto a nivel hardware como software. Se encarga de
direccionar la memoria de instrucciones, recibir la instruccin en curso, su
descodificacin y la ejecucin de la operacin que implica dicha instruccin, as
como la bsqueda de los operndoos y el almacenamiento del resultado. Existen
tres orientaciones en cuanto a la arquitectura u funcionalidad de los
procesadores actuales, estos son:
CISC (Computadores de Juego de Instrucciones Complejo): Un gran nmero de
procesadores usados en los microcontroladores estn basados en la filosofa
CISC. Disponen de ms de 80 instrucciones maquina en su repertorio algunas
de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para
una ejecucin.
RISC (Computadores de Juego de Instrucciones Reducido): Tanto la industria de
los computadores comerciales como la de los microcontroladores estn
decantndose hacia la filosofa RISC. En estos procesadores el repertorio de
instrucciones maquine es muy reducido y las instrucciones son simples y,
generalmente, se ejecutan en un ciclo. La sencillez y rapidez de estas
instrucciones permiten optimizar el hardware y el software del procesador.
SISC (Computadores de Juego de Instrucciones Especifico): En los
microcontroladores destinados a aplicaciones muy concretas, el juego de
157
1 30 KB
Data Memory
8-channel
DMA
Interrupt
Control
40 MIPS 16-bit
Peripheral Bus
Memory Bus
(1-2) I2C
16b ALU
16 x 16b W
Register Array
17b x 17b
Multiply
Dual AGU
X&Y
JTAG
Interface
Barrel
Shifter
(0-2) ECAN
DSP Engine
Dual 40b
Accumulators
(4-8) MC PWM
(1-2) SPI
Input Capture
Output Compare/PWM
Codec I/F
MC QEI
18 - 100-pin Packages
158
INTRC w/PLL
(2-5) 16b/32b Timers
12 - 144 KB
0.5 - 8 KB
1 - 4 KB
Flash Memory
Data Memory
EEPROM
Memory Bus
16b ALU
16 x 16b W
Register Array
17b x 17b
Multiply
Dual AGU
X&Y
JTAG
Interface
Barrel
Shifter
DSP Engine
Dual 40b
Accumulators
Peripheral Bus
30 MIPS 16-bit
Interrupt
Control
(1-2) I2C
(1-2) SPI
Input Capture
Output Compare/PWM
(0-2) CAN
Codec I/F
MC PWM
MC QEI
18 - 80-pin Packages
12 256 KB
Flash Memory
1 16 KB
Data Memory
8 Channel
INTRC w/PLL
DMA
Memory Bus
16 x 16b W
Register Array
17b x 17b
Multiply
Address
Generator
JTAG
Interface
Multi-bit
Shifter
Peripheral Bus
Interrupt
16b ALU
Control
Interrupt
Control
(1-2) I2C
(1-2) SPI
Input Capture
Output Compare/PWM
(0-2) ECAN
18 - 100-pin Packages
INTRC w/PLL
16 128 KB
Flash Memory
4 8 KB
Data Memory
Memory Bus
16 x 16b W
Register Array
17b x 17b
Multiply
Address
Generator Unit
JTAG
Interface
Multi-bit
Shifter
Input Capture
Peripheral Bus
Interrupt
16b ALU
Control
Interrupt
Control
Output Compare/PWM
(2) UART w/LIN & IrDA
(2) SPI
(2) IC
(2) Comparators
CRC
Real Time CC
PMP
28 - 100-pin Packages
160
23
0
0
PC<22:1>
Espacio de Usuario
Vector Reset
Tabla del Vector de Interrupcin
Tabla Alternativa del Vector de
Interrupcin
0 0 0 0 0 0h
0 0 0 0 0 4h
0 0 0 1 0 4h
0 0 0 2 0 0h
Espacio de
Configuracin
7 F F F F Eh
Registros de Configuracin
ID del Dispositivo
F F F F F Eh
161
Libera recursos del CPU para tareas que realmente requieran dicho
recurso.
Direccin
Byte MS
2 KB
Espacio SFR
0x0001
0x07FF
0x0801
16-bits
MSB
LSB
Espacio SFR
Direccin
Byte LS
0x0000
0x07FE
0x0800
RAM Data X
Espacio SRAM
RAM Data Y
2 KB
Puerto-Dual
DMA RAM
Memoria de
Data Cercana
8 KB
0x1FFE
0x8001
No
implementado
Mapeo opcional
hacia la Memoria de
Programa usando
PSV
0xFFFF
0xFFFE
Interrupciones
Las interrupciones constituyen quiz el mecanismo ms importante para la
conexin del microcontrolador con el mundo exterior, sincronizando la ejecucin
de programas con acontecimientos externos. El dsPIC33F tiene 30 fuentes de
interrupcin y 4 excepciones de procesador, los cuales estn basados en un
esquema de prioridades.
162
Priorida
d
Esttica
CPU
Interrupcin
del
CPU
8
Interrupts
7
0
Prioridad
Natural
PRIORIDAD
DEL CPU
Prioridad Seleccionable
por el Usuario
TRAPS
15
Controlador de
Interrupcin
Direccin
Vector de
Direccin
117
Figura D.12: Organizacin de la Memoria de Datos.
163
registro IFSx. El IRQ causa una interrupcin que ocurre si el correspondiente bit
en el registro de habilitacin de interrupcin IECx es igual a 1.
Si hay una IRQ pendiente con una prioridad de mayor nivel que la
prioridad del proceso actual en los bits del IPL, el proceso ser interrumpido. El
procesador entonces almacena el contador de programa y el byte bajo del
registro de estado del procesador (SRL), como se muestra en la figura 5.2. El
byte bajo del registro de estado contiene el nivel de prioridad del proceso actual.
El CPU es responsable de leer la Tabla de Vectores de Interrupcin (IVT) y
transferir la direccin que contiene el vector de interrupcin al contador de
programa. La tabla de vectores de interrupcin (IVT) y la tabla de interrupciones
alternativa (AIVT) estn cerca del comienzo del programa de memoria
(0x000004). EL IVT y el AIVT se ven en la figura 2.12. Las interrupciones y
excepciones son habilitadas, priorizadas y controladas usando registros con
funciones especiales:
o IFS0<15:0>, IFS1<15:0>, IFS2<15:0>
Todas las banderas de peticin de interrupcin se encuentran en estos tres
registros. Las banderas son activadas por sus respectivos perifricos o seales
externas y son reseteadas va software.
o IEC0<15:0>, IEC1<15:0>, IEC2<15:0>
Todos los bits de control que habilitan interrupciones estn en estos tres
registros. Estos bits de control son usados para individualmente habilitar
interrupciones desde los perifricos o seales externas.
o IPC<15:0> IPC<7:0>
El nivel de prioridad asignable por el usuario asociado con cada una de estas
interrupciones esta centralmente en estos doce registros.
o IPL<3:0>
El nivel actual de prioridad esta explcitamente almacenado en los bits IPL.
IPL<3> esta presente en el registro CORCON, as como IPL<2:0> esta presente
en el registro de estado (SR: Status Register) en el ncleo del procesador.
o INTCON1<15:0>, INTCON2<15:0>
Funciones de control global de interrupciones se derivan de estos dos registros,
INTCON1 contiene las banderas de control y estado para las excepciones del
procesador. El registro INTCON2 controla el comportamiento de las seales de
peticin de interrupcin externa y el uso de la tabla alternativa de interrupciones.
164
es ledo como cero 0. Estos bits definen el nivel de prioridad asignado a una
interrupcin en particular, por el usuario. Los niveles de prioridad elegibles
empiezan en 0, como la prioridad ms baja, y nivel 7, como la ms alta prioridad.
Dado que a ms de una interrupcin se le puede asignar la misma prioridad, se
provee una tabla de prioridades con un nivel dado de prioridad, este mtodo se
llama orden natural de prioridades (Natural Order Priority), con lo que si una
interrupcin tiene la misma prioridad que otra, entonces se recurre a la prioridad
dada en tabla natural de prioridades, y la que interrupcin esta primero en esta
tabla se ejecuta primero.
165
166
167
16
Word/Byte
Write
UTX8
UxMODE
UxTXREG
UxSTA
Transmit Control
- Control UxTSR
- Control Buffer
-Generate Flags
Transmit FIFO
Load UxTSR
UxTXIF
UTXBRK
(Start)
(Stop)
UxTX
Parity
Generator
16
Divider
UxCTS
168
16
Word Read
UxMODE
URX8UxRXREG
UxSTA
Receive Control
-Generate Flags
-Generate Interrupt
-Shift Data Character
Receive FIFO
Load UxRXREG
LPBACK
U x R X IF
UxTX
ReceiveShift Register
UxRSR
UxRX
-Start bit
detect
-Parity check
16 Divider
BCLKx/UxRTS
BCLKx
UE N
Selection UxRTS
UxCTS
UxCTS
169
1. Configurar el UART:
2. Habilitar el UART seteando el bit UARTEN (UxMODE<15>).
3. Setear el bit UTXEN (UxSTA<10>), es decir habilitar la transmisin.
4. Escribir el byte a ser transmitido en UxTXREG.
5. Un bit de interrupcin se genera UTXISEL (UxSTA<15>).
Para la recepcin de datos se deben seguir los siguientes pasos:
1. Configurar el UART.
2. Habilitar el UART.
3. Una interrupcin se genera. URXISEL bits (UxSTA<7:6>).
4. Leer el bit OERR para determinar si existen errores.
5. Leer el dato recibido de UxRXREG.
Listo para
ibi
Puedo enviar
DTE
RT
RT
16bit
Mi c r
o
CT
CT
DCE
DTE
Mod
em
16bit
Mi c r
o
Listo para
ibi
RT
RT
DTE
PC
CT
CT
Ok, go ahead
d
d
RS232
Modo Simple
RS232
para
desarrollar
aplicaciones
para
los
microcontroladores
171
172
Fuente en C
Compilador
Archivo Asembler
PA
Fuente en Asembler
Librerias
Asembler
Enlazador
Archivo Objeto
Archivo Ejecutable
173
o Estndar ANSI C
El compilador MPLAB C30 es un compilador totalmente validado que conforma
el estndar ANSI C como fue definido por la especificacin ANSI descrita por
Kernighan y Ritchies. El estndar ANSI C incluye extensiones a la definicin
original C que ahora con caractersticas estndar del lenguaje. Estas
extensiones incrementan la portabilidad y ofrece una mayor capacidad.
o Optimizacin
El compilador utiliza un conjunto sofisticado de optimizacin que emplea muchas
tcnicas avanzadas para generar eficiente y compacto cdigo desde cdigo
fuente C. Esta optimizacin toma ventaja determinadas particularidades del
dsPIC.
o Soporte de libreras del Estndar ANSI C
MPLAB C30 es distribuido con una completa librera del estndar ANSI C. Todas
las funciones de la librera han sido validadas, y conforman el estndar de
librera ANSI C. Las libreras incluyen funciones para manejo de caracteres,
asignacin de memoria dinmica, conversin de datos y funciones matemticas.
Las funciones estndar de Entrada/Salida para la manipulacin de archivos
tambin estn incluidas y distribuidas, las cuales soportan acceso total al
sistema de archivos usando el simulador de lnea de comandos.
174
Applet
Es bajado desde un Servidor Web y es ejecutado en un Browser.
Java Beans
Son componentes de software hechos en Java, su desarrollo se basa en un
175
Caractersticas:
Servlets
Un servlet es una clase Java que corre en el Web Server (o un proceso
lgicamente vinculado al Web Server). Un servlet acepta los requerimientos
HTTP y responde con pginas HTML.
El HTML es normalmente dinmico y refleja informacin que el servlet
obtiene de varios sistemas empresariales.
Caractersticas:
176
JSP
Los Java Server Pages son similares a un HTML solo que el contenido se
construye dinmicamente dentro de la pgina web. Los JSP soportan todos los
tags de HTML.
El diseo puede variar sin modificar el contenido dinmico y es una
extensin de la tecnologa de los servlets y esta basado en la reutilizacin de
componentes.
Caractersticas:
Ventajas:
Frente a un ASP:
Frente a un Servlet:
Facilita el mantenimiento.
177
Tecnologas J2EE
Las tecnologas J2EE estn basadas en componentes, servicios y
comunicaciones.
Componentes
Applets.
Application Clients.
EJBs.
Servicios
Comunicacin
178
Servicios de Nombres:
Servicios de Transacciones:
Servicio de Comunicaciones:
Java Mail.
Contenedor J2EE
Cada componente corre dentro de un contenedor que es ofrecido por el
proveedor de la plataforma, este contenedor provee servicios especficos a la
implementacin y ejecucin del componente (ciclo de vida, seguridad,
transacciones, etc) Los servicios brindados dependen del tipo de contenedor.
Plataformas Soportadas
Sistemas Operativos:
Solaris 8.
179
HP/UX 11.
Apache.
Especificaciones implementadas:
J2EE 1.3.
Web Services
UDDI clients.
Seguridad.
180
muchos inconvenientes.
181
aplicacin.
Arquitectura de n niveles
Este tipo de sistema puede dar cabida a varias configuraciones diferentes. En
una arquitectura de n niveles, la lgica de aplicacin est lgicamente dividida
por funciones y no fsicamente. Una arquitectura de n niveles se descompone en
las siguientes partes:
Una interfaz de usuario que maneja la interaccin del usuario con la aplicacin.
Esta puede ser un navegador Web que se transmite mediante la salida WAN de
un firewall, una aplicacin de escritorio o incluso un dispositivo inalmbrico.
182
183
Solucin:
vista de la estructura.
vista de la fuente.
184
Solucin:
Solucin:
185
observers.
5. El Modelo notifica a las Vistas cuando algo interesante sucede.
6. El Botn notifica a los oidores de acciones (action listeners) cuando algo
interesante sucede.
7. Las Vistas se adicionan ellas mismas al Modelo para poder ser notificadas.
8. Los Oidores de Acciones (Action listeners) se adicionan ellos mismos al Botn
para poder ser notificados.
9. Generalizar: Observadores se aaden por si mismos al sujeto.
Solucin
186
Solucin
1. Define un tipo de interface que es una abstraccin para los objetos primitivos.
2. Los Objetos Composite coleccionan objetos primitivos.
3. Clases primitivas y Composite implementan el mismo tipo de interface.
4. Cuando se implementa un mtodo desde el tipo de interface, la clase
composite aplica el mtodo a sus objetos primitivos y combina el resultado.
1.
Los
objetos
Componentes
pueden
ser
decorados
(visual
con
comportamiento mejorado).
2. El objeto decorado puede ser usado del mismo modo que el objeto no
decorado.
3. La clase del componente no desea tomar responsabilidad de la decoracin.
4. Ah puede existir un conjunto abierto cerrado de posibles decoraciones.
Solucin
Solucin
1. Defina una super clase que tenga un mtodo para el algoritmo y mtodos
abstractos para las operaciones primitivas.
2. Implemente el algoritmo para llamar a las operaciones primitivas en el orden
apropiado.
3. No defina las operaciones primitivas en la super clase, o en todo caso
defnalos para que tengan un comportamiento apropiado por defecto.
4. Cada subclase define las operaciones primitivas pero no el algoritmo.
Solucin
1. Defina una clase facade que exponga todas las capacidades del sub sistema
como mtodos.
2. El mtodo facade delega las solicitudes a las clases del sub sistema.
3. Las clases del sub sistema no conocen acerca de la clase facade.
188
Solucin
1. Defina un tipo de interface prototipo que sea comn a todos los objetos
creados.
2. Proporcione un objeto prototipo para cada tipo de objeto que el sistema crea.
3. Clone el objeto prototipo cada vez que el nuevo objeto del tipo dado sea
requerido.
relacionadas.
Solucin
189
Contexto
1. Se desea implementar comandos que se comporten como objetos:
Solucin
1.
comando.
2. Proporcionar mtodos en el tipo de interface command para manipular el
estado de los objetos command.
3. Cada clase concreta command implementa el tipo de interface command.
4. Para invocar el command, llamar al mtodo execute.
Solucin
190
Solucin
1. Defina una clase proxy que implemente el tipo de interface del sujeto. El Proxy
mantiene una referencia al sujeto real, o de otro modo conocer como
localizarlo.
2. El cliente debe usar un objeto proxy.
3. Cada mtodo proxy debe invocar el mismo mtodo en el sujeto real y
proporcionar las modificaciones necesarias.
1. Todos los clientes necesitan acceder a una nica instancia compartida de una
clase.
2. Se desea asegurar que ninguna instancia adicional pueda ser creada
accidentalmente.
Solucin
191
Solucin
1.
2.
Cada clase element define un mtodo accept que invoca el mtodo del
elemento visitante enlazado en el parmetro del visitor.
3. Para implementar una operacin, defina una clase que implemente el tipo de
interface visitor y proporcione las operaciones de accin para cada tipo de
elemento.
Adicionalmente existen otros Patrones de Diseo complementarios:
Abstract Factory.
Bridge.
Builder.
Chain of Responsibility.
Flyweight.
Interpreter.
Mediator.
192
Memento.
State.
193
Bibliografa
[1] A. Bravo y E. Rodrguez: Wavelets aplicado a un sistema Neuronal para la
Identificacin de Anomalas en Seales Electrocardiogrficas. Libro de actas
XI Reunin de la Asamblea General ISTEC 2001, (Puerto Rico), Diciembre
2001 .
Medicine
14Th
Edition
Harrison's Principles of
McGraw-Hill
Health
Professions
Division ,1998.
[8] David Cuesta Frau: Estudio de mtodos para procesamiento y agrupacin de
Seales Electrocardiogrficas. Tesis Doctoral, Universidad Politcnica de
Valencia, Septiembre 2001.
[9] John G. Webster: Design of Cardiac Pacemakers. IEEE PRESS, 1995.
[10] Joseph D. Bronzino: The Biomedical Engineering Handbook. IEEE PRESS
and CRC PRESS, 1995.
[11] Eugenio Hernndez y Guido Weiss:
PRESS, 1996.
[12] Mladen Victor Wickerhauser:
194
[15] Robert S. H. Istepanian and Arthur A. Petrosian: Optimal Zonal WaveletBased ECG Compression for a Mobile Telecardiology System. IEEE
Transactions on Information Technology in BioMedicine, VOL. 4, N 3, pp.
200-211, September 2000.
[16] N. Nikolaev, Z. Nikolov, A. Gotchev, and K. Egiazarian: Wavelet Domain
Wiener Filtering for ECG Denoising using Improved Signal Estimate IEEE, pp.
3578 3581 , 2000 .
[17] Rosaria Silipo and Carlo Marchesi: Artificial Neural Networks for Automatic
ECG Analysis IEEE Transactions on Signal Processing, vol. 46, N 5, pp.
1417 1425 , May 1998 .
[18] Valtino X. Afonso, Willis J. Tompkins, Truong Q. Nguyen, and Shen Luo :
ECG Beat Detection Using Filter Banks IEEE Transactions on Biomedical
Engineering, vol. 46, N 2, pp. 192 202 , February 1999 .
[19] Jun Yao, Qiang Gan, Xue-dong Zhang, and Jin Li : Pruning Algorithm in
Wavelet Neural Network for ECG Signal Classification Proceedings of the
20th Annual International Conference of the IEEE Engineering in Medicine
and Biology Society, vol. 20, N 3, pp. 1482 1485 , 1998 .
[20] Shubha Kadambe, Robin Murray, and G. Faye Boudreaux-Bartels : Wavelet
Transform-Based QRS Complex Detector IEEE Transactions on Biomedical
Engineering, vol. 46, N 7, pp. 838 848 , July , 1999 .
[21] Zmray Dokur, Tamer lmez, and Ertugrul Yazgan :
Classification
Using
The
Neural
Network
And
ECG Waveform
Wavelet
Transform
195
Feasibility Study of Complete Neural Net Based Classification of SignalAveraged High-Resolution ECGs IEEE Computers in Cardiology, pp.
575 578 , 1999 .
An Artificial-
Fetal ECG
196
[31] Paul Lander and Edward J. Berbari: Time-Frequency Plane Wiener Filtering
of
the
High-Resolution
ECG:
Background
and
Time-Frequency
[32] Paul Lander and Edward J. Berbari: Time-Frequency Plane Wiener Filtering
of the High-Resolution ECG: Development and Application IEEE Transactions
on Biomedical Engineering, Vol. 44 , pp. 256 265 , N 4, April 1997 .
[33] Ahmet Baykal, Ravi Ranjan, and Nitish V. Thakor:
Ventricular
Fibrillation
Duration
by
Autoregressive
Estimation of the
Modeling
IEEE
Modeling of Cardiovascular
and
Group-Delay
Electrocardiograms
Characteristics
of
Ventricular
Signal-Averaged
Tachycardia
IEEE
[44] S. C. Tai:
in
Signal-Averaged
Electrocardiography
Systems
IEEE
[47] G. R. Shaw and P. Savard: On the Detection of QRS Variations in the ECG
198
Genetic Design of
Event-
199
[56] Seth Suppappola and Ying Sun: Nonlinear Transform for ECG Signals for
Digital QRS Detection: A Quantitative Analysis IEEE Transactions on
Biomedical Engineering, Vol. 41 , pp. 397 340 , N 4 , April 1994 .
[57] Nitish V. Thakor, Ananth Natarajan and Gordon F. Tomaselli:
Multiway
[58] Mohammed Ferdjallah and Ronald E. Barr: Adaptive Digital Notch Filter
Design on the Unit Circle for the Removal of Powerline Noise from Biomedical
Signals IEEE Transactions on Biomedical Engineering, Vol. 41 , pp. 529 536 ,
N 6 , June 1994 .
[59] Jurgen G. C. Kemmelings, Andr C. Linnenbank, Sylvia L. C. Muilwijk, Arne
SippensGroenewegen, Abraham Peper, and Cornelis A. Grimbergen:
Automatic QRS Onset and Offset Detection for Body Surface QRS Integral
Mapping of Ventricular Tachycardia IEEE Transactions on Biomedical
Engineering, Vol. 41 , pp. 830 835 , N 9 , September 1994 .
[60] Kazuo Yana, J. Philip Saul, Ronald D. Berger, Michael H. Perrott, and
Richard J. Cohen: A Time Domain Approach for the Fluctuation Analysis of
Heart Rate Related to Instantaneous Lung Volume IEEE Transactions on
Biomedical Engineering, Vol. 40 , pp. 74 81 , N 1 , January 1993 .
[61] P. E. Trahanias:
[62] Yasemin M. Akay, Metin Akay, Walter Welkowitz, John L. Semmlow, and
John B. Kostis : Noninvasive Acoustical Detection of Coronary Artery
Disease: A Comparative Study of Signal Processing Methods IEEE
Transactions on Biomedical Engineering, Vol. 40 , pp. 571 578 , N 6 , June
1993 .
[63] Gil Nave and Arnon Cohen: ECG Compression Using Long-Term Prediction
IEEE Transactions on Biomedical Engineering, Vol. 40 , pp. 877 885 , N 9 ,
200
September 1993 .
[64] T. Rolf Turner, Peter J. Thomson, and Murray A. Cameron: Statistical
Discriminant Analysis of Arrhythmias using Intracardial Electrograms IEEE
Transactions on Biomedical Engineering, Vol. 40 , pp. 985 989 , N 9 ,
September 1993 .
[65] Wilfried Philips: ECG Data Compression with Time-Warped Polynomials
IEEE Transactions on Biomedical Engineering, Vol. 40 , pp. 1095 1101 , N 11 ,
November 1993 .
[66] Mario Merri, Michela Alberti, and Arthur J. Moss:
Dynamic Analysis of
201
A Simple
Electrical-Mechanical Model of the Heart Applied to the Study of ElectricalMechanical Alternans IEEE Transactions on Biomedical Engineering, Vol. 38 ,
pp. 551 559 , N 6 , June 1991 .
[72] Nitish V. Thakor, Yi-Sheng Zhu: Applications of Adaptive Filtering to ECG
Analysis: Noise Cancellation and Arrhythmia Detection IEEE Transactions on
Biomedical Engineering, Vol. 38 , pp. 785 793 , N 8 , August 1991 .
[73] Hans F. Schels, Ralph Haberl, Gerhard Jilge, Peter Steinbigler, and Gerhard
Steinbeck:
[78] Gary M. Friesen, Thomas C. Jannett, Manal Afify Jadallah, Stanford L. Yates,
Stephen R. Quint, and H. Troy Nagle : A Comparison of the Noise Sensitivity
of Nine QRS Detection Algorithms IEEE Transactions on Biomedical
Engineering, Vol. 37 , pp. 85 93 , N 1 , January 1990 .
[79] M. L. Ahlstrom and W. J. Tompkins : Digital Filters for Real-Time Signal
Processing Using Microprocessors IEEE Transactions on Biomedical
202
Detection of ECG
203