X-Git-Url: https://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=common%2FOWSet_ATTINYX4.s;h=b157207addc11752b995c0afd123742505d6108a;hp=c0a074bb6036cd45d04ee4c8e964b6a0c04efcd1;hb=eb07c81c36a283327b156eeee4d3d5030a4ed75f;hpb=22f8e0389304cc3f78fec16d8ecc30069afe8584 diff --git a/common/OWSet_ATTINYX4.s b/common/OWSet_ATTINYX4.s index c0a074b..b157207 100644 --- a/common/OWSet_ATTINYX4.s +++ b/common/OWSet_ATTINYX4.s @@ -37,6 +37,7 @@ #define OW_DDR _SFR_IO_ADDR(DDRB) //pin direction register #define TCNT_REG _SFR_IO_ADDR(TCNT0) + #define DB_PORT _SFR_IO_ADDR(PORTB) //DEBUG #define DB_PIN _SFR_IO_ADDR(PINB) //DEBUG #define DB_DDR _SFR_IO_ADDR(DDRB) //DEBUG @@ -46,8 +47,13 @@ #define RESETZEROMARKER cbi _SFR_IO_ADDR(DDRB),3 #define TESTZEROMARKER sbic _SFR_IO_ADDR(DDRB),3 -//#define sdb sbi _SFR_IO_ADDR(PORTB),DB_PINN -//#define cdb cbi _SFR_IO_ADDR(PORTB),DB_PINN +#ifdef _DB_ +#define sdb sbi _SFR_IO_ADDR(PORTB),DB_PINN +#define cdb cbi _SFR_IO_ADDR(PORTB),DB_PINN +#else +#define sdb +#define cdb +#endif #define TIMER_INTERRUPT TIM0_OVF_vect #define PIN_INTERRIPT EXT_INT0_vect @@ -60,14 +66,25 @@ //#define OWT_WRITE 18 //#define OWT_READ 4 -#define OWT_MIN_RESET 80 -#define OWT_RESET2 100 +#define OWT_MIN_RESET 180 +#define OWT_RESET2 80 #define OWT_RESET_PRESENT 30 #define OWT_PRESENT 130 #define OWT_WRITE 35 #define OWT_READ 12 +#define OWT_ZP_WAIT_LOW_TO 60 ; Zeit fuer die Maximale Lowzeit bei der Zerro Polling pruefung. Ist die Leitung laenger low, ist es vieleicht ein Reset +#define OWT_ZP_WAIT_HIGH_TO 90 ; Zeit fuer die Maximale Hight zeit bis zu einem Low Impuls vom Master. Nach laengeren Pausen wird nicht mehr gepollt sondern der Interrup vererndet. +.macro CLEAR_TOV_FLAG + ldi r_temp,1 + out _SFR_IO_ADDR(TIFR0),r_temp +.endm + +.macro JMP_NO_TOV + in r_temp, _SFR_IO_ADDR(TIFR0) + sbrc r_temp,TOV0 ; wenn ueberlauf gleiich weiter +.endm .macro CLEAR_INTERRUPT_FLAG ldi r_temp,(1<