Sie sind auf Seite 1von 4

UNIVERSIDA NACIONAL DEL CALLAO

FACULTAD DE INGENIERA ELECTRICA Y ELECTRNICA


DEPARTAMENTO DE INGENIERA ELECTRONICA

LABORATORIO DE MICROCONTROLADORES
LABORATORIO NRO.02
TITULO: CONTROL DE PUERTOS Y DESARROLLO DE RETARDOS

INTRODUCCION

La tarea ms bsica que podemos hacer con un microprocesador es sustituir a un circuito combinacional o
secuencial.
Podemos encender una luz para cierta combinacin de entradas, conectar un bomba cuando el nivel de un
depsito sea menor de cierto umbral y pararla cuando supere otro umbral, activar una alarma cuando se
active algn sensor y la alarma est armada, etc.
Para poder hacer estas cosas, el microprocesador necesitar tener entradas y salidas digitales, igual que las
de cualquier puerta lgica.
El microprocesador dsPIC30F4013 tiene 30 patillas que pueden ser, a voluntad nuestra, entradas o salidas,
de forma que podemos hacer, por ejemplo, un circuito secuencial con 10 funciones y15 entradas. De
todos modos, el tiempo de respuesta de esas funciones es mucho mayor que el de las funciones realizadas
con puertas lgicas, aunque en la mayora de los casos ese tiempo no es demasiado importante; que
la alarma suene 1 milisegundo despus de abrir la puerta no parece grave.
Ahora bien, estas entradas y salidas digitales tienen niveles pequeos, tpicamente de 0 a 3,3 V o de 0 a 5
V, por lo que necesitaremos unos circuitos que harn de interface entre estos niveles (0 a 3,3 V o DE 0 A
5v) y los niveles con los que estemos trabajando, 220 VAC, 24 VDC o cualquier otra tensin

Entradas/salidas digitales en el dsPIC30F4013


A partir de la configuracin de pines vamos a ver los puertos de que dispone este microcontrolador.

PORTA 1 pin. RA11


PORTB 13 pines. RB0 a RB12
PORTC 3 pines. RC13, RC14 y RC15
PORTD 6 pines. RD0, RD1, RD2, RD3, RD8, RD9
PORTE Ningn pin.
PORTF 7 pines. RF0 aRF6

En resumen tenemos 30 pines de entrada y salida.


Cada una de ellas puede ser entrada o salida independientemente de las otras, aunque algunas tienen
alguna peculiaridad.

La configuracin de pines puede parecer absurda, ya que por ejemplo, el puerto A solo tiene el pin RA11;
esto se debe a que existen micros con ms pines que tendrn los puertos completos y al tener que seleccionar
solamente 30 pines nos hemos quedado con los ms importantes (el pin RA11 tambin es el pin de
interrupcin externa, RC13, RC14 y RC15 tienen otras funciones como comunicacin serie).
En el diagrama de pines del micro se observa que la mayora de pines tienen varios nombres, cada nombre
se refiere a una de sus funciones.

MSc. Jacob Astocondor Villar 1


Programacin de los puertos de entrada/salida paralelos
En general, los puertos de entrada/salida tienen un funcionamiento similar.
Para cada puerto existen tres registros:
TRISX
PORTX
LATX. La X indica cualquiera de los puertos que tiene el microprocesador, A, B, C, D, E o
F.
REGISTRO TRISX
Este registro sirve para indicar si un pin va a ser salida o no.
Un 0 en un bit de este registro indica que el pin correspondiente es una salida.
Un 1 indica que el pin es entrada.
Siendo ms preciso no es exactamente as, los pines siempre funcionan como entrada, y cuando ponemos
el bit TRIS correspondiente a 1 indicamos que ponemos la salida en alta impedancia, y por lo tanto no
funciona como salida, pero cuando ponemos TRIS a 0 la salida impone su nivel, pero al mismo tiempo
siempre funciona como entrada, aunque salvo algn problema en el circuito (por ejemplo una salida
cortocircuitada a masa), deberemos leer lo que hemos escrito en la salida.
Adems, podemos tambin leer la palabra TRISX, conociendo lo que previamente habamos escrito en
TRISX.

REGISTRO PORTX
Con este registro nos comunicamos con el exterior.
Al leer el registro leemos un 0 si la tensin en la entrada est a nivel bajo y un 1 si la tensin est a nivel
alto, al escribir el registro hacemos que fuera aparezcan 0 V. o 5 V (3,3V.). Dependiendo de si hemos
escrito un 0 o un 1. El nivel alto y el bajo no son valores fijos, sino que hay un margen de valores posibles.

REGISTRO LATX
Este es un registro que no exista en otros micros, y podemos realizar programas sin utilizarlo.
Este registro es el LATCH de salida. Una escritura en PORTX y en LATX hacen exactamente lo mismo,
escriben en el LATCH y si est configurado como salida, el valor aparece en el pin de salida.
En la lectura es donde se diferencian. En los pines que solo son entradas no coincidir LATX y PORTX.
En las que adems son salidas, normalmente leeremos lo mismo de las dos formas, pero si fuera hay un
cortocircuito y en PORTX o LATX hemos escrito un 1, al leer LATX obtendremos el 1, pero al leer PORTX
leeremos un 0, ya que es la tensin que realmente hay en el pin. Al leer LATX leemos el ltimo valor escrito
por medio de PORTX o LATX y al leer PORTB leemos directamente el valor de tensin del pin (1 o 0).

Nota: Aunque podramos utilizar indistintamente PORT y LAT para escribir datos, en el puerto B ocurren
cosas extraas. Para evitar ese problema debemos usar siempre LAT para escribir datos y PORT para leer.
De este modo todos los puertos funcionan como se espera.

Caso:
TRISB = 0b1111000011110101;
// Los pines RB15, RB14 y RB13 no existen en este micro. Los configuramos
// como entradas, pero podemos tambin configurarlos como salidas
// Los pines RB11, 10, 9, 8, 3 y 1 son entradas y salidas
// Los pines RB12, 7, 6, 5, 4, 2 y 0 son entradas
LATB = 0b1010101000111100;
// A los pines que son entradas o que no existen no les pasa nada
// Los pines salidas si que sern afectados:
// RB11=1 RB10=0 RB9=1 RB8=0 RB3=1 RB1=0
Entrada = PORTB;
// Cada bit de la variable entrada tomar un valor dependiendo
// de la tensin que haya en el pin correspondiente. En los pines que no existen se lee 0
// Los bits que son salidas leern el valor que se haba escrito
// salvo algn problema en el circuito externo, un cortocircuito,
// varias salidas en paralelo, etc
// Los bits que son exclusivamente entradas leern un 0 o 1 dependiendo de la
// tensin externa.

MSc. Jacob Astocondor Villar 2


Registros utilizados en las entradas salidas paralelo

Por defecto todos los pines estn configurados en su funcin de E/S digital y adems siempre como entrada.
Existe una excepcin, que ms bien parece un fallo en el diseo del microcontrolador. Para poder utilizar
los pines del Puerto B como entradas/salidas digitales hay que indicar en el registro ADPCFG que no se va
a utilizar la entrada analgica correspondiente a ese pin.
Los pines del RB0 al RB12 pueden ser tambin entradas analgicas.
Si no vamos a utilizar ninguna entrada analgica diremos que los 13 pines son digitales:
ADPCFG=0bXX11111111111111; // X indica que da igual lo que pongamos 0 o 1.
Obviando este problema podemos decir que por defecto todos los pines del micro funcionan como
entrada/salida paralelo. Si se utilizan para alguna otra funcin dejarn de tener esta funcin inicial.

ENUNCIADO

Este LABORATORIO presenta el diseo de un prototipo que permitir el control total de la transmisin de
potencia en un motor DC (corriente continua), de tal manera, que se pueda ajustar el sentido de giro del
motor mediante un interruptor , ajustndose a las necesidades del usuario
La transmisin de potencia al motor, se realizar utilizando una etapa de potencia controlada por el
microcontrolador dsPIC30F4013

OBJETIVOS
En este laboratorio tal como se ha comentado en el apartado anterior (manejo de los puertos) , se centrar
en la recopilacin de las configuraciones esenciales para el control ptimo del motor, con los componentes
que existen hoy en da y con una configuracin fcil de ajustar, incluyendo la regulacin del sentido de giro
del motor , posteriormente se realizara el control de velocidad

CIRCUITO EXPERIMENTAL

dsPIC30f4013

PROGRAMACION
Desarrollo del programa en asembler

Escribir el programa en el MPLAB

MSc. Jacob Astocondor Villar 3


.equ __30f4013,1
.include "p30f4013.inc"
; Configuration bits:
;..............................................................................
config __FOSC,CSW_FSCM_OFF&XT_PLL4 ;use cristal oscilador con el 4x PLL
config __FWDT,WDT_OFF ;Desabilitado Watchdog Timer
config __FBORPOR,PBOR_ON&MCLR_EN
;Set Brown-out Reset voltage and
;and set Power-up Timer to 16msecs
config __FGS,CODE_PROT_OFF ;Desabilitado protecion de codigo
; Declaracin de variables y subprocesos
.equ cont,#0x0810
.equ cont1,#0x0812
.global xx
.global yy
.global __reset
.text
;*************Programa principal *****************
__reset:
goto main
.org 100
main:
; mov #_SP_init,W15 ;inicializa el SP
; mov #_SPLIM_init,W0
; mov W0,SPLIM
nop
;*******************************configuration de puertos**************
mov #0x0080,W0
mov W0,TRISB
;***********************************************
bucle: ; verifica el estado del interruptor abierto o cerrado?
BTSC PORTB,#07 ; El BIT 7 chequear interruptor salta si es cero o cerrado
bra bucle
;*********************************************
call xx
call yy
bra bucle
;************************************************
xx:
mov #0x0001,W1
mov W1,PORTB
call delay
return
yy:
mov #0x0002,W1
mov W1,PORTB
call delay
return
;*************************************************************
delay: ;Subrutina de Retardo en dos lazos
mov # 0xffff ,W2
mov W2,cont
YY: mov # 0x00ff, W1
mov W1,cont1
XX: dec cont1
bra NZ,XX
dec cont
bra NZ,YY
return
;****************************************************
.end
Para el informe final
Se pide
a) Implementar el sistema
b) Desarrollar el programa
c) Generar el archivo *.hex
d) Simular el sistema
e) Grabar el programa en el dsPIC
f) Realizar pruebas

MSc. Jacob Astocondor Villar 4

Das könnte Ihnen auch gefallen