Stap 3: Wat is LANC en hoe werkt het programma?
Als u deze link bezoekt, zal het vertellen u hoe de Sony LANC-protocol werkt, en alle opdrachten en cameragegevens beschikbaar op het LANC-protocol:
http://www.boehmel.de/LANC.htm
Zoals u zien kunt, kunt u een heleboel informatie van zowel de camera als controle van elke functie van de camera via de LANC communicatiepoort.
Mijn code is erg basic en het .CATPart-bestand kan worden geladen in MPLAB (vrij van Micochip.com) en geprogrammeerd met behulp van de PicKit2 vrij gemakkelijk.
Hoe werkt de code:
Als u de broncode downloadt, het helemaal door je te vertellen wat er gebeurt is gedocumenteerd, maar ik geef een korte expanation hier ook.
Er zijn 8 bytes op de LANC poort elke 20ms (16,6ms voor NTSC). Elke byte heeft een Start bits gevolgd door 8 bits, elk op een lengte van 104uS. Er is een hiaat van over 200uS - 400uS tussen bytes. Nadat alle 8 bytes '' op de lijn LANC verschenen zijn, is er een lange kloof (5-8 ms) waar de LANC lijn is "opgeheven", en dan de dezelfde 8 bytes 'verschijnen' weer.
-Wanneer het programma wordt gestart, het houdt de LANC input totdat het '' het hoog voor een langere periode dan de 1000uS ziet controleren, dit betekent dat we in de kloof tussen de 8ste byte en de eerste byte.
-Vervolgens wacht het programma om te zien de Start Bit (logic 0) op de regel. Dit gebeurt wanneer het programma wacht op 52uS (de helft een bitlengte) en controles opnieuw om ervoor te zorgen dat er nog steeds een logica 0 op de LANC-regel. Zo ja, weten we dat we hebben een geldige Start Bit en zijn klaar om te lezen van de byte.
-We nu wachten op 104uS (de lengte van 1 bit), zodat we rechts in het midden van de volgende bits op de LANC-regel. Wij Lees dit stukje, wachten 104uS en nogmaals door te lezen. Dit blijft voor alle 8-bits. We hebben nu 0 Byte.
-Het programma vervolgens wacht op de volgende Start Bit en voert dezelfde taak om Byte 1, 2, 3, 4, 5, 6 en 7.
Byte 4 is degene die ik in het programma gebruiken om de informatie over het vastleggen van de status van de camera, maar zoals u in de link die ik zien kunt, er is een heleboel informatie beschikbaar!
Rechts, dat is de lezing die de lijn LANC besproken, wat over schrijven naar het besturingselement de camera?
-Wanneer een knop is ingedrukt, 2 registers worden geladen met de bytes nodig de specifieke bewerking uit te voeren en een register genaamd 'Afzender' is geladen met het getal 5 (ik zal uitleggen waarom later). Wanneer het programma wordt tot het 'klaar om te lezen van de bytes' deel, als het register 'Afzender' niet is 0 it verandert de RA0 pin in een vermogen en outputing de eerste byte begint. Vervolgens zoekt de volgende startbit en uitgangen van de volgende byte. Het register 'Afzender' is verlaagd door 1 en RA0 terug op een ingang om te lezen van de laatste 6 bytes wordt gewijzigd.
De reden is het register "Afzender" wordt gebruikt omdat voor de camera te aanvaarden van een opdracht, het moet kunnen zien van de opdracht voor een paar cycli. Sommige sites zeggen slechts 3 zijn nodig, maar als 1 cyclus slechts 20ms duurt, het verzenden van het 5 keer (om aan de veilige kant) alleen duurt 100ms om te voltooien.
Ik hoop dat dit korte Instructable zinvol en je bent in staat om uw eigen DIY helm webcams. Voel je vrij aanpassen mijn code aan uw behoeften, maar gelieve me een krediet voor de code als u het ergens anders publiceert.