Sei sulla pagina 1di 23

Instituto Tecnolgico de Durango

Depto. De Ingeniera Elctrica y Electrnica


Ingeniera electrnica

Microcontroladores
Unidad 1

Prctica 1. Encendido y apagado de leds.

Facilitador: Miguel ngel Esparza vila

Alumna: Leslie Yareli Guerrero Lares

No. De control: 14041574


ndice

Introduccin ................................................................................................... 1

Marco terico.............................................................................................. 2

Diagrama de flujo ...................................................................................... 14

Cdigo en MPLAB (ensamblador) .............................................................. 15

Cdigo en c (mikroc) ..................................................................................... 19

Simulacin en proteus ............................................................................... 20

Implementacin con pickit 2 ..................................................................... 22

Resultados ................................................................................................ 22

Conclusiones ............................................................................................. 23
Introduccin.

El objetivo de esta prctica es familiarizarnos con el uso de MPLAB, la


simulacin en proteus y la utilizacin fsica del dspic33fj12gp202.
Comenzaremos observando las generalidades de los microcontroladores,
veremos los dspic, luego nos centraremos en nuestro dispositivo y veremos
cmo avanzar en los diversos programas.
Marco terico.
Qu es un microcontrolador?

Un microcontrolador es un computador completo (microprocesador + E/S +


memoria + otros perifricos), aunque de limitadas prestaciones, que est
contenido en el chip de un circuito integrado programable y se destina a
gobernar una sola tarea con el programa que reside en su memoria. Sus
lneas de entrada/salida soportan el conexionado de los sensores y
actuadores del dispositivo a controlar.
Arquitectura bsica

Aunque inicialmente todos los microcontroladores adoptaron la


arquitectura clsica de von Neumann, en la actualidad se impone la
arquitectura Harvard.

La arquitectura de von Neumann se caracteriza por disponer de una sola


memoria principal donde se almacenan datos e instrucciones de forma
indistinta. A dicha memoria se accede a travs de un sistema de buses nico
(direcciones, datos y control).
La arquitectura Harvard dispone de dos memorias independientes una, que
contiene slo instrucciones y otra, slo datos. Ambas disponen de sus
respectivos sistemas de buses y es posible realizar operaciones de acceso
(lectura o escritura) simultneamente en ambas memorias.
A continuacin la arquitectura del dispositivo elegido: dsPIC33fj12gp202.
As como analizamos la arquitectura de los microcontroladores anteriores
ahora podemos observar los componentes del dspic.
Contador de programa.
Memoria de programa.
Unidad de control.
-Registro de instruccin.
ALU

Ya que no se muestra Stack Pointer en la arquitectura significa que debe


estar en el arreglo de registros de 16 x 16 (Wregister array). Si leemos el
manual nos daremos cuenta que el W15 (registro) es la pila.

Para entender mejor el modo de programacin del dspic necesitamos leer:

Resumen de registros de puertos y para qu sirven.

LAT, PORT. Se relacionan con cada pin del puerto.


TRIS. Determina si es entrada o salida la lnea (0=salida, 1=entrada).
AD1PCFGL. 1 digital, 0 analgico
CN. CNEN1, CNEN2. No es por puerto es por lnea.

Todos los pines del dispositivo excepto VDD, VSS, MCLR y OSC1/CLK son
compartidos por los perifricos y los puertos paralelos de entrada-salida.
Todos los puertos de entrada de cuentan con entradas de disparo Schmidtt
para mejorar la inmunidad de ruido.

Puertos paralelos de E/S (PIO).

Todos los puertos paralelos E/S que comparten un pin con un perifrico son
generalmente subordinados del perifrico. Los datos del bfer de salida del
perifrico y las seales de control se proporcionan a un par de multiplexores.
Los multiplexores seleccionan si el perifrico o el puerto asociado tiene
propiedad de los datos de salida y seales de control del pin de E / S. La
lgica tambin evita el bucle, en el cual la salida digital de un puerto puede
conducir la entrada de un perifrico que comparte el mismo pin.
Cuando se habilita un perifrico y el perifrico est activando un pin
asociado, se desactiva el uso del pin como un pin de salida de propsito
general. El pin de E/S se puede leer, pero el pin de salida est deshabilitado.
El pin E/S se puede leer, pero el controlador de salida para el bit de puerto
paralelo est deshabilitado. Si un perifrico est habilitado, pero el perifrico
no est activando un pin, ese pin puede ser conducido por un puerto.

Todos los puertos tienen 3 registros directamente asociados con su


operacin como entradas/salidas digitales. El registro de direccin de datos
(TRISx) determina cuando el pin es una entrada o una salida. Si el bit de
direccin de datos es un 1, entonces el pin es una entrada, si es un 0 es
salida. Todos los puertos se definen como entradas despus de un reset.
Escrituras en el latch, escribe en el latch. Lecturas en el puerto (PORTx) lee
los pines de puerto, mientras que escribir en los pines de puerto escribe en el
latch.

Cualquier bit y sus registros de control y datos asociados que no son vlidos
para un dispositivo en particular se desactivan. Esto significa que los registros
LATx y TRISx correspondientes y los pines de puerto se leern como ceros.
Configuracin de colector abierto.

Adems de los registros PORT, LAT y TRIS para el control de datos, algunos
pines se pueden configurar tambin como salida digital o de colector
abierto. Esto es controlado por el registro de Control de Colector Abierto
(OCDx), asociado con cada puerto. Al configurar cualquiera de los bits se
configura el pin correspondiente para actuar como una salida de drenaje
abierto.
La funcin de colector abierto permite la generacin de salidas superiores a
VDD en cualquier pin que tolere 5v utilizando resistencias pull-up externas. El
mximo voltaje de colector abierto permitido es el mismo que es mximo
VIH especificado.
Configurando pines de puerto anlogos.
Los registros AD1PCFG y TRIS controlan la operacin de los pines Anlogos a
Digitales (A/D). Los pines deseados como entradas anlogas deben tener
su bit puesto en 1 (entrada). Si el TRIS est limpio (0) es salida, el nivel de
salida digital (VOH o VOL) se convertir.

El registro AD1PCFGL tiene un valor predeterminado de 0X0000; por lo tanto,


todos los pines que comparten funciones ANx son anlogas (no digitales)
por default.

Cuando el registro PORT est leyendo, todos los pines configurados como
canales de entrada analgicos se leern con un nivel bajo. Los pines
configurados como entradas digitales no se convertirn en entradas
analgicas. Los niveles analgicos en cualquier pin que est definido como
entrada digital (incluyendo los pines ANx) pueden causar que la entrada
buffer consuma corriente que excede las especificaciones del dispositivo.

Sincronizacin de puertos de E/S. Un ciclo de instruccin es requerido entre


el cambio de direccin del puerto u operacin de escritura de puerto y una
operacin de lectura en el mismo puerto. Tpicamente esta instruccin
puede ser NOP.

Notificacin de Cambio de Nivel (entrada).

La funcin de notificacin de cambio de nivel de los puertos de E/S permite


al dispositivo generar una solicitud de interrupcin al procesador en
respuesta a un cambio de estado en los pines de entrada seleccionados.
Esta funcin puede detectar en cambios de estado en la entrada incluso en
el modo sleep, cuando el reloj est deshabilitado. Dependiendo del conteo
de pines del dispositivo, arriba de 21 seales de salida (pin CNx) puede ser
seleccionado (habilitado) para generar una solicitud de interrupcin en un
cambio de estado. 4 registros de control estn asociados con el mdulo CN.
Los registros CNEN1 y CNEN2 contienen los bits de habilitacin de
interrupcin para cada bit de entrada. Poniendo cualquiera de esos bits
habilitan una interrupcin CN por los pines correspondientes.

Cada CN puede tener conectada una resistencia pull-up. El arreglo pull-up


acta como una corriente de base conectada al pin y elimina la necesidad
de resistencias externas cuando un botn o el teclado estn conectados.
Se habilitan por separado utilizando los registros CNPU1 y CNPU2, que
contienen los bits de control para cada uno de los pines CN. Activando
cualquiera de los bits de control habilita los arreglos pull-up para los pines
correspondientes. Los Pull-up en los pines de notificacin de cambio (CN)
deben estar siempre deshabilitados cuando el pin est configurado como
una salida digital.
Seleccin del pin perifrico.

El mayor reto en un dispositivo de propsito general es proveer la mayor


cantidad posible de funciones de perifricos mientras minimizamos el
conflicto de funciones en pines de E/S. El reto es incluso mayor cuando los
dispositivos tienen un nmero pequeo de pines. La configuracin de
seleccin del pin perifrico habilita la seleccin de perifricos y le da amplio
rango a los pines de E/S.

La configuracin de seleccin del pin perifrico funciona operando sobre


un conjunto de pines de E/S digitales. Los programadores pueden mapear
la entrada y/o salida de la mayora de los perifricos digitales a cualquiera
de estos pines de E/S. La seleccin del pin perifrico se realiza en el software
y generalmente no requiere que el dispositivo se reprograme.

Pines disponibles. La funcin de seleccin del pin perifrico se usa en un


rango de ms de 16 pines. El nmero de pines disponibles depende del
dispositivo en particular y el nmero de pines que tenga. Los pines que
soportan la funcin de seleccin del pin perifrico incluyen la designacin
RPn, en su diseo completo de pines donde RP designa un perifrico
remapeable y n es el nmero de pin asignado.
Control del pin perifrico.
La funcin del pin perifrico est controlada a travs de dos sets de registros
de funcin especfica: uno mapea las entradas perifricas y otro las salidas.
Como estn controladas separado, perifricos especficos de entrada y
salida (si el perifrico tiene ambos) pueden ser posicionados en cualquier
pin de funcin seleccionable sin restriccin.

La asociacin de un perifrico a un pin de seleccin de perifrico es


manejada de dos maneras diferentes, dependiendo de si est siendo
mapeada una entrada o una salida.
Mapeo de entradas.

Las entradas de las opciones de seleccin de pin perifrico se asignan sobre


la base del perifrico. Un registro de control asociado con el perifrico dice
en cual pin se asignarn. Los registros RPINRx son utilizados para configurar
la asignacin de entradas perifricas. Cada registro contiene un conjunto
de celdas de 5 bits, con cada set asociado a uno de los perifricos
asignados. Programar el campo de bit de un perifrico dado con un valor
apropiado de 5 bits asigna el pin RPn con ese valor al perifrico.
Para cualquier dispositivo, el rango vlido de valores de cualquier campo
de bits corresponde al mximo nmero de pines perifricos seleccionados
soportados por ese dispositivo.

Para la sola asignacin de entradas, la seleccin del pin perifrio (PPS) no


tiene prioridad sobre los ajustes del TRISx. Por lo tanto, cuando se configura
el pin RPn para entrada, el bit correspondiente en el registro TRISx debe estar
configurado como entrada tambin.
Asignacin de salidas.

A diferencia de las entradas, las opciones de seleccin del pin perifrico


estn asignadas con base en el pin. En este caso, un registro de control
asociado con el pin en particular dicta la asignacin de la salida perifrica.
Los registros RPORx son utilizados para controlar la asignacin de salidas.
Como los RPINRx, cada registro contiene sets de campos de 5 bits, cada set
asociado a un pin RPn. El valor del campo de bits corresponde a uno de los
perifricos y la salida se asigna al pin.

La lista de perifricos que pueden asignarse como salida incluye un valor


nulo de 00000 por la tcnica de asignacin. Esto permite que cualquier pin
dado permanezca desconectado de la salida o de cualquier pin perifrico
seleccionable.
Control de cambios de configuracin. Como la asignacin de perifricos
puede cambiar durante el tiempo de ejecucin, se necesitan algunas
restricciones en la asignacin de perifricos para prevenir cambios en la
configuracin. Este dispositivo tiene 3 funciones para prevenir alteraciones
al asignar perifricos:

Secuencia de bloqueo del registro de control.


Monitoreo continuo de estado.
Bloqueo de configuracin de bit del pin de seleccin.

Bloqueo del registro de control.

Bajo operacin normal, no est permitido escribir en los registros RPINRx y


RPORx. Los intentos de escritura paracen ejecutarse normalmente, pero el
contenido de los registros permanece sin cambios. Para cambiar estos
registros deben desbloquearse en el hardware. El bloqueo est controlado
por el bit IOLOCK (OSCCON<6>). Ajustando el bit IOLOCK previene escribir
en los registros de control, limpiando las escrituras permitidas del bit IOLOCK.

Para ajustar o limpiar el bit IOLOCK se requiere ejecutar un comando


especfico.

1. Escribe 0x46 a OSCCON <7:0>.


2. Escribe 0x57 a OSCCON <7:0>.
3. Limpia o ajusta el bit como una funcin aislada.
Diagrama de flujo.
INICIO

Posicionamos la pila en
0x900, w15

Configuracin de
entradas y salidas.
(Todas digitales)
RB0-RB7

TRIS Y LAT
Inicialmente en cero

Delay
Configuracin de
entradas y salidas
Salidas a1
RB0-RB7

(0Xffff)

Delay
Configuracin de
entradas y salidas
RB0-RB7
MPLAB.
En base al diagrama de flujo que hicimos haremos nuestro programa.
Entramos a WindowConfiguration bits y configuramos nuestro dspic,
generamos el cdigo y lo aadimos al programa.
; DSPIC33FJ12GP202 Configuration Bit Settings

; 'C' source line config statements

; FBS

#pragma config BWRP = WRPROTECT_OFF ; Boot Segment Write Protect


(Boot Segment may be written)

#pragma config BSS = NO_FLASH ; Boot Segment Program Flash Code


Protection (No Boot program Flash segment)

; FGS

#pragma config GWRP = OFF ; General Code Segment Write Protect


(User program memory is not write-protected)

#pragma config GSS = OFF ; General Segment Code Protection


(User program memory is not code-protected)

; FOSCSEL

#pragma config FNOSC = FRC ; Oscillator Mode (Internal Fast RC


(FRC))

#pragma config IESO = ON ; Internal External Switch Over Mode


(Start-up device with FRC, then automatically switch to user-selected
oscillator source when ready)

; FOSC

#pragma config POSCMD = NONE ; Primary Oscillator Source (Primary


Oscillator Disabled)
#pragma config OSCIOFNC = OFF ; OSC2 Pin Function (OSC2 pin has
clock out function)

#pragma config IOL1WAY = ON ; Peripheral Pin Select Configuration


(Allow Only One Re-configuration)

#pragma config FCKSM = CSDCMD ; Clock Switching and Monitor (Both


Clock Switching and Fail-Safe Clock Monitor are disabled)

; FWDT

#pragma config WDTPOST = PS32768 ; Watchdog Timer Postscaler


(1:32,768)
#pragma config WDTPRE = PR128 ; WDT Prescaler (1:128)

#pragma config WINDIS = OFF ; Watchdog Timer Window (Watchdog


Timer in Non-Window mode)

#pragma config FWDTEN = OFF ; Watchdog Timer Enable (Watchdog


timer enabled/disabled by user software)

; FPOR
#pragma config FPWRT = PWR128 ; POR Timer Value (128ms)

#pragma config ALTI2C = OFF ; Alternate I2C pins (I2C mapped to


SDA1/SCL1 pins)

; FICD

#pragma config ICS = PGD1 ; Comm Channel Select (Communicate


on PGC1/EMUC1 and PGD1/EMUD1)
#pragma config JTAGEN = ON ; JTAG Port Enable (JTAG is Enabled)

; #pragma config statements should precede project file includes.


; Use project enums instead of #define for ON and OFF.

#include <xc.h>
.global __reset
.bss ;datos no inicializados
.data ; datos inicializados
.text ;seccion codigo
__reset:

;Primer proyecto para verificar el funcionamiento del dsPIC y MPLABX.


;06 de septiembre 2017

Mov #0x900, w15 ;pila a partir de 0x900


;AD1 Lneas que son analgica o digital 1=digital, 0=analgica.

;Registro asociado a la configuracin de los puertos: en este caso


TRISB.
;1=entrada
;0=salida
MOV #0x0000, w1 ;Un bit para cada lnea del puerto b

;no se pueden asignar valores al registro directamente, se tiene que


pasar de un registro a otro
;Todo lo que no es w, es f (mov f, wreg).
Mov w1,TRISB ; Asignamos el puerto b como salida (todo el puerto b)
Mov #0xFFFF, w1
Mov, w1, AD1PCFGL ;todas las lneas sern digitales
;PORT y LATCH: Latch se visualiza afuera.
Ciclo: mov LATB,w1
AND.B #0X00,w1 ; se cambi a .B porque era max 10
Mov w1, LATB ; clr LATB ; salidas = 0, RB0-RB7=0
call ret_1s ; rutina de retardo
mov LATB, W1
XOR #0xFF, w1
Mov w1, LATB ;RB0-RB7=1 (LEDS PRENDIDOS)
Call ret_1s
;ciclar
BRA Ciclo ; branch cicla (sin condicin en este caso)
;Hacer tiempo con registros para delay
;Oscilador interno 7.37MHZ
;cada ciclo de instruccin se lleva dos ciclos de reloj
;Tcy=1/fcy
;tomamos 1000 y 3685 para dos registros cualquiera
ret_1s: Mov #3685,w1
mov #1000, w2
;decrementa
DEC_w2: DEC w2,w3
Mov w3,w2
BRA NZ, DEC_w2
Mov #1000, w2
Dec w1, w3
Mov w3, w1
BRA NZ, DEC_w2
RETURN
MIKROC para dsPIC.

#include <built_in.h>
void main() {
w15=0x900;
AD1PCFGL=0XFFFF;
TRISB=0;
LATB = 0;
while(1){
Lo(LATB)=0X00;
delay_ms(1000);
Lo(LATB)=0xff;

delay_ms(1000); //si escribes en el puerto en lugar del latch se


crean problemas porque no alcanza a cambiar de valor

}
}
Proteus.
Material:

DSPIC33FJ12GP202
8 leds
8 resistencias
Desarrollo.

Implementamos el circuito tal y como se ve a continuacin, no es necesario


conectar las salidas correspondientes del pic a tierra o a voltaje (vss, vdd).
Cargamos en el dspic el archivo .hex que se encuentra en la carpeta que
gener el MPLAB carpeta distproductionarchivo .hex. Tambin
podemos simular con el archivo .hex que creamos desde mikroc.
Simulamos (clic en play). Observamos como los leds encienden y apagan. En
primera instancia se tardaban 4 segundos en el proceso, sin embargo esto se
modifica en la seccin de delay del programa a voluntad del usuario.
Pickit 2. Es el programador utilizado para bajar el programa al
dspic desde el arcivo .hex.
Eleg este programador porque contaba con el software de PIckit 2
necesario para su uso.
Consideraciones:
Capacitor de tantalio de 19 vss a 20 vcap.

MASTER CLEAR se debe poner en 1 para que no se resetee, ya que se pone


todo en cero si est activo.

PGD y PGC solo se usan para bajar el programa, luego pueden


desconectarse.

Primero verificaremos que haya conexin entre el programador y el software


y en cuando lo reconozca podemos pasar el programa y observar nuestros
resultados.

Resultados.
CONCLUSIONES.

La nica variacin del resultado esperado con el real fue la diferencia de 3


segundos en el tiempo de espera de encendido y apagado, fuera de eso,
se resolvi como implementar el circuito y nos introducimos en el aprendizaje
de lenguaje ensamblador y en una remembranza del lenguaje c, visto en
cursos anteriores. Con ayuda de las herramientas de software no debemos
tener dificultad para desarrollar nuestros proyectos, mientras nuestra lgica
sea la adecuada.

Potrebbero piacerti anche