int main( void ) { //set the length of the queues -> how many items the queue can hold const unsigned portBASE_TYPE measurementQueueLength = 5; //const unsigned portBASE_TYPE statusQueueLength = 5; xQueueHandle measurementQueue; //xQueueHandle statusQueue; // ...for temperature and pressure sensor double temperature = 0; int32_t pressure = 0; double altitude = 0; //configure time measurment pin as output //DDRD |= (1<<PB7); bmp085_init(); while( 1 ) { temperature = bmp085_gettemperature(); //pressure = bmp085_getpressure(); //altitude = bmp085_getaltitude(); //altitude = bmp085CalcAltitude ( pressure ); //_delay_ms(100); } //prvIncrementResetCount(); //create queues for intertask communication measurementQueue = xQueueCreate( measurementQueueLength, ( unsigned portBASE_TYPE ) sizeof( measurementQueueMsg * ) ); //statusQueue = xQueueCreate( statusQueueLength, ( unsigned portBASE_TYPE ) sizeof( statusQueueMsg * ) ); /* Create the tasks. */ startCommunicationTask( mainCOMMUNICATION_TASK_PRIORITY, &measurementQueue ); startNavigatorTask( mainNAVIGATOR_TASK_PRIORITY, &measurementQueue ); startOperatorTask( mainOPERATOR_TASK_PRIORITY, &measurementQueue ); startSensorTask( mainSENSOR_TASK_PRIORITY, &measurementQueue); /* In this port, to use preemptive scheduler define configUSE_PREEMPTION as 1 in portmacro.h. To use the cooperative scheduler define configUSE_PREEMPTION as 0. */ vTaskStartScheduler(); return 0; }
/* Summarization of all Sensor Readouts + RTC */ void Get_Weather_Data() { if (issetup==0) ds1307_getdate(&time[0], &time[1], &time[2], &time[3], &time[4], &time[5]); if (my_state == DISP_TEMP) weather.temp = bmp085_gettemperature()-2.4; //Calibration if (my_state == DISP_PRESS) //problem with i2c Communication, if temperature and pressure are readout after each other => bljad { weather.pres = bmp085_getpressure(); weather.pres = (weather.pres/100000)+0.16; //Calibration } //weather.hum = Get_Hum(); weather.lux = Get_Light(); }