int main(void) { InitHardware(); dmInit(); sei(); // enable interrupts GoToSleep(); button |= PB_ACK; while(1) { if (button == PB_RELEASE) { // short button press msg_ptr = DisplayMessage(msg_ptr); button |= PB_ACK; } if (button == PB_LONGPRESS) { // button pressed for some seconds dmClearDisplay(); dmPrintChar(130); // sad smiley _delay_ms(500); GoToSleep(); button |= PB_ACK; } } // of while(1) }
//========================================================================= //----- (0000782C) -------------------------------------------------------- __myevic__ void SleepIfIdle() { if ( !gFlags.firing && !NoEventTimer ) { if ( ( Screen == 0 ) && ( SleepTimer == 0 ) && ( gFlags.user_idle ) ) { GoToSleep(); byte_200000B3 = 2; AtoProbeCount = 0; AtoRezMilli = 0; gFlags.sample_vbat = 1; ReadBatteryVoltage(); if (( BatteryVoltage <= BatteryCutOff + 20 ) && !gFlags.usb_attached ) { dfStatus.off = 1; Screen = 0; } gFlags.sample_btemp = 1; } NoEventTimer = 200; } }
void main(void) { signed char ret = 0; signed char lastMenu = 0; char pnum = 0; SetupIO(); MOTOR_FORWARD = 0; MOTOR_REVERSE = 0; Move_shifted_position.ul = 0; Move_position[0].ul = 0; Move_position[1].ul = 0; //PID_SetPoint = 0; char idx; for (idx = 0; idx < 16; idx++) RotaryDetentIntervals[idx] = 0xFF; LoadSettings(); //FactoryDefault(); SetupHardware(); LCD_PowerUp(); LCD_ClearDisplay(); LCD_PrintString("CINEFLUX ORBIT\0"); LCD_SetPosition(1, 0); LCD_PrintString(VER); Wait_ms(2000); const char *COMMAND_0 = "ORBIT MODE\0"; const char *COMMAND_1 = "WAYPOINT MODE\0"; const char *COMMAND_3 = "RUN PRESET\0"; const char *COMMAND_2 = "REALTIME MODE\0"; const char *COMMAND_4 = "BATTERY VOLTAGE\0"; const char *COMMAND_5 = "GO TO SLEEP\0"; const char *COMMAND_6 = "EXTERNAL CTRL MODE\0"; const char*CommandMenu[7]; CommandMenu[0] = COMMAND_0; CommandMenu[1] = COMMAND_1; CommandMenu[2] = COMMAND_2; CommandMenu[3] = COMMAND_3; CommandMenu[4] = COMMAND_4; CommandMenu[5] = COMMAND_5; CommandMenu[6] = COMMAND_6; bFollowMode = 1; LCD_ClearDisplay(); LCD_PrintString("MOVE TO ZERO DEGREES\0"); LCD_SetPosition(1, 0); LCD_PrintString("THEN CLICK...\0"); GetClick(); bClear_MotorPosition = 1; while (bClear_MotorPosition) Idle(); Wait_ms(10); bFollowMode = 0; LCD_ClearDisplay(); while (1) { UI_Location = UI_LOC_MAINMENU; ret = DisplayMenu(CommandMenu, 6, lastMenu); labelProcessCommand: switch (ret) { case 0: case USER_INPUT_MACRO_ORBITMODE: lastMenu = 0; ret = CreateOrbitProgram(); if (ret == -2) RealtimeMode(); if (ret == -1) RealtimeMode(); if (ret<-2) goto labelProcessCommand; break; case 1: case USER_INPUT_MACRO_WAYMODE: lastMenu = 1; ret = CreateWaypointProgram(); if (ret<-2) goto labelProcessCommand; if (ret < 0) { ret = RealtimeMode(); if (ret<-2) goto labelProcessCommand; } break; case 3: lastMenu = 3; ret = GetPresetNumber(); if (ret == -1) break; if (ret == -2) break; if (ret<-2) goto labelProcessCommand; pnum = ret; ret = RunPreset(pnum); if (ret<-2) goto labelProcessCommand; break; case 2: case USER_INPUT_MACRO_REALMODE: lastMenu = 0; ret = RealtimeMode(); if (ret<-2) goto labelProcessCommand; break; case 4: lastMenu = 0; ret = ShowVoltage(); if (ret<-2) goto labelProcessCommand; break; case 5: case USER_INPUT_MACRO_SLEEP: lastMenu = 0; GoToSleep(); break; case 6: case USER_INPUT_MACRO_EXTMODE: lastMenu = 0; ret = ExtMode(); if (ret<-2) goto labelProcessCommand; break; case USER_INPUT_MACRO_RUNPRESET0: ret = RunPreset(1); if (ret<-2) goto labelProcessCommand; break; case USER_INPUT_MACRO_RUNPRESET1: ret = RunPreset(2); if (ret<-2) goto labelProcessCommand; break; case USER_INPUT_MACRO_RUNPRESET2: ret = RunPreset(3); if (ret<-2) goto labelProcessCommand; break; case USER_INPUT_MACRO_RUNPRESET3: ret = RunPreset(4); if (ret<-2) goto labelProcessCommand; break; case USER_INPUT_MACRO_RUNPRESET4: ret = RunPreset(5); if (ret<-2) goto labelProcessCommand; break; } } }
void main(void) { signed char ret = 0; signed char lastMenu = 0; char pnum = 0; SetupIO(); MOTOR_FORWARD = 0; MOTOR_REVERSE = 0; Move_shifted_position.ul = 0; Move_position[0].ul = 0; Move_position[1].ul = 0; //PID_SetPoint = 0; char idx; for (idx = 0; idx < 16; idx++) RotaryDetentIntervals[idx] = 0xFF; //LoadSettings(); FactoryDefault(); SetupHardware(); LCD_PowerUp(); LCD_ClearDisplay(); LCD_PrintString("CINEFLUX ORBIT\0"); LCD_SetPosition(1,0); LCD_PrintString(VER); Wait_ms(2000); const char *COMMAND_0 = "ORBIT MODE\0"; const char *COMMAND_1 = "WAYPOINT MODE\0"; const char *COMMAND_3 = "RUN PRESET\0"; const char *COMMAND_2 = "REALTIME MODE\0"; const char *COMMAND_4 = "BATTERY VOLTAGE\0"; const char *COMMAND_5 = "GO TO SLEEP\0"; const char *COMMAND_6 = "EXTERNAL CTRL MODE\0"; const char*CommandMenu[7]; CommandMenu[0] = COMMAND_0; CommandMenu[1] = COMMAND_1; CommandMenu[2] = COMMAND_2; CommandMenu[3] = COMMAND_3; CommandMenu[4] = COMMAND_4; CommandMenu[5] = COMMAND_5; CommandMenu[6] = COMMAND_6; bFollowMode = 1; LCD_ClearDisplay(); LCD_PrintString("MOVE TO ZERO DEGREES\0"); LCD_SetPosition(1, 0); LCD_PrintString("THEN CLICK...\0"); GetClick(); bClear_MotorPosition = 1; while (bClear_MotorPosition) Idle(); Wait_ms(10); bFollowMode = 0; LCD_ClearDisplay(); while (1) { ret = DisplayMenu(CommandMenu, 6, lastMenu); switch (ret) { case 0: lastMenu = 0; if (!CreateOrbitProgram() == 0) RealtimeMode(); break; case 1: lastMenu = 1; if (!CreateWaypointProgram() == 0) RealtimeMode(); break; case 3: lastMenu = 2; ret = GetPresetNumber(); if (ret == -1) break; if (ret == -2) break; pnum = ret; switch (GetPresetType(pnum)) { case 1: LoadPreset(pnum, (unsigned char *) &CurrentPath); if (!RunWaypointProgram() == 0) RealtimeMode(); break; case 2: LoadPreset(pnum, (unsigned char *) &CurrentOrbitProgram); if (!RunOrbitProgram() == 0) RealtimeMode(); break; } break; case 2: lastMenu = 2; RealtimeMode(); break; case 4: lastMenu = 0; ShowVoltage(); break; case 5: lastMenu = 0; GoToSleep(); break; case 6: lastMenu = 0; ExtMode(); break; } } }
int main(int argc, char** argv) { //Initializations InitCLK(); InitGPIO(); InitADC(); //InitSPI(); InitTimer0(); InitTimer1(); InitWatchdog(); InitUART(); //Initialize UART module unsigned char periodicCounter = MIN_PERIOD; gpsIndex = 0; INTCONbits.GIE = 1; ToggleSleepGPS(); //Turn GPS on SetupGPS(); //Setup Lat/Long recording PORTBbits.PORTB = LATBbits.LATB & 0xDF; //turn red LED off PORTBbits.PORTB = LATBbits.LATB | 0x10; //turn green LED on __delay_ms(100); PORTBbits.PORTB = LATBbits.LATB & 0xEF; //turn green LED off SPI_CS = CS_IDLE;//prerecord while(1){ //PRE_RECORD FUNCTION //InitSPI(); //Start-up SPI again //PreRecordMode(); //SSPCON1bits.SSPEN=0; // Disable SPI Port //PORTCbits.RC5 = 0; //Set MOSI low //SPI_CS = CS_IDLE;//prerecord //__delay_ms(5); SPI_CS = CS_IDLE; //Check Flags if(PORTAbits.RA1) { //Strobe LED PORTBbits.RB0 = 1; __delay_ms(100); PORTBbits.RB0 = 0; } if(recordFlag) { RecordMode(); recordFlag = 0; __delay_ms(500); //trying to get gps to not hangup } //Not recording, Update the GPS if(gpsTimeoutState==0) UpdateGPS(); //tell GPS to send an update else if(gpsTimeoutState==1) { ToggleSleepGPS(); gpsTimeoutState = 2; } else if(gpsTimeoutState==2) { ToggleSleepGPS(); gpsTimeoutState = 3; } else if(gpsTimeoutState==3) { __delay_ms(1000); gpsTimeoutState = 0; } else { gpsTimeoutState = 0; } if(gpsInvalidFlag) //turn on red LED if invalid message { PORTBbits.PORTB = LATBbits.LATB | 0x20; //turn red LED on PORTBbits.PORTB = LATBbits.LATB & 0xEF; //turn green LED off __delay_ms(250); PORTBbits.PORTB = LATBbits.LATB & 0xDF; //turn red LED off if(periodicCounter < MAX_PERIOD) periodicCounter++; } else //turn on green LED if valid message { PORTBbits.PORTB = LATBbits.LATB | 0x10; //turn green LED on PORTBbits.PORTB = LATBbits.LATB & 0xDF; //turn red LED off __delay_ms(250); PORTBbits.PORTB = LATBbits.LATB & 0xEF; //turn green LED off periodicCounter = MIN_PERIOD; } if(!recordFlag) { if(PORTAbits.RA1) //check strobe GoToSleep(MIN_PERIOD); else if(gpsInvalidFlag) GoToSleep(periodicCounter); else { ToggleSleepGPS(); //Turn GPS off Hibernate(); ToggleSleepGPS(); //Turn GPS on } } } return (EXIT_SUCCESS); }