proyecto: interface usb con pic 18f4550

Anuncio
IES Los Viveros Dpto. Electrónica.
Luis Modesto González Lucas
PROYECTO: INTERFACE USB CON PIC 18F4550
Especificaciones.
Dispone de 8 entradas digitales, 8 salidas digitales, 8 entradas analógicas(entre 0 y 5 voltios 10
bits ) y 2 salidas analógicas(entre 0 y 5 voltios).
Attributos
Attribute Type
Attribute Value
Family Name
PIC18
Device Core
PIC
Data Bus Width
8Bit
Function
Microcontroller
RAM Size
2kB
Program Memory Size
32kB
Program Memory Type
Flash
Interface Type
I2C/SPI/USART/USB
Instruction Set Architecture
RISC
Maximum Speed
48MHz
Supplier Package
PDIP
Pin Count
40
Product Height
3.81mm
Product Length
52.26mm
Product Width
13.84mm
Minimum Operating Temperature
-40°C
Mounting
Through Hole
Number of Programmable I/Os
35
Number of Timers
4
On-Chip ADC
13-chx10-bit
Maximum Clock Rate
48MHz
Maximum Expanded Memory Size
2MB
Maximum Operating Temperature
85°C
Typical Operating Supply Voltage
5V
Minimum Operating Supply Voltage
4.2V
SPI
1
I2C
1
IES Los Viveros
Sevilla
Dpto. Electrónica.
1
IES Los Viveros Dpto. Electrónica.
Luis Modesto González Lucas
Maximum Operating Supply Voltage
5.5V
USB
1
USART
1
Esquema de partida
Ejemplo de PCB
Es una idea para el diseño, la placa no corresponde exactamente al esquema mostrado.
IES Los Viveros
Sevilla
Dpto. Electrónica.
2
IES Los Viveros Dpto. Electrónica.
Luis Modesto González Lucas
INSTALACIÓN DEL DRIVER
El primer paso será instalar el driver que proporciona el fabricante, Microchip. El dispositivo se
instala como un elemento USB, y no como un puerto serie.
FIRMWARE EN EL PIC
También debemos cargar el PIC con el firmware adecuado al programa que usaremos en C++.
En nuestro caso, usaremos la versión modificada por José Luis Rupérez, y que se encuentra en
la página de la asignatura.
IES Los Viveros
Sevilla
Dpto. Electrónica.
3
IES Los Viveros Dpto. Electrónica.
Luis Modesto González Lucas
La carga se realizará con un programador externo, y el software de programación WINPIC800
CODIGO EN VISUAL C++
Microchip facilita una librería para el acceso al microcontrolador, la librería viene en una dll, de
nombre “mpusbapi.dll”. Al igual que en otros caso, será necesario un fichero de cabeceras, que
contenga la declaración de las funciones, “mpusbapi.h”, y además también usaremos una API
desarrollada por el autor del firmware para simplificar el acceso al micro.
La API se encarga de agrupar las funciones necesarias y resumirlas. Por lo tanto, en el
directorio principal, tendremos que colocar los ficheros:
•
•
•
mpusbapi.h
mpusbapi.h
TAD_API.cpp
FUNCIONES EN LA API
IES Los Viveros
Sevilla
Dpto. Electrónica.
4
IES Los Viveros Dpto. Electrónica.
Luis Modesto González Lucas
•
VOID AbrirTAD(VOID): Abre el dispositivo USB y muestra un mensaje de error
si no está conectado.
•
VOID CerrarTAD(VOID): Cierra el dispositivo USB
•
VOID SalidasDigitalesByteTAD(DWORD valor): Envía un valor a las 8 salidas
digitales
•
VOID SalidasDigitalesBitTAD(DWORD numero_bit,DWORD valor_bit): Activa un
bit de una salida digital.
•
DWORD EntradasDigitalesByteTAD(VOID) : Obtiene el valor de las entradas
digitales
•
DWORD EntradasDigitalesBitTAD(DWORD numero_bit) : Obtiene el valor de un
bit de la entrada digital.
•
VOID SalidasAnalogicasTAD(DWORD numero_salida,DWORD valor_salida). En vía
un valor a la salida analógica. Hay 8 salidas y los valores varían entre 0
y 1023.
•
DWORD EntradasAnalogicasTAD(DWORD numero_entrada)
instantáneo de la entrada analógica (0-1023):
:
Obtiene
el
valor
EVENTOS ASOCIADOS.
En este caso, la lectura de la tarjeta la haremos mediante un timer, y cada vez que dispare un
tic, procederemos a la lectura/escritura de los puertos que nos interesen. Por qjmplo,
podemos poner un tiempo de 100mS, con lo que tomaríamos 10 muestras por segundo.
OPERATIVA
La operativa será:
-
Abrir dispositivo
Realizar operaciones de lectura/escritura
Cerrar dispositivo
CODIGO
Tendremos que introducir las llamadas a los ficheros incluidos en el fichero principal del
proyecto, el que tiene extensión cpp y la función main.
Incluimos las llamadas:
#include <Windows.h>
#include "mpusbapi.h"
IES Los Viveros
Sevilla
Dpto. Electrónica.
5
IES Los Viveros Dpto. Electrónica.
Luis Modesto González Lucas
#include "TAD_API.cpp"
Nos quedará:
En el formulario principal, incluimos la apertura del puerto, en el constructor, y el cierre, en el
destructor:
//TODO: Add the constructor code here
//
AbrirTAD();
CerrarTAD();
Nos quedará:
IES Los Viveros
Sevilla
Dpto. Electrónica.
6
IES Los Viveros Dpto. Electrónica.
Luis Modesto González Lucas
En el evento principal, simplemente, leeremos el valor del puerto deseado y lo mostraremos
private:
: System::Void button1_Click(System::Object^
System::EventArgs^ e) {
sender,
+EntradasAnalogicasTAD(1);
label1->Text=" "+EntradasAnalogicasTAD(1);
}
El autor del firmware, nos facilita una aplicación para comprobar el funcionamiento
IES Los Viveros
Sevilla
Dpto. Electrónica.
7
Descargar