-\r
-// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de\r
-// All rights reserved.\r
-//\r
-// Redistribution and use in source and binary forms, with or without\r
-// modification, are permitted provided that the following conditions are\r
-// met:\r
-//\r
-// * Redistributions of source code must retain the above copyright\r
-// notice, this list of conditions and the following disclaimer.\r
-// * Redistributions in binary form must reproduce the above copyright\r
-// notice, this list of conditions and the following disclaimer in the\r
-// documentation and/or other materials provided with the\r
-// distribution.\r
-// * All advertising materials mentioning features or use of this\r
-// software must display the following acknowledgement: This product\r
-// includes software developed by tm3d.de and its contributors.\r
-// * Neither the name of tm3d.de nor the names of its contributors may\r
-// be used to endorse or promote products derived from this software\r
-// without specific prior written permission.\r
-//\r
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
-\r
-\r
-#define F_CPU 8000000UL\r
-#include <avr/io.h>\r
-#include <avr/interrupt.h>\r
-#include <util/delay.h>\r
-#include <avr/wdt.h>\r
-#include <avr/sleep.h>\r
-\r
-\r
-extern void OWINIT();\r
-\r
-uint8_t owid[8]={0x12, 0xA2, 0xD9, 0x84, 0x00, 0x26, 0x02, 0x1E};/**/\r
-\r
- \r
-\r
-extern uint8_t mode;\r
-extern uint8_t gcontrol;\r
-extern uint8_t reset_indicator;\r
-\r
-\r
-\r
-typedef union {\r
- volatile uint8_t bytes[1];\r
- struct {\r
- uint8_t status;\r
- };\r
-} pack_t;\r
-pack_t pack;\r
-\r
-\r
-\r
-\r
-int main(void){\r
- PRR|=(1<<PRUSI)|(1<<PRADC); //Switch off usi and adc for save Power\r
- OWINIT();\r
- \r
- ACSR|=(1<<ACD); //Disable Comparator\r
- ADCSRB|=(1<<ACME); //Disable Analog multiplexer\r
- MCUCR &=~(1<<PUD); //All Pins Pullup...\r
- \r
- \r
- \r
-\r
-\r
-\r
-#ifdef _EEPROM_SAVE_\r
- EEARH=0;\r
- \r
- uint8_t addr;\r
- for(uint8_t i=0;i<16;i++) {\r
- addr=i^0x0C;\r
- while(EECR & (1<<EEPE)); \r
- EEARL=i;\r
- EECR |= (1<<EERE);\r
- counters.c8[addr]=EEDR;\r
- }\r
- for (uint8_t i=0;i<4;i++) {\r
- if (counters.c32[i]==0xFFFFFFFF) counters.c32[i]=0;\r
- //counters.c32[i]=0;\r
- }\r
-\r
- /*for(uint8_t i=0;i<16;i++) {\r
- while(EECR & (1<<EEPE));\r
- EECR = (1<<EEPM0);\r
- EEARL = i;\r
- EECR |= (1<<EEMPE);\r
- EECR |= (1<<EEPE);\r
- }*/\r
- \r
- \r
-#endif\r
- sei();\r
- while(1) {\r
- \r
- //Test if timer active and no sleep then Idle else Power Down\r
- if (TEST_TIMER&&(mode==0)) {\r
- MCUCR|=(1<<SE)|(1<<SM1); //Power Down, only low level on 1-Wire and pin change on PCINT wakes up\r
- MCUCR&=~(1<<ISC01);\r
- } else {\r
- MCUCR|=(1<<SE);\r
- MCUCR&=~(1<<SM1); \r
- }\r
- asm("SLEEP");\r
- }\r
-}
\ No newline at end of file