Mercurial > public > mk2
changeset 481:a863fd56189c
Merge with 478
author | heinrichsweikamp |
---|---|
date | Thu, 13 Oct 2011 08:20:58 +0200 |
parents | 9fc8feff27a5 (diff) 8f4882639326 (current diff) |
children | 8e1fb9cdd62a |
files | code_part1/OSTC_code_asm_part1/definitions.asm |
diffstat | 9 files changed, 62 insertions(+), 50 deletions(-) [+] |
line wrap: on
line diff
--- a/code_part1/OSTC_code_asm_part1/changelog.txt Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/changelog.txt Thu Oct 13 08:20:58 2011 +0200 @@ -1,5 +1,6 @@ New in 2.02 beta: NEW: Cave divers consomation display and alarm (CF59). +CHANGE: SAC (CF56/CF57) in range 5..50 l/min (no more decimal). NEW: 32MhZ mode: computes twice faster. BUGFIX: Hang when deco table is full (more than 32 stops).
--- a/code_part1/OSTC_code_asm_part1/customview.asm Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/customview.asm Thu Oct 13 08:20:58 2011 +0200 @@ -17,43 +17,53 @@ ; Customviews for divemode ; written by: Matthias Heinrichs, info@heinrichsweikamp.com -; written: 101212 ; history: -; 2010-12-12: [MH] last updated +; 2010-12-12: [MH] First updated ; 2011-01-04: [jDG] Saturation graphs in customview divemode +; 2011-10-10: [jDG] Added Cave live gas counter ; known bugs: ; ToDo: ;============================================================================= ; Show the customview-dependent entry for the divemode menu ; -customview_menu_entry3: -; bcf menu3_active ;=1: menu entry three in divemode menu is active - +customview_menu_entry3: movff menupos3,WREG ; copy dcfsnz WREG,F bra customview_menu3_stopwatch ; Show the stopwatch option in divemode menu dcfsnz WREG,F bra customview_menu3_marker ; Show the marker option in divemode menu dcfsnz WREG,F - bra customview_menu3_clock ; Show the clock option in divemode menu + bra customview_menu3_clock ; Show nothing + dcfsnz WREG,F + bra customview_menu3_lead_tiss ; Show nothing + dcfsnz WREG,F + bra customview_menu3_average ; Show nothing dcfsnz WREG,F - bra customview_menu3_lead_tiss ; Show the leading tissue option in divemode menu - ; Menupos3=0, do nothing + bra customview_menu3_graphs ; Show nothing + dcfsnz WREG,F + bra customview_menu3_ead_end ; Show nothing + dcfsnz WREG,F + bra customview_menu3_@5 ; Show nothing + dcfsnz WREG,F + bra customview_menu3_cave_bailout; Show reset option return +customview_menu3_cave_bailout: customview_menu3_stopwatch: -; bsf menu3_active ; Set Flag DISPLAYTEXT .33 ; ResetAvr return customview_menu3_marker: -; bsf menu3_active ; Set Flag DISPLAYTEXT .30 ; Set Marker return customview_menu3_clock: ; No menu entry -customview_menu3_lead_tiss ; No menu entry +customview_menu3_lead_tiss: +customview_menu3_average: +customview_menu3_graphs: +customview_menu3_ead_end: +customview_menu3_@5: return ;============================================================================= @@ -120,6 +130,7 @@ goto PLED_show_@5 customview_1sec_cave_bailout: + bsf menu3_active ; Set Flag goto PLED_show_cave_bailout ;============================================================================= @@ -168,7 +179,7 @@ ; Show next customview (and delete this flag) customview_toggle: - bcf menu3_active ;=1: menu entry three in divemode menu is active + bcf menu3_active ;=1: menu entry three in divemode menu is active ostc_debug 'X' ; Sends debug-information to screen if debugmode active btfsc FLAG_apnoe_mode ; In Apnoe mode? @@ -238,7 +249,7 @@ call PLED_standard_color DISPLAYTEXT d'151' ; Set Marker? - bsf menu3_active ; Set Flag + bsf menu3_active ; Set Flag bra customview_toggle_exit customview_init_clock: ; Init Clock @@ -288,6 +299,7 @@ iorwf hi,W bz customview_toggle ; No: jump to next Customview ! + bsf menu3_active ; Set Flag call PLED_show_cave_bailout bra customview_toggle_exit
--- a/code_part1/OSTC_code_asm_part1/definitions.asm Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/definitions.asm Thu Oct 13 08:20:58 2011 +0200 @@ -110,7 +110,7 @@ ;============================================================================= -;#include "../OSTC_code_c_part2/shared_definitions.h" +#include "../OSTC_code_c_part2/shared_definitions.h" #include "ostc2_code/code_part1/OSTC_code_c_part2/shared_definitions.h" ;=============================================================================
--- a/code_part1/OSTC_code_asm_part1/divemode_menu.asm Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/divemode_menu.asm Thu Oct 13 08:20:58 2011 +0200 @@ -194,15 +194,24 @@ bra timeout_divemenu2 ; Quit divemode menu divemode_menu3: - movff menupos3,temp1 ; copy - dcfsnz temp1,F + dcfsnz menupos3,W ; copy bra toggle_stopwatch ; Toggle Stopwatch/Average register - dcfsnz temp1,F + dcfsnz WREG,F bra set_marker ; Set Marker - dcfsnz temp1,F + dcfsnz WREG,F bra divemode_menu3_nothing ; clock... - dcfsnz temp1,F + dcfsnz WREG,F bra divemode_menu3_nothing ; leading tissue... + dcfsnz WREG,F + bra divemode_menu3_nothing ; Average depth (not resetable) + dcfsnz WREG,F + bra divemode_menu3_nothing ; Graphs... + dcfsnz WREG,F + bra divemode_menu3_nothing ; END/EAD in divemode + dcfsnz WREG,F + bra divemode_menu3_nothing ; Futur TTS... + dcfsnz WREG,F + bra toggle_stopwatch ; Cave bailout prediction. divemode_menu3_nothing: bra timeout_divemenu2 ; Quit divemode menu
--- a/code_part1/OSTC_code_asm_part1/menu_custom.asm Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/menu_custom.asm Thu Oct 13 08:20:58 2011 +0200 @@ -47,7 +47,7 @@ ; define the display format. Also stores min/max bounds into the PROM table. ; And provides surfacemode checking of all parameters. -CF_INT8 EQU 0 ; Default display, 8 or 15 bits values. +CF_INT8 EQU 0 ; Default display, 8 or 15 bits values. CF_PERCENT EQU 1 ; Displays 110% CF_DECI EQU 2 ; Displays 1.6 CF_CENTI EQU 3 ; Displays 1.50
--- a/code_part1/OSTC_code_asm_part1/menu_reset.asm Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/menu_reset.asm Thu Oct 13 08:20:58 2011 +0200 @@ -178,9 +178,9 @@ CF_DEFAULT CF_BOOL, d'0', 0, 0 ; CF53 Show Laeding Tissue in Divemode CF_DEFAULT CF_BOOL, d'0', 0, 0 ; CF54 Display shallowest stop first CF_DEFAULT CF_INT8, d'0', d'0', d'10' ; GF55 Gas switch additional delay - CF_DEFAULT CF_DECI, d'200', d'5', d'250' ; CF56 Bottom gas usage (l/min or bar/min) + CF_DEFAULT CF_INT8, d'20', d'5', d'50' ; CF56 Bottom gas usage (SAC l/min) - CF_DEFAULT CF_DECI, d'200', d'5', d'250' ; CF57 Ascent/deco gas usage (l/min or bar/min) + CF_DEFAULT CF_INT8, d'20', d'5', d'50' ; CF57 Ascent/deco gas usage (SAC l/min) CF_DEFAULT CF_INT8, d'0', d'0', d'10' ; CF58 TTS for extra time at current depth [min] CF_DEFAULT CF_INT15, d'0', d'0', d'7000' ; CF59 Cave conso warning [l] CF_DEFAULT CF_INT15, 0, 0, 0 ; UNUSED
--- a/code_part1/OSTC_code_asm_part1/pled_outputs.asm Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_asm_part1/pled_outputs.asm Thu Oct 13 08:20:58 2011 +0200 @@ -3370,29 +3370,19 @@ call PLED_standard_color lfsr FSR2,letter - ;---- Compute divetime in seconds - movff divemins+0,xA+0 - movff divemins+1,xA+1 - movlw d'60' - movwf xB+0 - clrf xB+1 - call mult16x16 ; xC:4=xA:2*xB:2 - movf divesecs,W - addwf xC+0,W - movwf xA+0 - movlw d'0' - addwfc xC+1,W - movwf xA+1 ; xA:2 holds total dive seconds + ;---- Retrieve divetime in seconds (since last reset) + movff average_divesecs+0,xA+0 + movff average_divesecs+1,xA+1 - ;---- Multiply by SAC, and divide by 600 (SAC in 0.1 liters per minutes) + ;---- Multiply by SAC, and divide by 60 (SAC inliters per minutes) GETCUSTOM8 d'56' ; Get bottom SAC movwf xB+0 clrf xB+1 call mult16x16 ; xC:4=xA:2*xB:2 - movlw LOW(.600) + movlw LOW(.60) movwf xB+0 - movlw HIGH(.600) + movlw HIGH(.60) movwf xB+1 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder @@ -3400,10 +3390,10 @@ movff xC+0,xA+0 ; Get result (in xC+0, noy xC+2 !) into xA movff xC+1,xA+1 - movf avr_rel_pressure_total+0,W ; Add surface pressure to get absolute pressure + movf avr_rel_pressure+0,W ; Add surface pressure to get absolute pressure addwf last_surfpressure_30min+0,W movwf xB+0 - movf avr_rel_pressure_total+1,W + movf avr_rel_pressure+1,W addwfc last_surfpressure_30min+1,W movwf xB+1 ; --> Into xB
--- a/code_part1/OSTC_code_c_part2/p2_deco.c Tue Oct 11 21:17:05 2011 +0200 +++ b/code_part1/OSTC_code_c_part2/p2_deco.c Thu Oct 13 08:20:58 2011 +0200 @@ -2508,14 +2508,14 @@ // char_I_first_gas is the bottom gas. // decoplan (char_O_deco_depth, char_O_deco_time). // CF#54 == TRUE if shallowest stop first. -// CF#56 == bottom deci-liters/minutes (0.5 .. 50.0) or bar/min. -// CF#57 == deco deci-liters/minutes (0.5 .. 50.0) or bar/min. +// CF#56 == bottom liters/minutes (5 .. 50) or bar/min. +// CF#57 == deco liters/minutes (5 .. 50) or bar/min. // Output: int_O_gas_volumes[0..4] in litters * 0.1 // void deco_gas_volumes(void) { overlay float volumes[NUM_GAS]; - overlay float bottom_usage, ascent_usage; + overlay float bottom_usage, deco_usage; overlay unsigned char i, deepest_first; overlay unsigned char gas; RESET_C_STACK @@ -2527,7 +2527,7 @@ assert(1 <= char_I_first_gas && char_I_first_gas <= NUM_GAS); gas = char_I_first_gas - 1; - bottom_usage = read_custom_function(56) * 0.1; + bottom_usage = (float) read_custom_function(56); if( bottom_usage > 0.0 ) volumes[gas] = (char_I_bottom_depth*0.1 + 1.0) // Use Psurface = 1.0 bar. @@ -2539,18 +2539,18 @@ //---- Ascent usage ------------------------------------------------------ deepest_first = read_custom_function(54) == 0; - ascent_usage = read_custom_function(57) * 0.1; // In liter/minutes. + deco_usage = (float) read_custom_function(57); // In liter/minutes. // Usage up to the first stop: // - computed at MAX depth (easier, safer), // - with an ascent speed of 10m/min. // - with ascent litter / minutes. // - still using bottom gas: - if( ascent_usage > 0.0 ) + if( deco_usage > 0.0 ) volumes[gas] += (char_I_bottom_depth*0.1 + 1.0) // Depth -> bar * (char_I_bottom_depth - char_O_first_deco_depth) * 0.1 // ascent time (min) - * ascent_usage; // Consumption ( xxx / min @ 1 bar) + * deco_usage; // Consumption ( xxx / min @ 1 bar) else volumes[gas] = 65535.0; @@ -2589,14 +2589,14 @@ // usage during stop: // Note: because first gas is not in there, increment gas+1 - if( ascent_usage > 0.0 ) + if( deco_usage > 0.0 ) volumes[gas] += (depth*0.1 + 1.0) // depth --> bar. * time // in minutes. - * ascent_usage // in xxx / min @ 1bar. + * deco_usage // in xxx / min @ 1bar. // Plus usage during ascent to the next stop, at 10m/min. + (depth*0.1 + 1.0) * ascent*0.1 // metre --> min - * ascent_usage; + * deco_usage; else volumes[gas] = 65535.0; }