Paso 3: ¿Qué es LANC y cómo funciona el programa?
Si visitas este enlace, dirá usted cómo funciona el protocolo LANC de Sony, y todos los comandos y datos de la cámara disponibles en el protocolo LANC:
http://www.boehmel.de/LANC.htm
Como se puede ver, puede obtener mucha información de la cámara, así como controlar todas las funciones de la cámara a través de la LANC puerto de comunicación.
Mi código es muy básico y el fichero .asm puede ser cargado en MPLAB (sin Micochip.com) y utilizando el PicKit2 fácilmente.
Cómo funciona el código:
Si descarga el código fuente, está documentado por decirle lo que está pasando, pero te voy a dar un breve expanation aquí también.
Hay 8 bytes en el puerto LANC cada 20ms (16,6ms para NTSC). Cada byte tiene un inicio poco seguido de 8 bits, cada uno con una longitud de 104uS. Hay un espacio de acerca de 200uS - 400 entre bytes. Después de los 8 bytes han aparecido en la línea LANC, hay un espacio largo (5 a 8 ms) donde la línea LANC es 'en' alta, y luego el mismo 8 bytes 'aparecen' otra vez.
-Cuando el programa se inicia, mantiene control LANC de entrada hasta que 've' lo alto durante un período más de 1000uS, esto quiere decir que estamos en la brecha entre los 8 bytes y el primer byte.
-A continuación el programa espera ver el Bit de inicio (lógica 0) en la línea. Cuando esto sucede, el programa espera 52uS (mitad una bit de longitud) y cheques otra vez para asegurarse de que hay todavía una lógica 0 en la línea LANC. Si es así, sabemos que tenemos un poco de inicio válido y está preparados para leer el byte.
-Ahora esperamos 104uS (la longitud de 1 bit), así que estaremos en el centro el siguiente bit en la línea LANC. Leer este pedacito, esperar 104uS y leer otra vez. Esto continúa para todos los 8 bits. Ahora tenemos Byte 0.
-El programa entonces espera el Bit de inicio siguiente y realiza la misma tarea para obtener los bytes 1, 2, 3, 4, 5, 6 y 7.
Byte 4 es el que utilizo en el programa para obtener la información sobre el estado del registro de la cámara, pero como pueden ver en el link que proporciona, hay un montón de información disponible.
A la derecha, que es la lectura de la línea LANC discutida, ¿qué hay escrito al control de la cámara?
-Cuando se pulsa un botón, 2 registros se cargan con los bytes necesarios para llevar a cabo la operación específica y un registro llamado 'Remitente' está cargado con el número 5 (voy a explicar por qué más adelante). Cuando el programa llega a la parte 'listo para leer los bytes', si el registro 'Remitente' no se cambia el pin RA0 a una salida de 0 y empieza outputing el primer byte. Luego busca el siguiente bit de arranque y salidas el siguiente byte. El registro 'Remitente' se disminuye en 1 y RA0 se cambia a una entrada para leer los últimos 6 bytes.
El registro que se utiliza 'Remitente' es porque la cámara de aceptar una orden, necesita ver el comando de algunos ciclos. Algunos sitios dicen que solo 3 son necesarios, pero como 1 ciclo sólo toma 20ms, enviar 5 veces (para estar en el lado seguro) sólo tarda 100ms para completar.
Espero este breve Instructable tiene sentido y que son capaces de hacer sus propia cams casco DIY. Siéntase libre de adaptar mi código a sus necesidades, pero por favor me crédito el código si publican en cualquier otro lugar.