X-Git-Url: https://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=DS2450%2FDS2450.c;fp=DS2450%2FDS2450.c;h=0e922559e6200a1c5751773b6aca001c886ad4d8;hp=e2fb6c38d70b23dcc60e5f8dcaeec3fc1fbd24de;hb=81a79648a168a1167c5ad97d4068621c1751a353;hpb=6467d8138460abffd9ddabc7b0a9f00c764af19c diff --git a/DS2450/DS2450.c b/DS2450/DS2450.c index e2fb6c3..0e92255 100644 --- a/DS2450/DS2450.c +++ b/DS2450/DS2450.c @@ -38,6 +38,7 @@ #include #include #include +#include "../common/I2C/TWI_Master.h" extern void OWINIT(); extern void EXTERN_SLEEP(); @@ -49,12 +50,25 @@ uint8_t config_info[26]={0x06,0x09,0x06,0x09,0x06,0x09,0x06,0x09,0x02,20,20,20,2 #error "Variable not correct" #endif -extern uint8_t mode; +extern volatile uint8_t mode; extern uint8_t gcontrol; extern uint8_t reset_indicator; extern uint8_t alarmflag; + +#if defined(__AVR_ATtiny24__)||defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny24A__)||defined(__AVR_ATtiny44A__) || defined(__AVR_ATtiny84A__) +ISR(WATCHDOG_vect) { + #else + ISR(WDT_vect) { + // mode=0; + #endif + //wdcounter++; + if (reset_indicator==1) reset_indicator++; + else if (reset_indicator==2) mode=0; + } + + typedef union { volatile uint8_t bytes[0x20]; struct { @@ -99,8 +113,15 @@ typedef union { volatile pack_t pack; +#if defined(__AVR_ATtiny24__)||defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)||defined(__AVR_ATtiny24A__)||defined(__AVR_ATtiny44A__) || defined(__AVR_ATtiny84A__) +#define AD_PORT PORTA +#define AD_DDR DDRA +#endif - +#if defined(__AVR_ATmega168__)||defined(__AVR_ATmega168A__) ||defined(__AVR_ATmega328__) ||defined(__AVR_ATmega328P__) ||defined(__AVR_ATmega328PB__) +#define AD_PORT PORTC +#define AD_DDR DDRC +#endif int main(void){ @@ -125,20 +146,31 @@ int main(void){ pack.HD=0xFF; pack.LD=0x00; pack.VCCP=0; + MCUCR &=~(1<