Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Capitulo 9 PDF
Capitulo 9 PDF
Integrado
Otra alternativa es emplear un lenguaje de alto nivel con una mayor cantidad
de abstracciones, la cuales son ms fciles de usar y reducen los tiempos de
desarrollo. Tal vez los lenguajes de alto nivel ms comunes para la programacin de
controladores es el C y C++, pero tambin existen otros lenguajes variantes del BASIC
y el Pascal. Una vez escrito el programa en el lenguaje de alto nivel, ser necesario
emplear un compilador para traducirlo, ya sea a lenguaje de Ensamblador o
directamente a lenguaje de mquina. Es importante considerar que el cdigo de
Ensamblador generado por los compiladores tiende a ser ms largo e ineficiente que
aquel directamente desarrollado en lenguaje de Ensamblador. Esta desventaja puede
ser critica en ciertas aplicaciones que requieren un programas compactos y de una
alta velocidad de ejecucin. Un vez que el compilador ha generado el cdigo de
Ensamblador (.asm), ser necesario utilizar un ensamblador para generar el cdigo
binario de mquina.
CICLO DE DISEO:
Con los ejemplos de las lecciones que Microchip proporciona de forma gratuita
en su pgina web, podemos comenzar a entender el funcionamiento del dispositivo.
ORGANIZACIN DE LA MEMORIA:
La Memoria de Datos esta formada con file registers. Las instrucciones que
necesitan acceder a estos datos utilizan 12 bits, por lo que slo pueden direccional
4096 posiciones. Estos file registers son agrupados en pginas de forma que
podemos acceder a distintas pginas con dos bits ms significativos del Registro
BSR<3:0>. Para cargar un valor literal en el registro BSR se utiliza la instruccin
MOVLB.
Todas las instrucciones se pueden ajustar a uno de los tres formatos que
especificamos a continuacin:
2. Bit Instruction: Opera sobre un bit especifico dentro del registro. Formada
por 7 bits para la direccin del dato, 3 bit numricos y los restantes 4 bit
para el cdigo de la instruccin.
;******************************************************************
;
; PROYECTO FIN DE CARRERA
; PLACA DETECTOR DE MOVIMIENTO
; ENCENDER LED 1
;
; Realizado: MARTA ARENAS MAS
; Fecha: 22-Mayo-2008
; Versin: v1
;
;******************************************************************
;
; Ficheros Utilizados: P18F2550.INC
; 18F2550.LKR
;
;******************************************************************
;******************************************************************
ORG 0x00 ; Inicio en el Vector de Reset
goto INICIO ; Va a la primera instruccin del programa
ORG 0x18 ; Salta los Vectores de Interrupcin
;******************************************************************
; Comienza el programa
INICIO
;******************************************************************
; Fin del programa
END
Respecto a los puntos finales, adems del EP0 (que siempre se utiliza), se
necesitar otro ms para pasar los datos del perifrico al Host. La direccin de los
datos ser de entrada y el tipo de transferencia que utilizado ser tipo bulk, masiva.
Utilizaremos el EP1, que es bidireccional y tiene tres modos de comunicacin, bulk,
Interrupcin o iscrona.
Los instaladores de clase y dispositivo son DLLs. Windows tiene una serie de
instaladores por defecto que el Administrador de Dispositivos utiliza para localizar y
cargar drivers para dispositivos pertenecientes a clases soportadas por el sistema
operativo.
Versin: Especifica el sistema operativo para el que est destinado el fichero INF.
Para dispositivos que utilizan WDM (Windows Driver Model) drivers, el valor
puede ser $Windows 98$, $Windows NT$ o $Chicago$, independientemente del
sistema operativo que est instalado en el ordenador. En esta seccin se indica
tambin el nombre de la clase de los dispositivos instalados con este fichero as
como un identificador de clase que es utilizado por el registro del sistema para
identificar a los dispositivos pertenecientes a esta clase.
ClassInstall: En esta seccin se indica si se ha de instalar una nueva clase. El
Administrador de Dispositivos nicamente procesa la seccin si una clase de
dispositivo an no est instalada en el sistema. Aqu ser donde indicaremos el
icono, el nombre y la descripcin de la clase as como el nombre del archivo DLL
(tempusbci.dll) que instalar la nueva clase en el Administrador de Dispositivos.
Manufacturer: Esta seccin contiene el identificador de vendedor y de producto,
que en nuestro caso se corresponde con (USB\ VID_04D8 & PID_0011). Cuando
el Administrador de Dispositivo encuentra una coincidencia entre estos valores y
los identificadores obtenidos del dispositivo durante la enumeracin, sabe que ha
encontrado el archivo INF correcto.
DestinationDirs: Indica el directorio o directorios donde se copiarn los ficheros.
Strings: Define las cadenas referenciadas en las otras secciones.
El ltimo paso ha sido la edicin del Driver suministrado por Microchip de tal
forma que apareciera en el Administrador de Dispositivos una nueva clase con un
icono personalizado.
C:\WINDDK\3790.1830\src\general\toaster\classinstaller.
Incluye varios directorios que contienen todos estos ficheros, aunque el nico
interesante para nosotros es el directorio classinstaller. Dentro de este directorio
sustituiremos el icono del ejemplo por el que nosotros vayamos a utilizar, en este caso
el icono se llama icon.ico, y el fichero tostrcls.def lo sustituiremos por otro llamado
picusbci.def que contendr el siguiente cdigo:
LIBRARY PICUSBCI
EXPORTS
PicUSBClassInstaller
DWORD CALLBACK
PicUSBClassInstaller(
IN DI_FUNCTION InstallFunction,
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
)
Debemos entonces modificar el archivo .inf suministrado por Micrchip, para que
lea la dll creada por la DDK. El driver en s lo suministra Microchip y no debemos
modificarlo, aunque podra estudiarse, ya que existen limitaciones de velocidad en el
driver que proporciona y no acepta la velocidad completa de los dispositivos USB, sin
embargo es un estudio complejo que no es necesario en el proyecto.
Las funciones ms importantes para el manejo del USB, son entre otras:
Oscilador en modo HSPLL con los valores pre y post-escala adecuados para
obtener una frecuencia interna de 48MHz necesaria para la comunicacin con USB
de alta velocidad.
Habilitacin del regulador interno del mdulo USB
Deshabilitacin del Wachdog Timer que no vamos a utilizar en el proyecto
Tras la inicializacin del USB se configurarn los registros del convertidor A/D y
se comenzar con la lectura consecutiva de las seales analgicas procedentes de las
entradas AN0, AN1 y AN2 y el envo de los resultados obtenidos por el mdulo USB.
La conversin y el envo de datos se realiza insertando un retraso de 0.5ms entre cada
conversin y envo, lo que permite controlar que las conversiones y los envos se
realicen de forma ordenada.
LED ON
Inicializacin registros USB
Enumeracin
Dispositivo
Enumerado?
Conversin A/D
Transmisin de datos