Paso 6: programación
La codificación para esto es bastante simple. Existen cuatro métodos para escribir. Nos pondremos todos el negociación de señal I2C de la biblioteca de I2C que lo generamos con el configurador de código del Microchip.
- initWiiCam(); Necesaria sólo una vez para configurar la cámara
- readWiiCam(); Pide la cámara para la posición de la baliza
- updatePan(); Actualiza la bandeja si es necesario a la baliza en el eje X del centro
- updateTilt(); La inclinación se actualiza si es necesario a la baliza en el eje Y el centro
Instalar MPLABX
Así que vamos a empezar. En primer lugar, descargar e instalar MPLABX de Microchip: http://www.microchip.com/pagehandler/en-us/family/...
Crear un proyecto
Una vez hecha la instalación, puesta en marcha y vaya a archivo > nuevo proyecto
Esto le llevará a través de un asistente para configurar nuestro proyecto.
- Elija proyecto
- Categorías: Microchip incrustado
- Proyectos: Proyecto de independiente
- Seleccione dispositivo
- Familia: Gama media 8-bit MCU (PIC12/16/MCP)
- Dispositivo: PIC16F1503
- Seleccione encabezado
- -Encabezado: Ninguno (o AC244051 * si desea tenerlo y usarlo)
* Si utiliza un encabezado de depuración, se debe construir el proyecto de depuración para la cabecera del programa
- -Encabezado: Ninguno (o AC244051 * si desea tenerlo y usarlo)
- Seleccione la herramienta
- PICkit3 o herramienta compatible
- Seleccionar el compilador
- XC8
- Seleccione proyecto y carpeta
- Nombre: lo que quieras (ej. IR_Tracking_Turret)
- Carpeta: por defecto
- Encoding: ISO-8859-1
- Ubicación: por defecto
Vale, crea el proyecto. Ahora vamos a generar algunos archivos de código fuente.
Configurador de código del microchip (MCC)
Esto es una buena herramienta en MPLABX que permite seleccionar y configurar periféricos, como temporizadores, generadores PWM y comunicaciones I2C. Después de su proyecto de ir a herramientas > embebidos > Microchip código Configuratior
Se subirá una pantalla con el pinout de las asignaciones de chip y pin en los derecho y seleccionados y disponibles los periféricos a la izquierda. En el centro superior habrá un botón [generar código]. Haga clic en él se generan el código y la configuración que seleccione en el MCC. Puesto que no hay ningún archivo de código fuente, MCC le preguntará si desea generar un archivo main.c - Haga clic en sí. Vamos a necesitar los siguientes periféricos configurados para nuestra aplicación:
- TMR1 - temporizador de 16-bits
- TMR2 - temporizador de 8 bits
- PWM2 - PWM en pin 7
- PWM3 - PWM en el pin 11
- MSSP - maestro I2C, SDA en el pin 9, SCL en el pin 10
En la lista en la parte inferior derecha, busque y haga doble clic en los anteriores periféricos para añadir la lista de periféricos seleccionados en la parte superior izquierda. Una vez que los tienes todos, vamos a generar un código de apoyo periférico.
Sistema de
- Sistema reloj Select: INTOSC
- Frecuencia seleccione > reloj interno: 16MHz_HF
- CONFIG1 > MCLR Pin función Seleccione [MCLRE OFF]
TMR1
- Fuente de reloj: FOSC/4
- Prescaler: contador de tiempo de 1:8
- Período: 100ms
- Habilitar interrupción: comprobar
- Tarifa de la función de devolución de llamada: 30 x (3s) - tiempo de espera para volver a centrar la torreta
TMR2
- Prescaler: 1: 64
- Temporizador periodo: 4ms
- Iniciar el contador después de la inicialización: comprobar
- Habilitar interrupción de temporizador: comprobar
- Tarifa de la función de devolución de llamada: 5 x (20ms) - para la conducción de los servos, servos más también trabajará con un período de 12ms.
PWM2, PWM3
- Permiten PWM: comprobar
- Permitir la salida PWM Pin: comprobar
- Polaridad PWM: Invertida (período 4ms)
MSSP::I2C
- MASTER activar I2C: comprobado
- Permitir la salida del Bus SM: comprobado
- Control de la velocidad de giro: Alta velocidad SDA
- Tiempo de espera: 100ns
- Frecuencia de reloj I2C: 400KHz
- Dirección de esclavo: 7 bits
- Tamaño del búfer de lectura: 10 - dependiendo de cuántos bytes que esperar detrás del dispositivo que está hablando, en este caso, para la configuración más simple, la camerawill de Pixart volver 10 bytes.
- Tamaño de búfer de escritura: 2 - vamos a hablar a la cámara de Pixart 2 bytes a la vez.
Agregar su propio código
Ahora se genera la mayor parte del código para el proyecto, pero todavía tenemos que declarar algunas variables y constantes y añadir algo de código adicional, incluyendo cuatro los métodos mencionados anteriormente.
Main.c
Encuentre esta línea:
Agregue el código siguiente debajo de él
Permitir interrupciones y agregue el código siguiente a la función principal:
TMR2.c
Servos utilizan un pulso de.5 a 2.5 ms en un periodo de 20 ms para determinar su posición de destino. Nuestra configuración da TImer2 un 4ms período, que es ideal para darnos un montón de precisión dentro de que período, pero demasiado corta para servo el uso. Así que utilizamos una devolución de llamada que se ejecuta cada vez 5 Timer2 se desborda. Guardamos la PWM con discapacidad hasta el paso 5, que nos da un periodo de 20 MS con una longitud de pulso más alta precisión. Esto nos da más suave movimiento en seguimiento y mejor respuesta a pequeños movimientos. Ir a las funciones de rutina de servicio de interrupción (ISR) y de devolución de llamada y editarlos para ver como sigue.
TMR1.c
Acabo de añadir esto a centrar la torreta si no se ve nada durante 3 segundos. Tenemos que declarar la variable CountCallBack como global. Encuentre esta línea:
Agregue esta línea debajo de él:
Ahora ir a las funciones de rutina de servicio de interrupción (ISR) y de devolución de llamada y editarlos para ver como sigue.
TMR1.h
Encuentre esta línea
Añadir la siguiente línea debajo de ella
Ahora todo el código está en el lugar y w puede construir y programar el dispositivo.
Limpiar y construir el proyecto, luego hacer y dispositivo de programa. El PIC está listo para enchufar a la toma de la placa.