From: Tobias Date: Wed, 7 Oct 2015 14:41:49 +0000 (+0200) Subject: New Dual with BMP280 and SHT X-Git-Url: http://git.smho.de/gw/?p=owSlave2.git;a=commitdiff_plain;h=28c2911a7459ae2977c0cb0228c0ca2af1c345bf New Dual with BMP280 and SHT Some renames Chance flasher adress in dual code!!!! --- diff --git a/DS18B20_BMP280_DS2438_SHT/DS18B20_DS2438.c b/DS18B20_BMP280_DS2438_SHT/DS18B20_DS2438.c new file mode 100644 index 0000000..4aec172 --- /dev/null +++ b/DS18B20_BMP280_DS2438_SHT/DS18B20_DS2438.c @@ -0,0 +1,237 @@ + +// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// * All advertising materials mentioning features or use of this +// software must display the following acknowledgement: This product +// includes software developed by tm3d.de and its contributors. +// * Neither the name of tm3d.de nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#define F_CPU 8000000UL +#include +#include +#include +#include +#include +#include +#include "../common/I2C/USI_TWI_Master.h" +#include "../common/I2C/SHT2x.h" +#include "../common/I2C/BMP280.h" + + +extern void OWINIT(); + + + +uint8_t owid1[8]={0x28, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x18};/**/ +uint8_t owid2[8]={0x26, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x67};/**/ +uint8_t config_info1[16]={0x02,0x03, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +uint8_t config_info2[16]={0x01,0x06, 0x05,0x08, 0x04,0x07, 0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + +#if (owid>128) +#error "Variable not correct" +#endif + +extern uint8_t mode; +extern uint8_t gcontrol; +extern uint8_t reset_indicator; +extern uint8_t alarmflag; +volatile uint8_t wdcounter; + + +#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) { +#endif + //sleep_disable(); // Disable Sleep on Wakeup + wdcounter++; + if (reset_indicator==1) reset_indicator++; + else if (reset_indicator==2) mode=0; +/* if (timeout==2) { + DIS_TIMER; + EN_OWINT; + mode=OWM_SLEEP; + } + timeout++;*/ + //sleep_enable(); // Enable Sleep Mode + +} + + +typedef union { + volatile uint8_t bytes[8]; + struct { + uint16_t temp; //0 + uint8_t TH; //2 + uint8_t TL; //3 + uint8_t config; //4 + uint8_t rrFF; //5 + uint8_t rr00; //6 + uint8_t rr10; //7 + }; +} pack1_t; +volatile pack1_t pack1; + + + +typedef union { + #if defined(__AVR_ATtiny25__) + volatile uint8_t bytes[16]; + #else + volatile uint8_t bytes[64]; + #endif + struct { + uint8_t status; //1 + int16_t temp; //2 + uint16_t voltage; //4 + uint16_t current; //6 + uint8_t threshold; //8 + + uint8_t page1[8]; //9 + #if defined(__AVR_ATtiny25__) + #else + uint8_t page2[8]; //17 + uint8_t page3[8]; //25 + uint8_t page4[8]; //33 + uint8_t page5[8]; //41 + uint8_t page6[8]; //49 + uint8_t page7[8]; //57 + //uint8_t crc; //65 + #endif + }; +} pack2_t; +volatile pack2_t pack2; + + + + +volatile int16_t am2302_temp; +volatile uint16_t am2302_hum; + + +uint8_t userRegister[1]; +int16_t sRH,sT; +volatile double temperatureC,humidityRH; +volatile double l; + uint32_t P; + int32_t t; + +int main(void){ + PRR|=(1<0) { + SHT2x_MeasurePoll(HUMIDITY, &sRH); + // --- measure temperature with "Polling Mode" (no hold master) --- + SHT2x_MeasurePoll(TEMP, &sT); + //-- calculate humidity and temperature -- + temperatureC = SHT2x_CalcTemperatureC(sT)*10.0; + humidityRH = SHT2x_CalcRH(sRH)*10.0; + double hhum=(1.0546-0.000216*temperatureC)*(humidityRH); + am2302_hum=0.318*hhum +76.0; + am2302_temp=temperatureC*25.6; + wdcounter=0; + } + + if (gcontrol==1) { + + bmp280ConvertInt(&t,&P,1); + P=P-70000; + P=P/20; + uint16_t w=P; + uint8_t t8=w>>4; + uint8_t af=0; + if (t8>pack1.TH) af=1; + if (t8<=pack1.TL) af=1; + cli(); + pack1.temp=w; + //pack.temp++; + alarmflag=af; + sei(); + gcontrol=0; + } + if ((gcontrol==2)||(gcontrol==3)) { + gcontrol=0; + + } + + +#if defined(__AVR_ATtiny25__)||defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) + if (((TIMSK & (1< + + + 2.0 + 6.2 + com.Atmel.AVRGCC8.C + {7a5672fe-8226-4158-b931-e1f36b9a8858} + ATtiny84A + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + DS18B20_DS2438 + DS18B20_DS2438 + DS18B20_DS2438 + Native + true + false + true + true + 0x20000000 + + true + exception_table + 2 + 1 + + + + + + + + + + + + + com.atmel.avrdbg.tool.atmelice + + + + + debugWIRE + + com.atmel.avrdbg.tool.atmelice + J41800000779 + Atmel-ICE + + debugWIRE + + + + + + + + com.atmel.avrdbg.tool.simulator + + + Simulator + + + + + + True + True + True + True + False + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + + + + + True + True + True + True + False + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + + + + + + compile + SHT2x.c + + + compile + MAX44009.c + + + compile + USI_TWI_Master.c + + + compile + + + compile + + + + \ No newline at end of file diff --git a/DS18B20_BMP280_DS2438_SHT/OWDS18B20_DS2438.S b/DS18B20_BMP280_DS2438_SHT/OWDS18B20_DS2438.S new file mode 100644 index 0000000..bf7146e --- /dev/null +++ b/DS18B20_BMP280_DS2438_SHT/OWDS18B20_DS2438.S @@ -0,0 +1,347 @@ + +// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// * All advertising materials mentioning features or use of this +// software must display the following acknowledgement: This product +// includes software developed by tm3d.de and its contributors. +// * Neither the name of tm3d.de nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#define _CHANGEABLE_ID_ +#define _ZERO_POLLING_ +#define _DB_ + +#include "../common/OWConfig.s" +#include "../common/OWCRC8.s" + +.extern pack1,8 + +//.extern am2302_temp,2 + +#if defined(__AVR_ATtiny25__) +.extern pack2,16 +#else +.extern pack2,64 +#endif +.extern am2302_temp,2 +.extern am2302_hum,2 +.comm block,1 ; Block der augegeben, geschrieben wird (Parameter von READ/WRITE Scratchpad) + + +.macro CHIP_INIT +Init_EEPROM_read: + sbic _SFR_IO_ADDR(EECR), EEPE + rjmp Init_EEPROM_read + ldi r_temp,0 + out _SFR_IO_ADDR(EEARH), r_temp + ldi r_temp,2 + out _SFR_IO_ADDR(EEARL), r_temp + sbi _SFR_IO_ADDR(EECR), EERE + in r_temp,_SFR_IO_ADDR(EEDR) + sbrs r_temp,7 + rcall hrc_recall_eeprom_func1 +.endm + +.macro COMMAND_TABLE + rjmp h_readscratchpad1 + rjmp h_writescratchpad1 + rjmp h_readscratchpad_adr2 + rjmp h_readscratchpad2 + rjmp h_writescratchpad_adr2 + rjmp h_writescratchpad2 +.endm + +#include "../common/OWRomFunctionsDual.s" +#include "../common/OWTimerInterrupt.s" + + + +; Ab hier Geraeteabhaenging +#define OW_READ_SCRATCHPAD1 OW_FIRST_COMMAND+0 +#define OW_WRITE_SCRATCHPAD1 OW_FIRST_COMMAND+1 +#define OW_READ_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+2 +#define OW_READ_SCRATCHPAD2 OW_FIRST_COMMAND+3 +#define OW_WRITE_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+4 +#define OW_WRITE_SCRATCHPAD2 OW_FIRST_COMMAND+5 + + +;--------------------------------------------------- +; READ COMMAND and start operation +;--------------------------------------------------- + + +h_readcommand1: + clr r_bytep +#ifndef _DIS_FLASH_ + FLASH_COMMANDS ; muss zu erst sein.... +#endif + cjmp 0xBE,hrc_set_readscratchpad1 + cjmp 0x4E,hrc_set_writescratchpad1 + cjmp 0x44,hrc_set_convertT1 + cjmp 0x48,hrc_copy_scratchpad1 + cjmp 0xB8,hrc_recall_eeprom1 + FW_CONFIG_INFO1 +#ifdef _CHANGEABLE_ID_ + CHANGE_ID_COMMANDS +#endif + ldi r_mode,OW_SLEEP + rjmp handle_end + +hrc_set_readscratchpad1: + ldi r_mode,OW_READ_SCRATCHPAD1 + ldi r_sendflag,1 + CRCInit2 + rjmp h_readscratchpad1 + +hrc_set_writescratchpad1: + ldi r_mode,OW_WRITE_SCRATCHPAD1 + ldi r_bytep,2 ;start to write in 2 + rjmp handle_end + +hrc_recall_eeprom1: + rcall hrc_recall_eeprom_func1 + rjmp handle_end + + + +hrc_set_convertT1: + ldi r_temp,1 + sts gcontrol,r_temp + + rjmp handle_end_sleep + + +hrc_copy_scratchpad1: + ldi r_bytep,2 + configZ pack1,r_bytep + clr r_bytep +hrc_copy_scratchpad_EEPROM_write1: + sbic _SFR_IO_ADDR(EECR), EEPE + rjmp hrc_copy_scratchpad_EEPROM_write1 + ldi r_temp, (0< -#include -#include -#include -#include -#include -#include "../common/I2C/USI_TWI_Master.h" -#include "../common/I2C/MAX44009.h" -#include "../common/I2C/SHT2x.h" - - -extern void OWINIT(); - - - -uint8_t owid1[8]={0x28, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x18};/**/ -uint8_t owid2[8]={0x26, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x67};/**/ -uint8_t config_info1[16]={0x03,0x04, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; -uint8_t config_info2[16]={0x01,0x06, 0x05,0x00, 0x04,0x07, 0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; - -#if (owid>128) -#error "Variable not correct" -#endif - -extern uint8_t mode; -extern uint8_t gcontrol; -extern uint8_t reset_indicator; -extern uint8_t alarmflag; -volatile uint8_t wdcounter; - - -#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) { -#endif - //sleep_disable(); // Disable Sleep on Wakeup - wdcounter++; - if (reset_indicator==1) reset_indicator++; - else if (reset_indicator==2) mode=0; -/* if (timeout==2) { - DIS_TIMER; - EN_OWINT; - mode=OWM_SLEEP; - } - timeout++;*/ - //sleep_enable(); // Enable Sleep Mode - -} - - -typedef union { - volatile uint8_t bytes[8]; - struct { - uint16_t temp; //0 - uint8_t TH; //2 - uint8_t TL; //3 - uint8_t config; //4 - uint8_t rrFF; //5 - uint8_t rr00; //6 - uint8_t rr10; //7 - }; -} pack1_t; -volatile pack1_t pack1; - - - -typedef union { - #if defined(__AVR_ATtiny25__) - volatile uint8_t bytes[16]; - #else - volatile uint8_t bytes[64]; - #endif - struct { - uint8_t status; //1 - int16_t temp; //2 - uint16_t voltage; //4 - uint16_t current; //6 - uint8_t threshold; //8 - - uint8_t page1[8]; //9 - #if defined(__AVR_ATtiny25__) - #else - uint8_t page2[8]; //17 - uint8_t page3[8]; //25 - uint8_t page4[8]; //33 - uint8_t page5[8]; //41 - uint8_t page6[8]; //49 - uint8_t page7[8]; //57 - //uint8_t crc; //65 - #endif - }; -} pack2_t; -volatile pack2_t pack2; - - - - -volatile int16_t am2302_temp; -volatile uint16_t am2302_hum; - - -uint8_t userRegister[1]; -int16_t sRH,sT; -volatile double temperatureC,humidityRH; -volatile double l; - - -int main(void){ - PRR|=(1<0) { - SHT2x_MeasurePoll(HUMIDITY, &sRH); - // --- measure temperature with "Polling Mode" (no hold master) --- - SHT2x_MeasurePoll(TEMP, &sT); - //-- calculate humidity and temperature -- - temperatureC = SHT2x_CalcTemperatureC(sT)*10.0; - humidityRH = SHT2x_CalcRH(sRH)*10.0; - double hhum=(1.0546-0.000216*temperatureC)*(humidityRH); - am2302_hum=0.318*hhum +76.0; - am2302_temp=temperatureC*25.6; - wdcounter=0; - } - - if (gcontrol==1) { - l=MAX44009getlux(); - if (l<0.030) l=0.030; //Darf nicht 0 sein. minimum -35°C Sensor minimum 0.045 - //double l=1000; - l=log(l)*10*16; - uint16_t w=l; - uint8_t t8=w>>4; - uint8_t af=0; - if (t8>pack1.TH) af=1; - if (t8<=pack1.TL) af=1; - cli(); - pack1.temp=w; - //pack.temp++; - alarmflag=af; - sei(); - gcontrol=0; - } - if ((gcontrol==2)||(gcontrol==3)) { - gcontrol=0; - - } - - -#if defined(__AVR_ATtiny25__)||defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) - if (((TIMSK & (1< - - - 2.0 - 6.2 - com.Atmel.AVRGCC8.C - {7a5672fe-8226-4158-b931-e1f36b9a8858} - ATtiny84A - none - Executable - C - $(MSBuildProjectName) - .elf - $(MSBuildProjectDirectory)\$(Configuration) - DS18B20_DS2438 - DS18B20_DS2438 - DS18B20_DS2438 - Native - true - false - true - true - 0x20000000 - - true - exception_table - 2 - 1 - - - - - - - - - - - - - com.atmel.avrdbg.tool.atmelice - - - - - debugWIRE - - com.atmel.avrdbg.tool.atmelice - J41800000779 - Atmel-ICE - - debugWIRE - - - - - - - - com.atmel.avrdbg.tool.simulator - - - Simulator - - - - - - True - True - True - True - False - True - True - - - NDEBUG - - - Optimize for size (-Os) - True - True - True - - - libm - - - - - - - - - True - True - True - True - False - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - Default (-Wa,-g) - - - - - - compile - SHT2x.c - - - compile - MAX44009.c - - - compile - USI_TWI_Master.c - - - compile - - - compile - - - - \ No newline at end of file diff --git a/DS18B20_DS2438/OWDS18B20_DS2438.S b/DS18B20_DS2438/OWDS18B20_DS2438.S deleted file mode 100644 index bf7146e..0000000 --- a/DS18B20_DS2438/OWDS18B20_DS2438.S +++ /dev/null @@ -1,347 +0,0 @@ - -// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the -// distribution. -// * All advertising materials mentioning features or use of this -// software must display the following acknowledgement: This product -// includes software developed by tm3d.de and its contributors. -// * Neither the name of tm3d.de nor the names of its contributors may -// be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#define _CHANGEABLE_ID_ -#define _ZERO_POLLING_ -#define _DB_ - -#include "../common/OWConfig.s" -#include "../common/OWCRC8.s" - -.extern pack1,8 - -//.extern am2302_temp,2 - -#if defined(__AVR_ATtiny25__) -.extern pack2,16 -#else -.extern pack2,64 -#endif -.extern am2302_temp,2 -.extern am2302_hum,2 -.comm block,1 ; Block der augegeben, geschrieben wird (Parameter von READ/WRITE Scratchpad) - - -.macro CHIP_INIT -Init_EEPROM_read: - sbic _SFR_IO_ADDR(EECR), EEPE - rjmp Init_EEPROM_read - ldi r_temp,0 - out _SFR_IO_ADDR(EEARH), r_temp - ldi r_temp,2 - out _SFR_IO_ADDR(EEARL), r_temp - sbi _SFR_IO_ADDR(EECR), EERE - in r_temp,_SFR_IO_ADDR(EEDR) - sbrs r_temp,7 - rcall hrc_recall_eeprom_func1 -.endm - -.macro COMMAND_TABLE - rjmp h_readscratchpad1 - rjmp h_writescratchpad1 - rjmp h_readscratchpad_adr2 - rjmp h_readscratchpad2 - rjmp h_writescratchpad_adr2 - rjmp h_writescratchpad2 -.endm - -#include "../common/OWRomFunctionsDual.s" -#include "../common/OWTimerInterrupt.s" - - - -; Ab hier Geraeteabhaenging -#define OW_READ_SCRATCHPAD1 OW_FIRST_COMMAND+0 -#define OW_WRITE_SCRATCHPAD1 OW_FIRST_COMMAND+1 -#define OW_READ_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+2 -#define OW_READ_SCRATCHPAD2 OW_FIRST_COMMAND+3 -#define OW_WRITE_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+4 -#define OW_WRITE_SCRATCHPAD2 OW_FIRST_COMMAND+5 - - -;--------------------------------------------------- -; READ COMMAND and start operation -;--------------------------------------------------- - - -h_readcommand1: - clr r_bytep -#ifndef _DIS_FLASH_ - FLASH_COMMANDS ; muss zu erst sein.... -#endif - cjmp 0xBE,hrc_set_readscratchpad1 - cjmp 0x4E,hrc_set_writescratchpad1 - cjmp 0x44,hrc_set_convertT1 - cjmp 0x48,hrc_copy_scratchpad1 - cjmp 0xB8,hrc_recall_eeprom1 - FW_CONFIG_INFO1 -#ifdef _CHANGEABLE_ID_ - CHANGE_ID_COMMANDS -#endif - ldi r_mode,OW_SLEEP - rjmp handle_end - -hrc_set_readscratchpad1: - ldi r_mode,OW_READ_SCRATCHPAD1 - ldi r_sendflag,1 - CRCInit2 - rjmp h_readscratchpad1 - -hrc_set_writescratchpad1: - ldi r_mode,OW_WRITE_SCRATCHPAD1 - ldi r_bytep,2 ;start to write in 2 - rjmp handle_end - -hrc_recall_eeprom1: - rcall hrc_recall_eeprom_func1 - rjmp handle_end - - - -hrc_set_convertT1: - ldi r_temp,1 - sts gcontrol,r_temp - - rjmp handle_end_sleep - - -hrc_copy_scratchpad1: - ldi r_bytep,2 - configZ pack1,r_bytep - clr r_bytep -hrc_copy_scratchpad_EEPROM_write1: - sbic _SFR_IO_ADDR(EECR), EEPE - rjmp hrc_copy_scratchpad_EEPROM_write1 - ldi r_temp, (0< +#include +#include +#include +#include +#include +#include "../common/I2C/USI_TWI_Master.h" +#include "../common/I2C/MAX44009.h" +#include "../common/I2C/SHT2x.h" + + +extern void OWINIT(); + + + +uint8_t owid1[8]={0x28, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x18};/**/ +uint8_t owid2[8]={0x26, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x67};/**/ +uint8_t config_info1[16]={0x03,0x04, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +uint8_t config_info2[16]={0x01,0x06, 0x05,0x08, 0x04,0x07, 0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + +#if (owid>128) +#error "Variable not correct" +#endif + +extern uint8_t mode; +extern uint8_t gcontrol; +extern uint8_t reset_indicator; +extern uint8_t alarmflag; +volatile uint8_t wdcounter; + + +#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) { +#endif + //sleep_disable(); // Disable Sleep on Wakeup + wdcounter++; + if (reset_indicator==1) reset_indicator++; + else if (reset_indicator==2) mode=0; +/* if (timeout==2) { + DIS_TIMER; + EN_OWINT; + mode=OWM_SLEEP; + } + timeout++;*/ + //sleep_enable(); // Enable Sleep Mode + +} + + +typedef union { + volatile uint8_t bytes[8]; + struct { + uint16_t temp; //0 + uint8_t TH; //2 + uint8_t TL; //3 + uint8_t config; //4 + uint8_t rrFF; //5 + uint8_t rr00; //6 + uint8_t rr10; //7 + }; +} pack1_t; +volatile pack1_t pack1; + + + +typedef union { + #if defined(__AVR_ATtiny25__) + volatile uint8_t bytes[16]; + #else + volatile uint8_t bytes[64]; + #endif + struct { + uint8_t status; //1 + int16_t temp; //2 + uint16_t voltage; //4 + uint16_t current; //6 + uint8_t threshold; //8 + + uint8_t page1[8]; //9 + #if defined(__AVR_ATtiny25__) + #else + uint8_t page2[8]; //17 + uint8_t page3[8]; //25 + uint8_t page4[8]; //33 + uint8_t page5[8]; //41 + uint8_t page6[8]; //49 + uint8_t page7[8]; //57 + //uint8_t crc; //65 + #endif + }; +} pack2_t; +volatile pack2_t pack2; + + + + +volatile int16_t am2302_temp; +volatile uint16_t am2302_hum; + + +uint8_t userRegister[1]; +int16_t sRH,sT; +volatile double temperatureC,humidityRH; +volatile double l; + + +int main(void){ + PRR|=(1<0) { + SHT2x_MeasurePoll(HUMIDITY, &sRH); + // --- measure temperature with "Polling Mode" (no hold master) --- + SHT2x_MeasurePoll(TEMP, &sT); + //-- calculate humidity and temperature -- + temperatureC = SHT2x_CalcTemperatureC(sT)*10.0; + humidityRH = SHT2x_CalcRH(sRH)*10.0; + double hhum=(1.0546-0.000216*temperatureC)*(humidityRH); + am2302_hum=0.318*hhum +76.0; + am2302_temp=temperatureC*25.6; + wdcounter=0; + } + + if (gcontrol==1) { + l=MAX44009getlux(0); + if (l<0.030) l=0.030; //Darf nicht 0 sein. minimum -35°C Sensor minimum 0.045 + //double l=1000; + l=log(l)*10*16; + uint16_t w=l; + uint8_t t8=w>>4; + uint8_t af=0; + if (t8>pack1.TH) af=1; + if (t8<=pack1.TL) af=1; + cli(); + pack1.temp=w; + //pack.temp++; + alarmflag=af; + sei(); + gcontrol=0; + } + if ((gcontrol==2)||(gcontrol==3)) { + gcontrol=0; + + } + + +#if defined(__AVR_ATtiny25__)||defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) + if (((TIMSK & (1< + + + 2.0 + 6.2 + com.Atmel.AVRGCC8.C + {7a5672fe-8226-4158-b931-e1f36b9a8858} + ATtiny84A + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + DS18B20_DS2438 + DS18B20_DS2438 + DS18B20_DS2438 + Native + true + false + true + true + 0x20000000 + + true + exception_table + 2 + 1 + + + + + + + + + + + + + com.atmel.avrdbg.tool.atmelice + + + + + debugWIRE + + com.atmel.avrdbg.tool.atmelice + J41800000779 + Atmel-ICE + + debugWIRE + + + + + + + + com.atmel.avrdbg.tool.simulator + + + Simulator + + + + + + True + True + True + True + False + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + + + + + True + True + True + True + False + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + + + + + + compile + SHT2x.c + + + compile + MAX44009.c + + + compile + USI_TWI_Master.c + + + compile + + + compile + + + + \ No newline at end of file diff --git a/DS18B20_MAX44009_DS2438_SHT/DS18B20_MAX44009_DS2438_SHT.atsln b/DS18B20_MAX44009_DS2438_SHT/DS18B20_MAX44009_DS2438_SHT.atsln new file mode 100644 index 0000000..634f63e --- /dev/null +++ b/DS18B20_MAX44009_DS2438_SHT/DS18B20_MAX44009_DS2438_SHT.atsln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "DS18B20_MAX44009_DS2438_SHT", "DS18B20_MAX44009_DS2438_SHT.cproj", "{7A5672FE-8226-4158-B931-E1F36B9A8858}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7A5672FE-8226-4158-B931-E1F36B9A8858}.Debug|AVR.ActiveCfg = Debug|AVR + {7A5672FE-8226-4158-B931-E1F36B9A8858}.Debug|AVR.Build.0 = Debug|AVR + {7A5672FE-8226-4158-B931-E1F36B9A8858}.Release|AVR.ActiveCfg = Release|AVR + {7A5672FE-8226-4158-B931-E1F36B9A8858}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/DS18B20_MAX44009_DS2438_SHT/DS18B20_MAX44009_DS2438_SHT.cproj b/DS18B20_MAX44009_DS2438_SHT/DS18B20_MAX44009_DS2438_SHT.cproj new file mode 100644 index 0000000..1f7848f --- /dev/null +++ b/DS18B20_MAX44009_DS2438_SHT/DS18B20_MAX44009_DS2438_SHT.cproj @@ -0,0 +1,158 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + {7a5672fe-8226-4158-b931-e1f36b9a8858} + ATtiny84A + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + DS18B20_DS2438 + DS18B20_MAX44009_DS2438_SHT + DS18B20_DS2438 + Native + true + false + true + true + 0x20000000 + + true + exception_table + 2 + 1 + + + + + + + + + + + + + com.atmel.avrdbg.tool.atmelice + + + + + debugWIRE + + com.atmel.avrdbg.tool.atmelice + J41800000779 + Atmel-ICE + + debugWIRE + + + + + + + + com.atmel.avrdbg.tool.simulator + + + Simulator + + + + + + + -mmcu=attiny84a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\gcc\dev\attiny84a" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + + + + + + + -mmcu=attiny84a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\gcc\dev\attiny84a" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + + + + + + compile + SHT2x.c + + + compile + MAX44009.c + + + compile + USI_TWI_Master.c + + + compile + + + compile + + + + \ No newline at end of file diff --git a/DS18B20_MAX44009_DS2438_SHT/OWDS18B20_DS2438.S b/DS18B20_MAX44009_DS2438_SHT/OWDS18B20_DS2438.S new file mode 100644 index 0000000..bf7146e --- /dev/null +++ b/DS18B20_MAX44009_DS2438_SHT/OWDS18B20_DS2438.S @@ -0,0 +1,347 @@ + +// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// * All advertising materials mentioning features or use of this +// software must display the following acknowledgement: This product +// includes software developed by tm3d.de and its contributors. +// * Neither the name of tm3d.de nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#define _CHANGEABLE_ID_ +#define _ZERO_POLLING_ +#define _DB_ + +#include "../common/OWConfig.s" +#include "../common/OWCRC8.s" + +.extern pack1,8 + +//.extern am2302_temp,2 + +#if defined(__AVR_ATtiny25__) +.extern pack2,16 +#else +.extern pack2,64 +#endif +.extern am2302_temp,2 +.extern am2302_hum,2 +.comm block,1 ; Block der augegeben, geschrieben wird (Parameter von READ/WRITE Scratchpad) + + +.macro CHIP_INIT +Init_EEPROM_read: + sbic _SFR_IO_ADDR(EECR), EEPE + rjmp Init_EEPROM_read + ldi r_temp,0 + out _SFR_IO_ADDR(EEARH), r_temp + ldi r_temp,2 + out _SFR_IO_ADDR(EEARL), r_temp + sbi _SFR_IO_ADDR(EECR), EERE + in r_temp,_SFR_IO_ADDR(EEDR) + sbrs r_temp,7 + rcall hrc_recall_eeprom_func1 +.endm + +.macro COMMAND_TABLE + rjmp h_readscratchpad1 + rjmp h_writescratchpad1 + rjmp h_readscratchpad_adr2 + rjmp h_readscratchpad2 + rjmp h_writescratchpad_adr2 + rjmp h_writescratchpad2 +.endm + +#include "../common/OWRomFunctionsDual.s" +#include "../common/OWTimerInterrupt.s" + + + +; Ab hier Geraeteabhaenging +#define OW_READ_SCRATCHPAD1 OW_FIRST_COMMAND+0 +#define OW_WRITE_SCRATCHPAD1 OW_FIRST_COMMAND+1 +#define OW_READ_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+2 +#define OW_READ_SCRATCHPAD2 OW_FIRST_COMMAND+3 +#define OW_WRITE_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+4 +#define OW_WRITE_SCRATCHPAD2 OW_FIRST_COMMAND+5 + + +;--------------------------------------------------- +; READ COMMAND and start operation +;--------------------------------------------------- + + +h_readcommand1: + clr r_bytep +#ifndef _DIS_FLASH_ + FLASH_COMMANDS ; muss zu erst sein.... +#endif + cjmp 0xBE,hrc_set_readscratchpad1 + cjmp 0x4E,hrc_set_writescratchpad1 + cjmp 0x44,hrc_set_convertT1 + cjmp 0x48,hrc_copy_scratchpad1 + cjmp 0xB8,hrc_recall_eeprom1 + FW_CONFIG_INFO1 +#ifdef _CHANGEABLE_ID_ + CHANGE_ID_COMMANDS +#endif + ldi r_mode,OW_SLEEP + rjmp handle_end + +hrc_set_readscratchpad1: + ldi r_mode,OW_READ_SCRATCHPAD1 + ldi r_sendflag,1 + CRCInit2 + rjmp h_readscratchpad1 + +hrc_set_writescratchpad1: + ldi r_mode,OW_WRITE_SCRATCHPAD1 + ldi r_bytep,2 ;start to write in 2 + rjmp handle_end + +hrc_recall_eeprom1: + rcall hrc_recall_eeprom_func1 + rjmp handle_end + + + +hrc_set_convertT1: + ldi r_temp,1 + sts gcontrol,r_temp + + rjmp handle_end_sleep + + +hrc_copy_scratchpad1: + ldi r_bytep,2 + configZ pack1,r_bytep + clr r_bytep +hrc_copy_scratchpad_EEPROM_write1: + sbic _SFR_IO_ADDR(EECR), EEPE + rjmp hrc_copy_scratchpad_EEPROM_write1 + ldi r_temp, (0< 2.0 - 6.2 + 7.0 com.Atmel.AVRGCC8.C {91468d4f-8ae2-4c59-8a35-549c49e00934} ATtiny84A @@ -50,61 +50,76 @@ Atmel-ICE debugWIRE + - True - True - True - True - False - True - True - - - NDEBUG - - - Optimize for size (-Os) - True - True - True - - - libm - - - + -mmcu=attiny84a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\gcc\dev\attiny84a" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + - True - True - True - True - False - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - Default (-Wa,-g) - + -mmcu=attiny84a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\gcc\dev\attiny84a" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + diff --git a/DS2450/DS2450.atsln b/DS2450/DS2450.atsln index e8c4ea1..361cfa6 100644 --- a/DS2450/DS2450.atsln +++ b/DS2450/DS2450.atsln @@ -1,6 +1,8 @@  -Microsoft Visual Studio Solution File, Format Version 11.00 +Microsoft Visual Studio Solution File, Format Version 12.00 # Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "DS2450", "DS2450.cproj", "{7A5672FE-8226-4158-B931-E1F36B9A8858}" EndProject Global diff --git a/DS2450/DS2450.c b/DS2450/DS2450.c index 74d24dd..4ca471f 100644 --- a/DS2450/DS2450.c +++ b/DS2450/DS2450.c @@ -42,7 +42,7 @@ extern void OWINIT(); uint8_t owid[8]={0x20, 0xA2, 0xD9, 0x84, 0x00, 0x16, 0x02, 0x5D};/**/ -uint8_t config_info[16]={0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +uint8_t config_info[16]={0x06,0x09,0x06,0x09,0x06,0x09,0x06,0x09,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; #if (owid>128) #error "Variable not correct" diff --git a/DS2450/DS2450.cproj b/DS2450/DS2450.cproj index 95a82ba..9e51646 100644 --- a/DS2450/DS2450.cproj +++ b/DS2450/DS2450.cproj @@ -2,7 +2,7 @@ 2.0 - 6.2 + 7.0 com.Atmel.AVRGCC8.C {7a5672fe-8226-4158-b931-e1f36b9a8858} ATtiny84A @@ -38,7 +38,7 @@ - com.atmel.avrdbg.tool.atmelice + com.atmel.avrdbg.tool.avrdragon @@ -50,61 +50,88 @@ Atmel-ICE debugWIRE + + 00A20004766E + 0x1E930C + + + + + debugWIRE + + com.atmel.avrdbg.tool.avrdragon + 00A20004766E + AVR Dragon + - True - True - True - True - False - True - True - - - NDEBUG - - - Optimize for size (-Os) - True - True - True - - - libm - - - + -mmcu=attiny84a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\gcc\dev\attiny84a" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + - True - True - True - True - False - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - Default (-Wa,-g) - + -mmcu=attiny84a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\gcc\dev\attiny84a" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + Default (-Wa,-g) + diff --git a/common/OWRomFunctionsDual.s b/common/OWRomFunctionsDual.s index 09ed5be..59b3d40 100644 --- a/common/OWRomFunctionsDual.s +++ b/common/OWRomFunctionsDual.s @@ -178,7 +178,7 @@ hrc_jmp_flasher: lds r_temp,flashmarker cpi r_temp,2 brne hrc_jmp_flasher_inc - ldi r_temp,0xE0 + ldi r_temp,0xC0 push r_temp ldi r_temp,0x0E push r_temp @@ -559,7 +559,7 @@ OWINIT: sbic _SFR_IO_ADDR(PINA),PINA5 rjmp owinit_botest_end ;PINA5 nicht 0.... nicht verbunden cbi _SFR_IO_ADDR(DDRA),PINA4 - ldi r_temp,0xE0 + ldi r_temp,0xC0 push r_temp ldi r_temp,0x0E push r_temp diff --git a/programmer/flash/flashp.bat b/programmer/flash/flashp.bat index 02aef01..bf1b335 100644 --- a/programmer/flash/flashp.bat +++ b/programmer/flash/flashp.bat @@ -1,2 +1,2 @@ -avrdude -c usbasp -p t84 -U lfuse:w:0xE2:m -U hfuse:w:0xDF:m +avrdude -c usbasp -p t84 -U lfuse:w:0xE2:m -U hfuse:w:0xDF:m -U efuse:w:0xFE:m avrdude -c usbasp -p t84 -e -U flash:w:"../programmer/Debug/programmer.hex" diff --git a/programmer/programmer/programmer.asmproj b/programmer/programmer/programmer.asmproj index 509f82c..8a2ba95 100644 --- a/programmer/programmer/programmer.asmproj +++ b/programmer/programmer/programmer.asmproj @@ -57,29 +57,29 @@ - - - %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc - %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc - - - tn84adef.inc - + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc + + + tn84adef.inc + Executable - - - %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc - %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc - %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc - - - tn84adef.inc - + + + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc + %24(PackRepoDir)\atmel\ATtiny_DFP\1.0.68\avrasm\inc + + + tn84adef.inc +