annotate src/eeprom_rs232.asm @ 631:185ba2f91f59

3.09 beta 1 release
author heinrichsweikamp
date Fri, 28 Feb 2020 15:45:07 +0100
parents 237931377539
children 4050675965ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
3 ; File eeprom_rs232.asm combined next generation V3.08.8
0
heinrichsweikamp
parents:
diff changeset
4 ;
heinrichsweikamp
parents:
diff changeset
5 ; Internal EEPROM, RS232
heinrichsweikamp
parents:
diff changeset
6 ;
heinrichsweikamp
parents:
diff changeset
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
heinrichsweikamp
parents:
diff changeset
8 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
9 ; HISTORY
heinrichsweikamp
parents:
diff changeset
10 ; 2011-08-06 : [mH] moving from OSTC code
heinrichsweikamp
parents:
diff changeset
11
275
653a3ab08062 rename into hwOS
heinrichsweikamp
parents: 236
diff changeset
12 #include "hwos.inc"
0
heinrichsweikamp
parents:
diff changeset
13 #include "wait.inc"
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
14 #include "shared_definitions.h"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
15 #include "rtc.inc"
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
16 #include "external_flash.inc"
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
17
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
18 #DEFINE INSIDE_EEPROM_RS232
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
19 #include "eeprom_rs232.inc"
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
20
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
21
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
22 extern lt2942_charge_done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
23
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
24 ;-----------------------------------------------------------------------------
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
25 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
26 ; for EEPROM Macros and Memory Map, see eeprom_rs232.inc
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
27 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
28 ;-----------------------------------------------------------------------------
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
29
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
30 ee_rs232 CODE
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
31
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
32 ;=============================================================================
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
33 ; EEPROM Functions
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
34 ;=============================================================================
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
35
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
36 ;-----------------------------------------------------------------------------
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
37 ; read from internal EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
38 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
39 ; Input: EEADRH:EEADR = EEPROM address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
40 ; Output: EEDATA
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
41 ; Trashed: NONE
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
42 ;
0
heinrichsweikamp
parents:
diff changeset
43 global read_eeprom
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
44 read_eeprom:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
45 bcf EECON1,EEPGD ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
46 bcf EECON1,CFGS ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
47 bsf EECON1,RD ;
0
heinrichsweikamp
parents:
diff changeset
48 return
heinrichsweikamp
parents:
diff changeset
49
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
50 ;-----------------------------------------------------------------------------
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
51 ; write into internal EEPROM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
52 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
53 ; Input: EEADRH:EEADR = EEPROM address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
54 ; EEDATA = byte to write
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
55 ; Trashed: WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
56 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
57 global write_eeprom
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
58 write_eeprom:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
59 bcf EECON1,EEPGD ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
60 bcf EECON1,CFGS ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
61 bsf EECON1,WREN ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
62 bcf INTCON,GIE ; disable interrupts for the next 5 instructions
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
63 movlw 0x55 ; unlock sequence
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
64 movwf EECON2 ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
65 movlw 0xAA ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
66 movwf EECON2 ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
67 bsf EECON1,WR ; start write operation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
68 write_eeprom_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
69 btfsc EECON1,WR ; write completed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
70 bra write_eeprom_loop ; NO - loop waiting
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
71 bcf EECON1,WREN ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
72 bsf INTCON,GIE ; ...but the flag for the ISR routines were still set, so they will interrupt now!
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
73 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
74
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
75 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
76 ; these 2 functions are meant to be used through the macros, see eeprom_rs232!
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
77 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
78 global eeprom_read_common
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
79 eeprom_read_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
80 movwf eeprom_loop ; initialize loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
81 eeprom_read_common_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
82 rcall read_eeprom ; execute read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
83 movff EEDATA,POSTINC1 ; copy byte from EEPROM data register to memory
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
84 incf EEADR,F ; advance to next EEPROM cell
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
85 decfsz eeprom_loop,F ; decrement loop counter, all done?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
86 bra eeprom_read_common_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
87 return ; YES - done
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
88
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
89 global eeprom_write_common
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
90 eeprom_write_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
91 movwf eeprom_loop ; initialize loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
92 eeprom_write_common_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
93 movff POSTINC1,EEDATA ; copy byte from memory to EEPROM data register
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
94 rcall write_eeprom ; execute write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
95 incf EEADR,F ; advance to next EEPROM cell
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
96 decfsz eeprom_loop,F ; decrement loop counter, all done?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
97 bra eeprom_write_common_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
98 return ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
99
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
100 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
101 ; REad OSTC serial number
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
102 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
103 global eeprom_serial_number_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
104 eeprom_serial_number_read:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
105 EEPROM_II_READ eeprom_ostc_serial,mpr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
106 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
107
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
108 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
109 ; Read and write dive number offset
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
110 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
111 global eeprom_log_offset_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
112 eeprom_log_offset_read:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
113 EEPROM_II_READ eeprom_log_offset,mpr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
114 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
115
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
116 global eeprom_log_offset_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
117 eeprom_log_offset_write:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
118 EEPROM_II_WRITE mpr,eeprom_log_offset
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
119 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
120
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
121
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
122 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
123 ; Read and write total number of dives
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
124 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
125 global eeprom_total_dives_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
126 eeprom_total_dives_read:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
127 EEPROM_II_READ eeprom_num_dives,mpr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
128 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
129
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
130 global eeprom_total_dives_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
131 eeprom_total_dives_write:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
132 EEPROM_II_WRITE mpr,eeprom_num_dives
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
133 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
134
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
135
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
136 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
137 ; Read and write the battery gauge and type
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
138 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
139 global eeprom_battery_gauge_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
140 eeprom_battery_gauge_read:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
141 ; retrieve battery gauge from EEPROM 0x07-0x0C
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
142 bsf block_battery_gauge ; suspend ISR from accessing the battery gauge
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
143 EEPROM_CC_READ eeprom_battery_type, battery_type ; 1 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
144 EEPROM_RR_READ eeprom_battery_gauge,battery_gauge,.6 ; 6 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
145 bcf block_battery_gauge ; allow ISR to access the battery gauge again
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
146 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
147
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
148 global eeprom_battery_gauge_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
149 eeprom_battery_gauge_write:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
150 bsf block_battery_gauge ; suspend ISR from accessing the battery gauge
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
151 EEPROM_CC_WRITE battery_type, eeprom_battery_type ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
152 update_battery_gauge:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
153 EEPROM_RR_WRITE battery_gauge,eeprom_battery_gauge,.6 ; 6 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
154 bcf block_battery_gauge ; allow ISR to access the battery gauge again
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
155 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
156
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
157
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
158 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
159 ; Read and write the deco status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
160 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
161 global eeprom_deco_data_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
162 eeprom_deco_data_read:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
163
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
164 btfsc RCON,POR ; was there a power outage ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
165 bra eeprom_deco_data_read_1 ; NO - RTC is up-to-date
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
166
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
167 EEPROM_RR_READ eeprom_deco_data_timestamp,rtc_latched_year,.6 ; 6 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
168 call rtc_set_rtc ; recover RTC to last known time & date
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
169
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
170 eeprom_deco_data_read_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
171
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
172 ; restore surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
173 EEPROM_II_READ eeprom_deco_data_surfinterval,mpr ; 2 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
174 SMOVII mpr,surface_interval_mins ; ISR-safe copy of surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
175
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
176 ; bank 3: restore desaturation status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
177 EEPROM_RR_READ eeprom_deco_data_bank3,0x300,.9 ; 9 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
178
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
179 ; bank 5: restore CNS
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
180 EEPROM_RR_READ eeprom_deco_data_bank5,0x500,.4 ; 4 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
181
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
182 ; bank 7: restore tissue pressures
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
183 EEPROM_RR_READ eeprom_deco_data_bank7,0x700,.128 ; 128 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
184
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
185 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
186
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
187
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
188 global eeprom_deco_data_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
189 eeprom_deco_data_write:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
190
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
191 ; invalidate current data in vault
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
192 movlw DECO_DATA_INVALID_TOKEN ; deco data invalid token
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
193 EEPROM_CC_WRITE WREG,eeprom_deco_data_validity ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
194
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
195 ; store vault version
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
196 movlw eeprom_vault_version ; deco data format version
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
197 EEPROM_CC_WRITE WREG,eeprom_deco_data_version ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
198
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
199 ; store date/time
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
200 SMOVSS rtc_year,rtc_latched_year ; ISR-safe 6 byte copy of date and time
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
201 EEPROM_RR_WRITE rtc_latched_year,eeprom_deco_data_timestamp,.6 ; 6 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
202
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
203 ; store surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
204 SMOVII surface_interval_mins,mpr ; ISR-safe copy of surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
205 EEPROM_II_WRITE mpr,eeprom_deco_data_surfinterval ; 2 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
206
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
207 ; bank 3: store desaturation status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
208 EEPROM_RR_WRITE 0x300,eeprom_deco_data_bank3,.9 ; 9 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
209
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
210 ; bank 5: store CNS
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
211 EEPROM_RR_WRITE 0x500,eeprom_deco_data_bank5,.4 ; 4 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
212
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
213 ; bank 7: store tissue pressures
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
214 EEPROM_RR_WRITE 0x700,eeprom_deco_data_bank7,.128 ; 128 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
215
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
216 ; indicate new valid data in vault
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
217 movlw DECO_DATA_VALID_TOKEN ; deco data valid token
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
218 EEPROM_CC_WRITE WREG,eeprom_deco_data_validity ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
219
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
220 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
221
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
222
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
223
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
224 ;=============================================================================
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
225 ; RS232 Functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
226 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
227
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
228 global disable_ir_s8
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
229 disable_ir_s8:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
230 banksel TXSTA2 ; select bank for IO register access
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
231 clrf TXSTA2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
232 clrf RCSTA2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
233 banksel common ; back to bank common
629
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
234 bcf PIE3,RC2IE ; disable RC2 INT
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
235 bcf ir_power ; IR off
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
236 bcf mcp_power ; power-down instrumentation amp
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
237 bsf s8_npower ; power-down S8 digital interface
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
238 bcf s8_digital_avail ; digital S8 interface not available
0
heinrichsweikamp
parents:
diff changeset
239 return
heinrichsweikamp
parents:
diff changeset
240
heinrichsweikamp
parents:
diff changeset
241
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
242 global enable_ir_s8
187
669b5d00706d CHANGE: Longer timeout (4 min) for calibration menu
heinrichsweikamp
parents: 151
diff changeset
243 enable_ir_s8:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
244 ;initialize serial port2 (TRISG2)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
245 btfsc analog_o2_input ; do we have an analog input?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
246 bra enable_s8 ; YES - search for S8 digital input
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
247 ; NO - start IR digital input
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
248 banksel BAUDCON2 ; - select bank for IO register access
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
249 movlw b'00100000' ; - BRG16=0, inverted for IR
113
heinrichsweikamp
parents: 0
diff changeset
250 movwf BAUDCON2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
251 movlw b'00100000' ; - BRGH=0, SYNC=0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
252 movwf TXSTA2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
253 movlw .102 ; - SPBRGH:SPBRG = .102 : 2403 BAUD @ 16 MHz
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
254 movwf SPBRG2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
255 clrf SPBRGH2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
256 movlw b'10010000'
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
257 movwf RCSTA2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
258 banksel common ; - back to bank common
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
259 bsf ir_power ; - power-up IR
629
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
260 btfss ir_power ; - power-up confirmed?
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
261 bra $-6 ; NO - loop and wait
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
262 bsf PIE3,RC2IE ; - enable RC2 INT
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
263 return ; - done
0
heinrichsweikamp
parents:
diff changeset
264
113
heinrichsweikamp
parents: 0
diff changeset
265 enable_s8:
629
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
266 banksel TXSTA2 ; select bank for IO register access
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
267 clrf TXSTA2 ; reset UART 2 TX function
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
268 clrf RCSTA2 ; reset UART 2 RX function
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
269 banksel common ; back to bank common
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
270
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
271 bsf mcp_power ; power-up instrumentation amp (for analog AND digital)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
272 btfss mcp_power ; power-up completed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
273 bra $-4 ; NO - loop
113
heinrichsweikamp
parents: 0
diff changeset
274
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
275 ; toggle for digital/analog
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
276 TSTOSS opt_s8_mode ; =0: analog, =1: digital RS232
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
277 bra enable_s8_analog ; -> analog
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
278
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
279 ; configure S8 digital interface
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
280 bcf s8_npower ; power S8 HUD (inverted via P-MOS transistor)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
281 WAITMS d'30' ; NO - wait 30 ms
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
282 banksel BAUDCON2 ; select bank for IO register access
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
283 movlw b'00000000' ; BRG16=0, normal for S8
113
heinrichsweikamp
parents: 0
diff changeset
284 movwf BAUDCON2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
285 movlw b'00100000' ; BRGH=0, SYNC=0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
286 movwf TXSTA2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
287 movlw .25 ; SPBRGH:SPBRG = .25 : 9615 BAUD @ 16 MHz
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
288 movwf SPBRG2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
289 movlw b'10010000'
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
290 movwf RCSTA2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
291 banksel common ; back to bank common
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
292 bsf PIE3,RC2IE ; enable RC2 INT
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
293 bsf s8_digital_avail ; digital S8 interface available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
294 return
113
heinrichsweikamp
parents: 0
diff changeset
295
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
296 enable_s8_analog:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
297 ; S8 analog interface
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
298 bcf PIE3,RC2IE ; disable RC2 INT
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
299 bsf s8_npower ; power-down S8 HUD
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
300 bcf s8_digital_avail ; digital S8 interface not available
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
301 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
302
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
303
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
304 global ir_s8_wait_tx
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
305 ir_s8_wait_tx:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
306 banksel TXSTA2 ; select bank for IO register access
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
307 rs232_wait_tx2_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
308 btfss TXSTA2,TRMT ; RS232 busy?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
309 bra rs232_wait_tx2_loop ; YES - wait...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
310 banksel common ; NO - back to bank common
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
311 return ; - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
312
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
313 ;-----------------------------------------------------------------------------
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
314
0
heinrichsweikamp
parents:
diff changeset
315 global enable_rs232
heinrichsweikamp
parents:
diff changeset
316 enable_rs232:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
317 call request_speed_normal ; request CPU speed change to normal speed
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
318 enable_rs232_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
319 btfss speed_is_normal ; speed = normal?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
320 bra enable_rs232_1 ; NO - loop waiting for ISR to have adjusted the speed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
321 bcf PORTE,0 ; YES - switch port to comm
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
322 bsf PORTJ,2 ; - /Reset (required for very old OSTC sport)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
323 movlw b'00100100' ; - TX configuration: TX enabled, async, high speed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
324 movwf TXSTA1 ; - ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
325 movlw b'10010000' ; - RX configuration: port enabled, RX enabled
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
326 movwf RCSTA1 ; - ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
327 movlw HIGH(.65536-rx_timeout*.32) ; - define TMR5H initialization value for RX timeout
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
328 movwf rx_timoeut_tmr5h_load ; - store for later use
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
329 return ; - done
0
heinrichsweikamp
parents:
diff changeset
330
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
331
0
heinrichsweikamp
parents:
diff changeset
332 global disable_rs232
heinrichsweikamp
parents:
diff changeset
333 disable_rs232:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
334 clrf RCSTA1 ; disable RX
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
335 clrf TXSTA1 ; disable TX
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
336 bcf PORTC,6 ; switch TX pin hard to GND
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
337 bsf PORTE,0 ; stop comm
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
338 bcf PORTJ,2 ; /Reset (required for very old OSTC sport)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
339 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
340
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
341
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
342 global rs232_wait_tx ; ++++ do not touch WREG here! ++++
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
343 rs232_wait_tx:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
344 btfss TXSTA1,TRMT ; last byte completely shifted out on TX pin?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
345 bra rs232_wait_tx ; NO - wait...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
346 btfss ble_available ; YES - OSTC running with Bluetooth?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
347 return ; NO - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
348 btfsc NRTS ; YES - Bluetooth module also completed TX?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
349 bra rs232_wait_tx ; NO - wait...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
350 return ; YES - done
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
351
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
352
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
353 ; ++++ make this code as fast as possible! ++++
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
354 global rs232_get_byte ; ++++ do not touch WREG here! ++++
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
355 rs232_get_byte:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
356 bcf rs232_rx_timeout ; clear timeout flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
357 btfsc PIR1,RCIF ; received a data byte? (bit is set on RX complete and reset on reading RCREG1)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
358 return ; YES - done, received a byte (fast path)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
359 movff rx_timoeut_tmr5h_load,TMR5H ; - load TMR5 high with timeout value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
360 clrf TMR5L ; - load TMR5 low with a zero, writing low starts the timer
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
361 bcf PIR5,TMR5IF ; - clear timer overflow flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
362 rs232_get_byte_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
363 btfsc PIR1,RCIF ; received a data byte?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
364 return ; YES - done, received a byte
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
365 btfss PIR5,TMR5IF ; NO - timer overflow (timeout)?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
366 bra rs232_get_byte_loop ; NO - continue looping
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
367 ;bra rs232_rx_get_timeout ; YES - give up
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
368
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
369 rs232_rx_get_timeout:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
370 bsf rs232_rx_timeout ; set timeout flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
371 bcf RCSTA1,CREN ; clear receiver status by toggling CREN
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
372 bsf RCSTA1,CREN ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
373 return ; done, given up
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
374
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
375
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
376 ;-----------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
377 ; Send and Receive functions to be used through the macros
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
378
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
379 ; send a range of 1-256 bytes from memory to the RS232 interface
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
380 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
381 global serial_tx_ram
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
382 serial_tx_ram:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
383 movwf eeprom_loop ; initialize loop counter (eeprom variable used here)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
384 serial_tx_ram_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
385 rcall rs232_wait_tx ; wait for completion of last transmit
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
386 movff POSTINC2,TXREG1 ; send a byte from memory to serial
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
387 decfsz eeprom_loop,F ; decrement loop counter, became zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
388 bra serial_tx_ram_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
389 return ; YES - done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
390
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
391
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
392 ; receive a range of 1-256 byte from the RS232 interface and write them to memory
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
393 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
394 global serial_rx_stream_ram ; ++++ make this code as fast as possible! ++++
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
395 serial_rx_stream_ram:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
396 movwf eeprom_loop ; initialize loop counter (eeprom variable used here)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
397 serial_rx_stream_ram_loop_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
398 btfss PIR1,RCIF ; received a data byte? (bit is set on RX complete and reset on reading RCREG1)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
399 bra serial_rx_stream_ram_tmr ; NO - enter loop with timeout
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
400 movff RCREG1,POSTINC2 ; YES - copy received byte to memory
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
401 decfsz eeprom_loop,F ; - decrement loop counter, became zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
402 bra serial_rx_stream_ram_loop_1 ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
403 bcf rs232_rx_timeout ; YES - clear timeout flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
404 return ; - all bytes received, done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
405 serial_rx_stream_ram_tmr:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
406 movff rx_timoeut_tmr5h_load,TMR5H ; load TMR5 high with timeout value
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
407 clrf TMR5L ; load TMR5 low with a zero, writing low starts the timer
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
408 bcf PIR5,TMR5IF ; clear timer overflow flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
409 serial_rx_stream_ram_loop_2a:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
410 clrf TMR5L ; restart timer (see above)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
411 serial_rx_stream_ram_loop_2b:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
412 btfss PIR1,RCIF ; received a data byte? (bit is set on RX complete and reset on reading RCREG1)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
413 bra serial_rx_stream_ram_chk ; NO - check timeout
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
414 movff RCREG1,POSTINC2 ; YES - copy received byte to memory
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
415 decfsz eeprom_loop,F ; - decrement loop counter, became zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
416 bra serial_rx_stream_ram_loop_2a; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
417 bcf rs232_rx_timeout ; YES - clear timeout flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
418 return ; - all bytes received, done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
419 serial_rx_stream_ram_chk:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
420 btfss PIR5,TMR5IF ; timer overflow (timeout)?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
421 bra serial_rx_stream_ram_loop_2b; NO - continue looping
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
422 bra rs232_rx_get_timeout ; YES - give up
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
423
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
424 ;-----------------------------------------------------------------------------
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
425 END