#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
#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
//#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<<INTF0);inerrupt flags durch 1 loeschen..... 0 macht nix
;set falling edge
ldi r_temp,(1<<ISC01)
out _SFR_IO_ADDR(MCUCR),r_temp
- //sbi DB_DDR,DB_PINN
+#ifdef _DB_
+ sbi DB_DDR,DB_PINN
+#endif
.endm