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;
}
