Changes to allow hardware camera trigger
Fork of GPS_Incremental by
Revision 10:078891935385, committed 2013-04-18
- Comitter:
- dannyman939
- Date:
- Thu Apr 18 00:59:49 2013 +0000
- Parent:
- 9:13724ed3f825
- Commit message:
- Hardware trigger camera using the DigitalOut of Pin 2
Changed in this revision
PCMessaging.h | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/PCMessaging.h Wed Apr 17 13:50:21 2013 +0000 +++ b/PCMessaging.h Thu Apr 18 00:59:49 2013 +0000 @@ -8,6 +8,7 @@ const unsigned char STOPSTREAM_MSG =5; const unsigned char STARTLOGINFO_MSG =6; const unsigned char STOPLOGINFO_MSG =7; +const unsigned char SEND_TRIG =8; const double DEGREES_TO_RADIANS = acos(-1.0)/180.0; const double eccen = 0.0818191908426; //WGS84 earth eccentricity @@ -25,9 +26,10 @@ bool logMsgInfo =false; bool sendLogMsgInfo =false; bool recordData =false; +bool camtrg =false; -const unsigned char numMessages = 8; //number of potential messages +const unsigned char numMessages = 9; //number of potential messages char msgList[numMessages][32]; //text array storing the command messages from the PC char minMessageSize = 11; //minimum size of a text message unsigned char CR = 0x0d; //ASCII Carriage Return @@ -44,6 +46,7 @@ sprintf(msgList[STOPSTREAM_MSG], "WMsg POSSTREAM N"); sprintf(msgList[STARTLOGINFO_MSG], "WMsg LOGINFO Y"); sprintf(msgList[STOPLOGINFO_MSG], "WMsg LOGINFO N"); + sprintf(msgList[SEND_TRIG], "WMsg SEND_TRIG"); //message length is from 10 to 16 chars toPC.printf(" finished setting up messages \n"); @@ -116,7 +119,10 @@ case STOPLOGINFO_MSG: logMsgInfo = (m == STARTLOGINFO_MSG); sendLogMsgInfo = true; - break; + break; + case SEND_TRIG: + camtrg = true; //send a posvel message back to PC + break; } //end Switch statement break; } //end test for a valid message @@ -213,6 +219,12 @@ //we should put the below stuff into the readPC() procedure. //only do these actions in response to a command so no need for the tests w/o an inoput byte from the PC //perform the activities as a response to the commands + + if (camtrg) //true if camera trigger command sent from PC + { + camera1EventDetected=true; + + } if (sendPosVel) //true if we want to return a position solution { sendPosVel=false; //set to true if a POSVEL is requested from the PC
--- a/main.cpp Wed Apr 17 13:50:21 2013 +0000 +++ b/main.cpp Thu Apr 18 00:59:49 2013 +0000 @@ -14,7 +14,7 @@ DigitalOut ppsled(LED1); //blink an LED at the 1PPS DigitalOut trig1led(LED2); //blink an LED at the camera trigger detection DigitalOut recordDataled(LED4); //set the led when the record is on -InterruptIn camera1Int(p30); // camera interrupt in +//InterruptIn camera1Int(p30); // camera interrupt in DigitalOut camera2Pin(p29); // We dont use the second camera interrupt //USB serial data stream back to the PC Serial toPC(USBTX, USBRX); //connect the GPS TX, RX to p9 and p10 @@ -65,15 +65,15 @@ }; //ISR for detection of the hotshoe trigger 1 -void camera1ISR(void) -{ +//void camera1ISR(void) +//{ //GPSTime is from POS message header //PPSTimeOffset is an even sec to account for Time becoming known AFTER the 1PPS //PPSTimeOffset + timeFromPPS.read() can be as large as 1.02 secs - camera1Time = GPSTime + PPSTimeOffset + timeFromPPS.read(); - camera1EventDetected = true; //reset to false in main after processing the image detection - trig1led = !trig1led; //blink an LEWD at the camera event detection -}; +// camera1Time = GPSTime + PPSTimeOffset + timeFromPPS.read(); +// camera1EventDetected = true; //reset to false in main after processing the image detection +// trig1led = !trig1led; //blink an LEWD at the camera event detection +//}; /////////////////////////////////////////////////////// //set up the USB port and the GPS COM port @@ -171,10 +171,10 @@ void setupTriggers() { - camera1Int.mode(PullUp); +// camera1Int.mode(PullUp); camera2Pin = 1; //establish Trigger ISR - camera1Int.rise(&camera1ISR); +// camera1Int.rise(&camera1ISR); }; @@ -352,7 +352,14 @@ if (camera1EventDetected) //we have detected a camera trigger event { + camera2Pin=0; + wait(.25); + camera2Pin=1; + wait(.50); + camera2Pin=0; + camera1Time = GPSTime + PPSTimeOffset + timeFromPPS.read(); toPC.printf("WMsg TRIGGERTIME %5.3lf\n", camera1Time); + camera2Pin=1; camera1EventDetected = false; }