Andy Lustig
/
perturbRoom
perturb room
Fork of stateScript by
Diff: main.cpp
- Revision:
- 5:4d6575e3a07e
- Parent:
- 4:34aca2142df9
--- a/main.cpp Thu Sep 25 23:42:30 2014 +0000 +++ b/main.cpp Mon May 18 01:17:58 2015 +0000 @@ -14,7 +14,7 @@ //static char buf1[0x2000] __attribute__((section("AHBSRAM0"))); __attribute((section("AHBSRAM0"),aligned)) outputStream textDisplay(512); -__attribute((section("AHBSRAM0"),aligned)) char buffer[256]; +__attribute((section("AHBSRAM0"),aligned)) char buffer[128]; __attribute((section("AHBSRAM1"),aligned)) event eventBlock[NUMEVENTS]; @@ -56,60 +56,72 @@ //Define the digial ports //Pins for clock syncing -InterruptIn clockResetInt(p5); -DigitalOut clockOutSync(p6); -DigitalOut clockOutSignal(p7); -InterruptIn clockExternalIncrement(p8); - -//Camera trigger signal -//DigitalOut camera30Hz(p27); +//InterruptIn clockResetInt(p24); +DigitalOut clockOutSync(p19); +DigitalOut clockOutSignal(p29); +InterruptIn clockExternalIncrement(p30); //Pins for digital ports. Each port has 1 out and 1 in //DigitalOut out1(LED1); //route to LED for debugging -DigitalOut out1(p11); -DigitalIn in1(p12); -InterruptIn int1(p12); +//1A,1B +DigitalOut out1(p5); +DigitalIn in1(p6); +InterruptIn int1(p6); __attribute((section("AHBSRAM0"),aligned)) digitalPort port1(&out1, &in1); - -DigitalOut out2(p13); -DigitalIn in2(p14); -InterruptIn int2(p14); +//1C,1D +DigitalOut out2(p7); +DigitalIn in2(p8); +InterruptIn int2(p8); __attribute((section("AHBSRAM0"),aligned)) digitalPort port2(&out2, &in2); - - -DigitalOut out3(p15); -DigitalIn in3(p16); -InterruptIn int3(p16); +//2A,2B +DigitalOut out3(p17); +DigitalIn in3(p18); +InterruptIn int3(p18); __attribute((section("AHBSRAM0"),aligned)) digitalPort port3(&out3, &in3); - -DigitalOut out4(p18); -DigitalIn in4(p17); -InterruptIn int4(p17); +//2C,2D +DigitalOut out4(p11); +DigitalIn in4(p12); +InterruptIn int4(p12); __attribute((section("AHBSRAM0"),aligned)) digitalPort port4(&out4, &in4); - +//3A,3B DigitalOut out5(p21); DigitalIn in5(p22); InterruptIn int5(p22); __attribute((section("AHBSRAM0"),aligned)) digitalPort port5(&out5, &in5); - -DigitalOut out6(p23); -DigitalIn in6(p24); -InterruptIn int6(p24); +//3C,3D +DigitalOut out6(p15); +DigitalIn in6(p16); +InterruptIn int6(p16); __attribute((section("AHBSRAM0"),aligned)) digitalPort port6(&out6, &in6); +//4A,4B +//DigitalOut out7(p9); +//DigitalIn in7(p10); +//InterruptIn int7(p10); +//__attribute((section("AHBSRAM0"),aligned)) digitalPort port7(&out7, &in7); +//5A,5B +DigitalOut out7(p13); +DigitalIn in7(p14); +InterruptIn int7(p14); +__attribute((section("AHBSRAM0"),aligned)) digitalPort port7(&out7, &in7); +//6A,6B +DigitalOut out8(p23); +DigitalIn in8(p24); +InterruptIn int8(p24); +__attribute((section("AHBSRAM0"),aligned)) digitalPort port8(&out8, &in8); +//Pump1 +DigitalOut out9(p25); +__attribute((section("AHBSRAM0"),aligned)) digitalPort port9(&out9); +//Pump2 +DigitalOut out10(p26); +__attribute((section("AHBSRAM0"),aligned)) digitalPort port10(&out10); -DigitalOut out7(p25); -DigitalIn in7(p26); -InterruptIn int7(p26); -__attribute((section("AHBSRAM0"),aligned)) digitalPort port7(&out7, &in7); -DigitalOut out8(p29); -DigitalIn in8(p30); -InterruptIn int8(p30); -__attribute((section("AHBSRAM0"),aligned)) digitalPort port8(&out8, &in8); + //Serial communication Serial pc(USBTX, USBRX); // tx, rx + //Main event queue eventQueue mainQueue(portVector, &timeKeeper); @@ -117,8 +129,8 @@ scriptStream parser(&pc, portVector, NUMPORTS, &mainQueue); //The sound output uses a SmartWav device and their simple serial library -SMARTWAV sWav(p9,p10,p19); //(TX,RX,Reset); - +SMARTWAV sWav(p28,p27,p20); //(TX,RX,Reset); +Serial device(p9,p10); //Erases the input buffer for serial input void eraseBuffer(char* buffer,int numToErase) { for (int i = 0; i < numToErase; i++) { @@ -200,7 +212,6 @@ currentBroadcastBit = 0; } - //Every second, we broadcast out the current time if ((timeKeeper % 1000) == 0) { currentBroadcastTime = timeKeeper; @@ -268,6 +279,9 @@ void callback_port7_fall(void) { int_callback(7, 0); } void callback_port8_rise(void) { int_callback(8, 1); } void callback_port8_fall(void) { int_callback(8, 0); } +//void callback_port9_rise(void) { int_callback(9, 1); } +//void callback_port9_fall(void) { int_callback(9, 0); } + //This function is attached to an interrupt pin for external clock reset void callback_clockReset(void) { @@ -281,11 +295,12 @@ int main() { timeKeeper = 0; //set main clock to 0; - sWav.reset(); +// sWav.reset(); pc.baud(115200); + device.baud(4800); //pc.baud(9600); - for (int i = 0; i < 9; i++) { + for (int i = 0; i <NUMPORTS+1; i++) { portVector[i] = NULL; } //We keep portVector 1-based to eliminate confusion @@ -297,6 +312,9 @@ portVector[6] = &port6; portVector[7] = &port7; portVector[8] = &port8; + portVector[9] = &port9; + portVector[10] = &port10; + //portVector[11] = &port11; //Callback to update the main clock //timeTick1.attach_us(&incrementTime, 100); @@ -321,9 +339,11 @@ int7.fall(&callback_port7_fall); int8.rise(&callback_port8_rise); int8.fall(&callback_port8_fall); +// int9.rise(&callback_port9_rise); +// int9.fall(&callback_port9_fall); - clockResetInt.rise(&callback_clockReset); - clockResetInt.mode(PullDown); + //clockResetInt.rise(&callback_clockReset); + //clockResetInt.mode(PullDown); clockExternalIncrement.mode(PullDown); @@ -336,11 +356,12 @@ in6.mode(PullDown); in7.mode(PullDown); in8.mode(PullDown); +// in9.mode(PullDown); //Set up input buffer for the serial port //char buffer[128]; int bufferPos = 0; - eraseBuffer(buffer,256); + eraseBuffer(buffer,128); ostringstream timeConvert; // stream used for the conversion ostringstream stateConvert; @@ -363,14 +384,14 @@ if ((tmpChar == 13) || (tmpChar == 10)) { //carrriage return parser.addLineToCurrentBlock(buffer); bufferPos = 0; - eraseBuffer(buffer,256); + eraseBuffer(buffer,128); } //pc.putc(tmpChar); } while (tmpChar != EOF); buffer[bufferPos] = 59; parser.addLineToCurrentBlock(buffer); - eraseBuffer(buffer,256); + eraseBuffer(buffer,128); fclose(fp); } else { pc.printf("No startup script found.\r\n"); @@ -381,6 +402,10 @@ //check the main event queue to see if anything needs to be done mainQueue.check(); + //https://developer.mbed.org/handbook/Serial + if(device.readable()) { + pc.putc(device.getc()); + } //check if anything has been written to the serial input if (pc.readable()) {