# HG changeset patch # User heinrichsweikamp # Date 1318683833 -7200 # Node ID c7b6639397379fb603e96e77184a1e91488f76c3 # Parent e83f883c96b26736f73dfc7d08670c8ecb02795e making waitms speed-independent, desat-time fix diff -r e83f883c96b2 -r c7b663939737 code_part1/OSTC_code_asm_part1/divemode.asm --- a/code_part1/OSTC_code_asm_part1/divemode.asm Sat Oct 15 13:45:15 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/divemode.asm Sat Oct 15 15:03:53 2011 +0200 @@ -1121,6 +1121,8 @@ movlb b'00000001' ; select ram bank 1 call calc_deko_surfmode2 ; work-around for nofly bug rcall calculate_noflytime ; Calc NoFly time + movff int_O_desaturation_time+0,desaturation_time_buffer+0 + movff int_O_desaturation_time+1,desaturation_time_buffer+1 ostc_debug 'H' ; Sends debug-information to screen if debugmode active ; store header and ... movlw 0xFD ; .... End-of-Profile Bytes diff -r e83f883c96b2 -r c7b663939737 code_part1/OSTC_code_asm_part1/surfmode.asm --- a/code_part1/OSTC_code_asm_part1/surfmode.asm Sat Oct 15 13:45:15 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/surfmode.asm Sat Oct 15 15:03:53 2011 +0200 @@ -237,6 +237,10 @@ return nofly_timeout60: + movf desaturation_time_buffer+0,W; Is Desat null ? + iorwf desaturation_time_buffer+1,W + rcall nofly_timeout60_0 ; No... + movf nofly_time+0,W ; Is nofly null ? iorwf nofly_time+1,W bnz nofly_timeout60_1 ; No... @@ -245,6 +249,13 @@ bcf LED_blue ; Clear led. return +nofly_timeout60_0: + movlw d'1' + subwf desaturation_time_buffer+0,F + movlw d'0' + subwfb desaturation_time_buffer+1,F ; reduce by one + return + nofly_timeout60_1: bsf nofly_active ; Set flag movlw d'1' @@ -298,10 +309,6 @@ call deco_calc_wo_deco_step_1_min ; calculate deco in surface mode movlb b'00000001' ; select ram bank 1 ostc_debug 'J' ; Sends debug-information to screen if debugmode active - - movff int_O_desaturation_time+0,desaturation_time_buffer+0 - movff int_O_desaturation_time+1,desaturation_time_buffer+1 - return ;============================================================================= @@ -406,7 +413,7 @@ return show_cv_active: ; CV mode - ; Enable only when USB power attached + ; Enable RS232 only when USB power attached btfss RCSTA,7 ; RS232 already enabled? call enable_rs232 ; No, start UART module bsf LED_red diff -r e83f883c96b2 -r c7b663939737 code_part1/OSTC_code_asm_part1/wait.asm --- a/code_part1/OSTC_code_asm_part1/wait.asm Sat Oct 15 13:45:15 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/wait.asm Sat Oct 15 15:03:53 2011 +0200 @@ -81,66 +81,22 @@ goto WAIT10USX2 return ; ========================================================== -; WAIT 1 MILLISECOND - 16 MHZ +; WAIT 1 MILLISECOND - Working with TMR1 ; ========================================================== - IFDEF SPEED_16MHz -WAITMS macro waitms_temp - movlw waitms_temp - call WAITMSX - endm - ENDIF - - IFDEF SPEED_32MHz WAITMS macro waitms_temp movlw waitms_temp - call WAITMSX - movlw waitms_temp - call WAITMSX + call WAITMSX endm - ENDIF + +WAITMSX movwf waitms_temp ; Holds number of ms to wait -WAITMSX movwf waitms_temp - goto JumpInMSX -WAITMSX2 nop - nop - nop - nop - nop - nop - nop - nop -JumpInMSX: - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - WAIT10US d'99' - decfsz waitms_temp,1 - goto WAITMSX2 +WAITMSX1: + movf TMR1L,W + addlw d'66' ; 66*15,26µs ~ 1ms + +WAITMSX2 cpfseq TMR1L + bra WAITMSX2 ; loop here... + + decfsz waitms_temp,F + bra WAITMSX1 return \ No newline at end of file