Change Time Values so it works for all Adapters
authorTobias <tm@tm3d.de>
Tue, 22 Sep 2015 09:47:52 +0000 (11:47 +0200)
committerTobias <tm@tm3d.de>
Tue, 22 Sep 2015 09:47:52 +0000 (11:47 +0200)
DS18B20_DS2438/OWDS18B20_DS2438.S
common/OWPinInterrupt.s
common/OWSet_ATTINYX4.s
common/OWTimerInterrupt.s

index 5ffafa3..d0503b7 100644 (file)
@@ -33,7 +33,7 @@
 
 #define _CHANGEABLE_ID_
 #define _ZERO_POLLING_
-
+#define _DB_
 
 #include "../common/OWConfig.s"
 #include "../common/OWCRC8.s"
index b5b7b87..5cf444b 100644 (file)
@@ -43,6 +43,7 @@ PIN_INTERRIPT:
        ;Weitere Register sichern
     push r_temp2 
        push r_temp
+       sdb
        ; Wegen Power Down Mode Widerherstellen der fallenden Flanke und disable von POWER DONW 
        SET_FALLING_RESET_SLEEP
        push r_bcount
@@ -117,14 +118,14 @@ zeropolling:
        sbic OW_PIN,OW_PINN ;warten bis leitung wieder h 
        rjmp zeropolling_wait  ;leitung ist low ->Schleie
        in r_temp,TCNT_REG
-       cpi r_temp,(~OWT_MIN_RESET)+50;aller zwei us zaehlt der timer
+       cpi r_temp,(~OWT_MIN_RESET)+OWT_ZP_WAIT_LOW_TO;aller zwei us zaehlt der timer
        brsh  zeropolling_timeout ;Timeout Reset?
        rjmp zeropolling
 zeropolling_wait:
        sbis OW_PIN,OW_PINN ;warten bis leitung wieder l
        rjmp zeropolling_low_imp ;Leitung ist low raus aus schleufe
        in r_temp,TCNT_REG
-       cpi r_temp,(~OWT_MIN_RESET)+70 ;aller zwei us zaehlt der timer
+       cpi r_temp,(~OWT_MIN_RESET)+OWT_ZP_WAIT_HIGH_TO ;aller zwei us zaehlt der timer
        brsh  zeropolling_timeout ;Timeout
        rjmp zeropolling_wait
 zeropolling_low_imp:
@@ -143,11 +144,11 @@ no_zerromaker:
        sts sendflag,r_sendflag
        sts bcount,r_bcount
        sts rwbyte,r_rwbyte
-       //cdb
        pop r_sendflag
        pop r_rwbyte
        pop r_bcount
        pop r_temp
+       cdb
        cbi OW_DDR,OW_PINN  ;vorsichtsmassname Nicht dauerhaft auf low
        pop r_temp2                       //; die benutzten Register wiederherstellen
     out _SFR_IO_ADDR(SREG),r_temp2
index de42063..b157207 100644 (file)
 #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 120
+#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
        ;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
 
 
index 504a68b..a23009e 100644 (file)
 
 .global TIMER_INTERRUPT
 TIMER_INTERRUPT:
+       sdb
        push r_temp
        in r_temp,_SFR_IO_ADDR(SREG)  
        push r_temp
+       cdb
        sbic OW_PIN,OW_PINN  ; abkuerzung wenn Leitung schon h
        rjmp tint_end ; Leitung 1 kein Reset
        ldi r_temp,0