Many changes from 2018
[owSlave2.git] / DS2423_DS2423 / DS2423_DS2423.c
index 1dbd395..9166850 100644 (file)
 extern void OWINIT(void);\r
 extern void EXTERN_SLEEP(void);\r
 \r
+\r
 //#define FHEM_PLATINE\r
+//#define JOE_M\r
+#define W1DAQ\r
 \r
 volatile uint8_t owid1[8]={0x1D, 0x40, 0xDA, 0x84, 0x00, 0x00, 0x05, 0xBD};/**/\r
 volatile uint8_t owid2[8]={0x1D, 0x41, 0xDA, 0x84, 0x00, 0x00, 0x05, 0x8A};/**/\r
@@ -102,7 +105,9 @@ volatile uint8_t changefromeeprom;
 //LEDS\r#define LPIN_CH2 (1<<PINB0)\r#define LDD_CH2 DDRB\r#define LPORT_CH2 PORTB\r#define LPIN_CH3 (1<<PINA5)\r#define LDD_CH3 DDRA\r#define LPORT_CH3 PORTA\r#define LPIN_CH0 (1<<PINA7)\r#define LDD_CH0 DDRA\r#define LPORT_CH0 PORTA\r#define LPIN_CH1 (1<<PINB1)\r#define LDD_CH1 DDRB\r#define LPORT_CH1 PORTB\r
 \r
 #define LED2_ON LPORT_CH2|=LPIN_CH2;\r
-#else\r
+#endif\r
+\r
+#ifdef JOE_M\r
 #define LED2_ON\r
 #define PIN_CH2 (1<<PINA4)\r
 #define PIN_CH3 (1<<PINA5)\r
@@ -110,6 +115,16 @@ volatile uint8_t changefromeeprom;
 #define PIN_CH1 (1<<PINA7)\r
 #endif\r
 \r
+#ifdef W1DAQ\r
+#define PIN_CH3 (1<<PINA1)\r
+#define PIN_CH2 (1<<PINA0)\r
+#define PIN_CH1 (1<<PINA7)\r
+#define PIN_CH0 (1<<PINA3)\r
+//LEDS\r#define LPIN_CH0 (1<<PINB1)\r#define LDD_CH0 DDRB\r#define LPORT_CH0 PORTB\r#define LPIN_CH1 (1<<PINB1)\r#define LDD_CH1 DDRB\r#define LPORT_CH1 PORTB\r#define LPIN_CH2 (1<<PINB1)\r#define LDD_CH2 DDRB\r#define LPORT_CH2 PORTB\r#define LPIN_CH3 (1<<PINB1)\r#define LDD_CH3 DDRB\r#define LPORT_CH3 PORTB\r\r
+#define LED2_ON LPORT_CH2&=~LPIN_CH2;\r
+#endif\r
+\r
+\r
 #define TEST_TIMER  ((TIMSK0 & (1<<TOIE0))==0)\r
 \r
 #endif\r
@@ -164,6 +179,9 @@ ISR(ANA_COMP_vect) {
                        CLKPR=0;\r
 #ifdef FHEM_PLATINE\r
                        LPORT_CH1|=LPIN_CH1;\r
+#endif\r
+#ifdef W1DAQ\r
+                       LPORT_CH1&=~LPIN_CH1;\r
 #endif\r
                        GIFR|=(1<<INTF0);\r
                }\r
@@ -202,7 +220,7 @@ int main(void){
        PORTA&=~(PIN_CH2|PIN_CH3);\r
        #endif\r
 \r
-       #ifdef FHEM_PLATINE  //LEDs\r
+       #if defined(FHEM_PLATINE) || defined(W1DAQ)  //LEDs\r
        LDD_CH0|=LPIN_CH0;\r     LPORT_CH0&=~LPIN_CH0;\r  LDD_CH1|=LPIN_CH1;\r     LPORT_CH1&=~LPIN_CH1;\r  LDD_CH2|=LPIN_CH2;\r     LPORT_CH2&=~LPIN_CH2;\r  LDD_CH3|=LPIN_CH3;\r     LPORT_CH3&=~LPIN_CH3;\r
        #endif\r
 \r
@@ -249,16 +267,16 @@ int main(void){
        //ACSR|=(1<<ACD);  //Disable Comparator\r
        ADCSRB|=(1<<ACME); //Disable Analog multiplexer\r
        MCUCR &=~(1<<PUD); //All Pins Pullup...\r
-       #ifdef FHEM_PLATINE\r
+#ifdef FHEM_PLATINE\r
        DIDR0|=(1<<ADC0D);\r
        PORTA&=~(1<<PINA0);//Disable Pullup\r
-       #else\r
+#else\r
        DIDR0|=(1<<ADC2D)|(1<<ADC1D); // Disable Digital input on Analog AIN0/AIN1  (PINA1 / PINA2)\r
        PORTA&=~(1<<PINA2); //AIN1\r
-       #endif\r
+#endif\r
        ACSR&=~(1<<ACD);\r
        ACSR|=(1<<ACIE)|(1<<ACIS1)|(1<<ACIS0)|(1<<ACBG); //Enabble comperator interrupt Rising edge....(1<<ACIS0) -> minus of Comperator falls down -> output of Comperator rises\r
-       #ifdef FHEM_PLATINE\r
+#ifdef FHEM_PLATINE\r
        //Switch std AIN1 to A0\r
        ADCSRA&=~(1<<ADEN);\r
        ADCSRB=(1<<ACME);\r
@@ -268,14 +286,20 @@ int main(void){
 \r
 \r
        LPORT_CH0|=LPIN_CH0;\r   _delay_ms(500);\r        LPORT_CH0&=~LPIN_CH0;\r
-       #endif\r
+#endif\r
+#ifdef W1DAQ\r
+       LPORT_CH0&=~LPIN_CH0;\r
+       _delay_ms(500);\r        LPORT_CH0|=LPIN_CH0;\r#endif\r
        sei();\r
        while(1)   {\r
-               #ifdef FHEM_PLATINE\r
+#ifdef FHEM_PLATINE\r
                if (LPORT_CH2&LPIN_CH2) {\r                      _delay_ms(50);\r                 LPORT_CH2&=~LPIN_CH2;\r          }\r
                if (LPORT_CH1&LPIN_CH1) {\r                      _delay_ms(50);\r                 LPORT_CH1&=~LPIN_CH1;\r          }\r
-               #endif\r
-               #ifndef FHEM_PLATINE\r
+#endif\r
+#ifdef W1DAQ\r
+               if ((LPORT_CH2&LPIN_CH2)==0) {\r                 _delay_ms(50);\r                 LPORT_CH2|=LPIN_CH2;\r           }\r
+#endif\r
+#ifndef FHEM_PLATINE\r
                if ((PINB&(1<<PORTB0))==0) {  //Jumper gesetzt ->Ruecksetzen\r
                        if ((counters1.c32[2]!=0)||(counters1.c32[3]!=0)||(counters2.c32[2]!=0)||(counters2.c32[3]!=0)) {\r
                                counters1.c32[0]++;\r                            counters2.c32[0]++;\r                            for (uint8_t i=2;i<4;i++) {\r
@@ -286,9 +310,20 @@ int main(void){
                        }\r
                }\r
                #endif\r
+               if (((TIMSK0 & (1<<TOIE0))==0)&& (mode==0))       {\r
+                       MCUCR|=(1<<SE)|(1<<SM1);\r
+                       \r
+                       MCUCR&=~(1<<ISC01);\r
+                       } else {\r
+                       MCUCR|=(1<<SE);\r
+                       MCUCR&=~(1<<SM1);\r
+               }\r
+               asm("SLEEP");\r
+\r
+/*\r
                MCUCR|=(1<<SE);\r
                MCUCR&=~(1<<SM1);\r
-               asm("SLEEP");\r
+               asm("SLEEP");*/\r
        }\r
 \r
 \r