Está en la página 1de 7

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA


ESCUELA DE INGENIERIA ELECTRONICA

MICROCONTROLADORES

TEMA:

CONTROL DE PUERTOS DEL


DISPIC30F4013

2018B
BELLAVISTA
Microcontrolador dsPIC30F4013
Este es un dsPIC está diseñado para control de motores. Es un procesador digital
de señales a 16 bits.

 Tiene las siguientes características:


 Set de instrucciones optimizado para usarse en lenguaje ensamblador.
 84 instrucciones base con métodos de direccionamiento flexibles.
 16 registros de trabajo de 16 bits
 Operación de hasta 30MIPs
 Controlador digital de señales de 16 bits
 Memoria de programa flash de 48 kB( 16 k instrucciones)
 RAM de 2048 Bytes
 EEPROM de datos de 1024 Bytes
 Velocidad de la CPU hasta 30 MIPS
 Oscilador externo: DC hasta 40 MHz
 33 fuentes de interrupciones (3 externas)
 ADC de 12 bits, 200 ksps y 13 canales
 Funciones DSP de un solo ciclo
 Desplazamiento de ±16 bits de un solo ciclo
 Modos de direccionamiento de módulo y bit-inverso
 2 acumuladores de 40 bits con lógica de saturación opcional
 Multiplicador de enteros y fraccionarios por hardware de 17bits x 17bits y un solo ciclo
de instrucciones
 Interfaz de conversión de datos que soporta codecs de audio comunes incluyendo
AC'97 y I²S
 5 timers de 16 bits (Se pueden aparejar para formar de 32 bits)
 2 UART's
 Puertos SPI, I²C, y CAN
 Voltaje de operación 2.5 V a 5.5 V
 Bajo consumo de potencia
 Reset Brown-Out programable
 Power-on Reset, Power-up Timer y Oscillator Start-up Timer
 Flexible Watchdog Timer (WDT)
 Soporta 10,000 ciclos de borrado/escritura en memoria flash para el rango de
temperatura industrial
 Soporta 100,000 ciclos de borrado/escritura en memoria EEPROM para el rango de
temperatura industrial
 Protección de código y datos programable
 Encapsulado DIP de 40 pines

Chip: 40 pines

1
Aplicaciones
Dentro del campo de las aplicaciones destacan las telecomunicaciones, la
multimedia y el control de motores, esto incluye una amplia variedad de soluciones
como la mejora de imágenes, el reconocimiento y la generación de la voz, la
comprensión de datos para el almacenamiento y trasmisión.
A continuación se encuentran algunas aplicaciones, donde en la actualidad es
indispensable contar con un DSP:
 Medicina
 Industria
 Control de motores
 Automoción
 Militar
 Telecomunicaciones
 Imagen y sonido

Microcontrolador:
Es un computador en un solo chip

dsPIC es una combinación de la potencia de un microcontrolador de 16 bits con las


prestaciones más interesantes de los DSP.
Esto surge de la necesidad de responder a las modernas aplicaciones que combinan
las funciones típicas del microcontrolador con las del procesamiento digital de señales.

Los dsPIC se comercializan en la actualidad, agrupados en 2 familias:


 Familia dsPIC30F
 FamiliadsPIC33F
En esta asignatura se centrará en la familia dsPIC30F sin embargo se dará a conocer
características generales de ambas familias, así como su diferencias.

PROGRAMADOR
Este es el nuevo PICkit 3 basado en el programador del mismo nombre de
Microchip. El PICkit 3 permite la depuración y programación de microcontroladores PIC
y dsPIC utilizando la potente interfaz del entorno de desarrollo integrado (IDE) MPLAB.
El PICkit 3 se puede conectar a una PC mediante una interfaz USB .
El PICkit 3 permite ademas la programación ICSP (In Circuit Serial Programming) es
decir la programación en circuito que nos da la ventaja de no tener que estar moviendo
nuestro microcontrolador PIC del programador al circuito de prueba, ademas de que nos
brinda la oportunidad de depuración en tiempo real.
Tiene circuitos para protección de sobre tensión y de corto circuito, permite ejecución
en tiempo real y soporta tensiones desde 2.0V. Respetando la norma USB puede dar
100mA al circuito donde esta conectado y tiene LEDs de información rápida para el
usuario.
Además de estas funcionalidades, hay una que es muy interesante y en algunos
entornos bastante útil del PICkit 3que es la funcionalidad “Programmer-To-Go”. La
funcionalidad “Programmer-To-Go” permite de una forma muy sencilla programar
cualquier microcontrolador de las familias PIC16, PIC18, PIC24, dsPIC33F y PIC32 de
Microchip sin necesitar de un ordenador, lo que es muy útil si estamos en un entorno
donde llevar un ordenador no es practico o es del todo imposible. El PICKit3 permite
guardar un código de hasta 512KB en su Flash, esto se hace desde el MPLAB y

2
después llevar el PICkit 3 y de forma autónoma sólo alimentando el PICKit 3 desde el
USB.
Soporta la mayoria de PICs ademas de ofrecer la posibilidad de actualizarse para los
nuevos PICs a traves de un nuevo firmware que se puede descargar de la pagina oficial
de Microchip,
El kit incluye:
1.- Programador PICkit 3.
2.- Cable de programación USB-PC.
3.- Cable de 6 pines para programacion ICSP.

3
UNIVERSIDAD NACIONAL DEL CALLAO
FIEE-2018B

Manejo de puertos del DSPIC30F


Introducción:

La tarea más básica que podemos hacer con un microprocesador es sustituir a un circuito combinacional o
secuencial. Podemos encender una luz para cierta combinación de entradas, conectar un bomba cuando el
nivel de un depósito sea menor de cierto umbral y pararla cuando supere otro umbral, activar una alarma
cuando se active algún 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 lógica. 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 lógicas, aunque en la mayoría de los casos ese tiempo no es
demasiado importante; que la alarma suene 1 milisegundo después de abrir la puerta no parece grave.

Ahora bien, estas entradas y salidas digitales tienen niveles pequeños, típicamente de 0 a 3,3 V o de 0 a 5 V,
por lo que necesitaremos unos circuitos que harán de interface entre estos niveles (0 a 3,3 V) y los niveles
con los que estemos trabajando, 220 VAC, 24 VDC o cualquier otra tensión.

Entradas/salidas digitales en el dsPIC30F4013


A partir de la configuración 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 Ningún 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 configuración 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 más pines que tendrán los puertos completos y al tener que seleccionar solamente 30 pines nos
hemos quedado con los más importantes (el pin RA11 también es el pin de interrupción externa, RC13,
RC14 y RC15 tienen otras funciones como comunicación serie). En el diagrama de pines del micro se
observa que la mayoría de pines tienen varios nombres, cada nombre se refiere a una de sus funciones.

2
Programación de los puertos de entrada/salida paralelos

En general, los puertos de entrada/salida tienen un funcionamiento similar. Para cada puerto existen tres
registros, el TRISX, el PORTX y el LATX. La X indica cualquiera de los puertos que tiene el
microprocesador, A, B, C, D, E o F.

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 más 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 algún problema en el circuito (por ejemplo una salida cortocircuitada a masa), deberemos leer
lo que hemos escrito en la salida. Además, podemos también leer la palabra TRISX, conociendo lo que
previamente habíamos escrito en TRISX.

PORTX Con este registro nos comunicamos con el exterior. Al leer el registro leemos un 0 si la
tensión en la entrada está a nivel bajo y un 1 si la tensión 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. (*)

LATX Este es un registro que no existía 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
además 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 tensión 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 tensión del pin (1 o 0). (*)

* Aunque podríamos utilizar indistintamente PORT y LAT para escribir datos, en el puerto B ocurren cosas
extrañas. 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.

Ejemplo:
TRISB = 0b1111000011110101;
// Los pines RB15, RB14 y RB13 no existen en este micro. Los configuramos
// como entradas, pero podemos también 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 serán 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 tensión que haya en el pin correspondiente. En los pines que no existen se lee 0
// Los bits que son salidas leerán el valor que se había escrito
// salvo algún problema en el circuito externo, un cortocircuito,
// varias salidas en paralelo, etc
// Los bits que son exclusivamente entradas leerán un 0 o 1 dependiendo de la
// tensión externa.

3
Registros utilizados en las entradas salidas paralelo

Por defecto todos los pines están configurados en su función de E/S digital y además siempre como entrada.
Existe una excepción, que más bien parece un fallo en el diseño 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 analógica correspondiente a ese pin.

Los pines del RB0 al RB12 pueden ser también entradas analógicas.
Si no vamos a utilizar ninguna entrada analógica 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 función dejarán de tener esta función inicial.

También podría gustarte