- USI_TWI_Master_Initialise();\r
- \r
- SHT2x_SoftReset();\r
- SHT2x_ReadUserRegister(userRegister);\r
- SHT2x_WriteUserRegister(userRegister); //write changed user reg\r
- gcontrol=1;\r
- sei();\r
- //DDRB|=(1<<PINB1);\r
- while(1) {\r
- if (pack1.config==0x1F) {\r
- pack1.config=0x7F;\r
- R0=1;\r
- pack2.R0=0;\r
- writeEEPROM(EEPROM_R0,0);\r
- } \r
- if (pack1.config==0x05) {\r
- pack1.config=0x7F; \r
- pack2.r_day_max=1;\r
- pack2.r_week_max=1;\r
- pack2.tol_d=0;\r
- pack2.tol_s8=0; //Tag faengt mit Einschalten an \r
- R0=1; \r
- writeEEPROM(EEPROM_R0,0xFF);\r
- writeEEPROM(EEPROM_R0d,0xFF); //Maximum des Tages\r
- writeEEPROM(EEPROM_R0w,0xFF); //Maximum der Letzten 7 Tage\r
- writeEEPROM(EEPROM_dol,0xFF); //Anzahl der Betriebstage \r
- for(uint8_t i=0;i<7;i++) {\r
- weekmaxarr[i]=1;\r
- } \r
- } \r
- if (wdcounter>0) {\r
- pack2.tol_s8++;\r
- if (pack2.tol_s8>(10000)) {//10800 ist theortisch der Tag aber meistens zu lang\r
- pack2.tol_s8=0;\r
- pack2.tol_d++; //rund 180 Jahre :-)\r
- pack2.r_week_max=0;\r
- weekmaxarr[7]=pack2.r_day_max;\r
- for(uint8_t i=0;i<7;i++) {\r
- weekmaxarr[i]=weekmaxarr[i+1];\r
- //maximum of week\r
- if (weekmaxarr[i]>pack2.r_week_max) pack2.r_week_max=weekmaxarr[i];\r
- }\r
- if (pack2.tol_d>7) {\r
- pack2.R0=pack2.r_week_max;\r
- } else {\r
- pack2.R0=pack2.r_day_max;\r
- }\r
- //R0=//R0-0.5*(pack2.R0/100-R0);\r
- R0=R0-(R0-pack2.R0/100.0)*0.5 ;\r
- pack2.R0=R0*100;\r
- writeEEPROM(EEPROM_R0,pack2.R0);\r
- writeEEPROM(EEPROM_R0d,pack2.r_day_max); //Maximum des Tages\r
- writeEEPROM(EEPROM_R0w,pack2.r_week_max); //Maximum der Letzten 7 Tage\r
- writeEEPROM(EEPROM_dol,pack2.tol_d); //Anzahl der Betriebstage\r
- pack2.r_day_max=0;\r
- }\r
- if (startup!=0) startup--;\r
- SHT2x_MeasurePoll(HUMIDITY, &sRH);\r
- // --- measure temperature with "Polling Mode" (no hold master) ---\r
- SHT2x_MeasurePoll(TEMP, &sT);\r
- //-- calculate humidity and temperature --\r
- temperatureC = SHT2x_CalcTemperatureC(sT);\r
- humidityRH = SHT2x_CalcRH(sRH);\r
- ip=interp(temperatureC,humidityRH);\r
- pack2.ip=ip*1000;\r
- humidityRH=calibr_hum(temperatureC,-0.2,humidityRH)*10.0;\r
- //humidityRH=humidityRH*10.0;\r
- temperatureC =temperatureC *10.0-2;\r
-\r
-\r
- if (testSW()) {\r
- am2302_hum= humidityRH*10.0;\r
- am2302_temp=temperatureC*25.6;\r
- //am2302_temp=am2302_temp-45;\r
- config_info2[5]=8; \r
+ int main(void){\r
+ PORTA=0xFF-(1<<PINA1);\r
+ PORTB=0xFF-(1<<PORTB0); //Schalter kann gegen Masse sein und zieht dann immer Strom\r
+ DDRB|=(1<<PORTB0); //Als Ausgang und 0\r
+ OWINIT();\r
+ DDRB|=(1<<PINB1);//Ausgang und 1\r
+ DDRA|=(1<<PINA0);\r
+ \r
+ WDTCSR |= ((1<<WDCE) ); // Enable the WD Change Bit//| (1<<WDE)\r
+ WDTCSR |= (1<<WDIE) | // Enable WDT Interrupt\r
+ //(1<<WDP0) |(1<<WDP2) | (1<<WDP1); // Set Timeout to ~2 seconds\r
+ (1<<WDP3) | (1<<WDP0); // Set Timeout to ~8 seconds\r
+\r
+ MCUSR=0;\r
+\r
+ //ADMUX=0b00001110; //ADC1 + ADC3 -\r
+ ADMUX=0x01 ; //PA3 single and 3V\r
+ ADCSRA = (1<<ADEN)|(1<<ADPS1)|(1<<ADPS0);//|\r
+ pack1.temp=0x0550;\r
+ pack1.config=0x7F;\r
+ pack1.TH=75;\r
+ pack1.TL=70;\r
+ pack1.rrFF=0xFF;\r
+ pack1.rr00=0;\r
+ pack1.rr10=0x10;\r
+\r
+ pack2.cmode=0;\r
+ pack2.R0=readEEPROM(EEPROM_R0,1);\r
+ R0=pack2.R0/100.0;\r
+ \r
+ pack2.r_day_max=readEEPROM(EEPROM_R0d,1);\r
+ pack2.r_week_max=readEEPROM(EEPROM_R0w,1);\r
+ pack2.tol_d=readEEPROM(EEPROM_dol,0);\r
+ pack2.tol_s8=0; //Tag faengt mit Einschalten an\r
+ for(uint8_t i=0;i<7;i++) {\r
+ weekmaxarr[i]=pack2.r_week_max;\r
+ }\r
+\r
+ if (testSW()) {\r
+ config_info2[5]=12;\r