/********************************************************** MAIN **********************************************************/ int main (void) { static int vbat1; //battery_voltage (lowpass-filtered) init(); buzzer(OFF); LL_write_init(); PTU_init(); ADC0triggerSampling(1<<VOLTAGE_1); //activate ADC sampling HL_Status.up_time=0; LED(1,ON); while(1) { if(mainloop_trigger) { if(GPS_timeout<ControllerCyclesPerSecond) GPS_timeout++; else if(GPS_timeout==ControllerCyclesPerSecond) { GPS_timeout=ControllerCyclesPerSecond+1; GPS_Data.status=0; GPS_Data.numSV=0; } //battery monitoring ADC0getSamplingResults(0xFF,adcChannelValues); vbat1=(vbat1*14+(adcChannelValues[VOLTAGE_1]*9872/579))/15; //voltage in mV HL_Status.battery_voltage_1=vbat1; mainloop_cnt++; if(!(mainloop_cnt%10)) buzzer_handler(HL_Status.battery_voltage_1); if(mainloop_trigger) mainloop_trigger--; mainloop(); } } return 0; }
/********************************************************** MAIN **********************************************************/ int main (void) { static int vbat1; //battery_voltage (lowpass-filtered) unsigned int TimerT1, TimerT2; init(); buzzer(OFF); LL_write_init(); //initialize AscTec Firefly LED fin on I2C1 (not necessary on AscTec Hummingbird or Pelican) I2C1Init(); I2C1_setRGBLed(255,0,0); /* Initialize I2C controller. by Xun */ I2CInit(I2CMASTER); ADC0triggerSampling(1<<VOLTAGE_1); //activate ADC sampling generateBuildInfo(); HL_Status.up_time=0; LED(1,ON); ACISDK(); //AscTec Communication Interface: publish variables, set callbacks, etc. //update parameters stored by ACI: //... PTU_init(); //initialize camera PanTiltUnit #ifdef MATLAB //ee_read((unsigned int*)&matlab_params); //read params from eeprom onboard_matlab_initialize(); //initialize matlab code #endif while(1) { if(mainloop_trigger) { TimerT1 = T0TC; if(GPS_timeout<ControllerCyclesPerSecond) GPS_timeout++; else if(GPS_timeout==ControllerCyclesPerSecond) { GPS_timeout=ControllerCyclesPerSecond+1; GPS_Data.status=0; GPS_Data.numSV=0; } //battery monitoring ADC0getSamplingResults(0xFF,adcChannelValues); vbat1=(vbat1*14+(adcChannelValues[VOLTAGE_1]*9872/579))/15; //voltage in mV HL_Status.battery_voltage_1=vbat1; mainloop_cnt++; if(!(mainloop_cnt%10)) buzzer_handler(HL_Status.battery_voltage_1); if(mainloop_trigger) mainloop_trigger--; mainloop(); // CPU Usage calculation TimerT2 = T0TC; if (mainloop_trigger) { HL_Status.cpu_load = 1000; mainloop_overflows++; } else if (TimerT2 < TimerT1) HL_Status.cpu_load = (T0MR0 - TimerT1 + TimerT2)*1000/T0MR0; // load = "timer cycles" / "timer cycles per controller cycle" * 1000 else HL_Status.cpu_load = (TimerT2 - TimerT1)*1000/T0MR0; // load = "timer cycles" / "timer cycles per controller cycle" * 1000 } } return 0; }