X-Git-Url: https://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=DS2450%2FDS2450.c;h=0e922559e6200a1c5751773b6aca001c886ad4d8;hp=cf4e588a5ecd3b4a759f9d8c04620143b3768611;hb=refs%2Fheads%2Fmaster;hpb=a6a04f58e4afd20f206fdf4a8a7b3ce4062f1b67 diff --git a/DS2450/DS2450.c b/DS2450/DS2450.c index cf4e588..0e92255 100644 --- a/DS2450/DS2450.c +++ b/DS2450/DS2450.c @@ -1,5 +1,5 @@ -// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de +// Copyright (c) 2017, Tobias Mueller tm(at)tm3d.de // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -38,23 +38,37 @@ #include #include #include +#include "../common/I2C/TWI_Master.h" extern void OWINIT(); extern void EXTERN_SLEEP(); uint8_t owid[8]={0x20, 0xA2, 0xD9, 0x84, 0x00, 0x16, 0x02, 0x5D};/**/ -uint8_t config_info[16]={0x06,0x09,0x06,0x09,0x06,0x09,0x06,0x09,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +uint8_t config_info[26]={0x06,0x09,0x06,0x09,0x06,0x09,0x06,0x09,0x02,20,20,20,20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; #if (owid>128) #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,15 +146,31 @@ int main(void){ pack.HD=0xFF; pack.LD=0x00; pack.VCCP=0; - OWINIT(); + MCUCR &=~(1<