X-Git-Url: https://git.smho.de/gw/?a=blobdiff_plain;f=common%2FOWPinInterrupt.s;h=72aef80a794cd506177e34a97d9fd8dd2141f668;hb=4df4c7ba2c95a48e95873b1f3a93d62ed9727eba;hp=5cf444b6fb42ce5172c48b8b1bd2a620b70b6221;hpb=eb07c81c36a283327b156eeee4d3d5030a4ed75f;p=owSlave2.git diff --git a/common/OWPinInterrupt.s b/common/OWPinInterrupt.s index 5cf444b..72aef80 100644 --- a/common/OWPinInterrupt.s +++ b/common/OWPinInterrupt.s @@ -115,19 +115,24 @@ iend: rjmp zeropolling rjmp no_zerromaker zeropolling: + sbrc r_sendflag,1 ; sendflag bit 1 -> switch off zeropolling in software eg for asking convert is donne (DS2450, DS18B20 and others) + rjmp no_zerromaker +zeropolling_h_loop: 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)+OWT_ZP_WAIT_LOW_TO;aller zwei us zaehlt der timer brsh zeropolling_timeout ;Timeout Reset? - rjmp zeropolling + rjmp zeropolling_h_loop 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)+OWT_ZP_WAIT_HIGH_TO ;aller zwei us zaehlt der timer - brsh zeropolling_timeout ;Timeout - rjmp zeropolling_wait + sbis OW_PIN,OW_PINN ;noch eine Abfrage, da sonst schleife zu lang (sbis aendert keine flags) + rjmp zeropolling_low_imp ;Leitung ist low raus aus schleufe + brlo zeropolling_wait + rjmp zeropolling_timeout zeropolling_low_imp: sbi OW_DDR,OW_PINN RESETZEROMARKER