annotate src/eeprom_rs232.asm @ 656:8af5aefbcdaf default tip

Update to 3.31 beta
author heinrichsweikamp
date Thu, 27 Nov 2025 18:32:58 +0100
parents 75e90cd0c2c3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
3 ; File eeprom_rs232.asm * combined next generation V3.09.4n
0
heinrichsweikamp
parents:
diff changeset
4 ;
heinrichsweikamp
parents:
diff changeset
5 ; Internal EEPROM, RS232
heinrichsweikamp
parents:
diff changeset
6 ;
654
75e90cd0c2c3 hwOS sport 10.77 release
heinrichsweikamp
parents: 650
diff changeset
7 ; Copyright (c) 2011, JD Gascuel, heinrichs weikamp gmbh, all right reserved.
0
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"
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
17 #include "convert.inc"
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
18
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
19 #DEFINE INSIDE_EEPROM_RS232
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
20 #include "eeprom_rs232.inc"
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
21
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
22
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
23 extern lt2942_charge_done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
24
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
25
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
26 ;=============================================================================
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
27 eeprom CODE
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
28 ;=============================================================================
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
29
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
30 ;-----------------------------------------------------------------------------
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
31 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
32 ; EEPROM Functions - for EEPROM Macros and Memory Map, see eeprom_rs232.inc
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
33 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
34 ;-----------------------------------------------------------------------------
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
35
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
36
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
37 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
38 ; Read from internal EEPROM
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
39 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
40 ; Input: EEADRH:EEADR = EEPROM address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
41 ; Output: EEDATA
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
42 ; Trashed: NONE
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
43 ;
0
heinrichsweikamp
parents:
diff changeset
44 global read_eeprom
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
45 read_eeprom:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
46 bcf EECON1,EEPGD ; access data EEPROM
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
47 bcf EECON1,CFGS ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
48 bsf EECON1,RD ; initiate reading
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
49 return ; done
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
50
0
heinrichsweikamp
parents:
diff changeset
51
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
52 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
53 ; Write into internal EEPROM
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
54 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
55 ; Input: EEADRH:EEADR = EEPROM address
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
56 ; EEDATA = byte to write
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
57 ; Trashed: WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
58 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
59 global write_eeprom
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
60 write_eeprom:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
61 bcf EECON1,EEPGD ; access data EEPROM
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
62 bcf EECON1,CFGS ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
63 bsf EECON1,WREN ; enable writing
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
64 bcf INTCON,GIE ; disable interrupts
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
65 movlw 0x55 ; unlock sequence
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 movlw 0xAA ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
68 movwf EECON2 ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
69 bsf EECON1,WR ; start write operation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
70 write_eeprom_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
71 btfsc EECON1,WR ; write completed?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
72 bra write_eeprom_loop ; NO - loop waiting
650
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
73 btfsc EECON1,WRERR ; All ok?
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
74 rcall write_eeprom_error ; NO, something failed.
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
75 bcf EECON1,WREN ; YES - disable writing
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
76 bsf INTCON,GIE ; - re-enable interrupts
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
77 return ; - done
650
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
78 write_eeprom_error:
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
79 bsf eeprom_write_error_flag ; Set error flag
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
80 ; Try again (once)
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
81 movlw 0x55 ; unlock sequence
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
82 movwf EECON2 ; ...
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
83 movlw 0xAA ; ...
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
84 movwf EECON2 ; ...
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
85 bsf EECON1,WR ; start write operation
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
86 write_eeprom_loop2:
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
87 btfsc EECON1,WR ; write completed?
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
88 bra write_eeprom_loop2 ; NO - loop waiting
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
89 return
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
90
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
91
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
92 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
93 ; EEPROM read and write Functions to be used via Macros
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
94 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
95 global eeprom_read_common
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
96 eeprom_read_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
97 movwf eeprom_loop ; initialize loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
98 eeprom_read_common_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
99 rcall read_eeprom ; execute read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
100 movff EEDATA,POSTINC1 ; copy byte from EEPROM data register to memory
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
101 incf EEADR,F ; advance to next EEPROM cell
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
102 decfsz eeprom_loop,F ; decrement loop counter, all done?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
103 bra eeprom_read_common_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
104 return ; YES - done
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
105
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
106 global eeprom_write_common
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
107 eeprom_write_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
108 movwf eeprom_loop ; initialize loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
109 eeprom_write_common_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
110 movff POSTINC1,EEDATA ; copy byte from memory to EEPROM data register
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
111 rcall write_eeprom ; execute write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
112 incf EEADR,F ; advance to next EEPROM cell
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
113 decfsz eeprom_loop,F ; decrement loop counter, all done?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
114 bra eeprom_write_common_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
115 return ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
116
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
117
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
118 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
119 ; Read OSTC Serial Number
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
120 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
121 global eeprom_serial_number_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
122 eeprom_serial_number_read:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
123 EEPROM_II_READ eeprom_ostc_serial,mpr ; read serial number
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
124 return ; done
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
125
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
126
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
127 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
128 ; Read and Write Dive Number Offset
631
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_log_offset_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
131 eeprom_log_offset_read:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
132 EEPROM_II_READ eeprom_log_offset,mpr ; read log offset
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
133 return ; done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
134
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
135 global eeprom_log_offset_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
136 eeprom_log_offset_write:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
137 EEPROM_II_WRITE mpr,eeprom_log_offset ; write log-offset
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
138 return ; done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
139
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
140
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
141 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
142 ; Read and Write total Number of Dives
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
143 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
144 global eeprom_total_dives_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
145 eeprom_total_dives_read:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
146 EEPROM_II_READ eeprom_num_dives,mpr ; read total dives
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
147 return ; done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
148
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
149 global eeprom_total_dives_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
150 eeprom_total_dives_write:
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
151 EEPROM_II_WRITE mpr,eeprom_num_dives ; write total dives
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
152 return ; done
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 582
diff changeset
153
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
154
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
155 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
156 ; Read and Write the Battery Type and Gauge Reading
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
157 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
158 global eeprom_battery_gauge_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
159 eeprom_battery_gauge_read:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
160 ; retrieve battery gauge from EEPROM 0x07-0x0C
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
161 bsf block_battery_gauge ; suspend ISR from accessing the battery gauge
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
162 EEPROM_CC_READ eeprom_battery_type, battery_type ; 1 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
163 EEPROM_RR_READ eeprom_battery_gauge,battery_gauge,.6 ; 6 byte read from EEPROM
654
75e90cd0c2c3 hwOS sport 10.77 release
heinrichsweikamp
parents: 650
diff changeset
164 EEPROM_RR_READ eeprom_charge_cycles,charge_cycles,.2 ; 2 byte read from EEPROM
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
165 bcf block_battery_gauge ; allow ISR to access the battery gauge again
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
166 return ; done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
167
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
168 global eeprom_battery_gauge_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
169 eeprom_battery_gauge_write:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
170 bsf block_battery_gauge ; suspend ISR from accessing the battery gauge
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
171 EEPROM_CC_WRITE battery_type, eeprom_battery_type ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
172 update_battery_gauge:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
173 EEPROM_RR_WRITE battery_gauge,eeprom_battery_gauge,.6 ; 6 byte write to EEPROM
654
75e90cd0c2c3 hwOS sport 10.77 release
heinrichsweikamp
parents: 650
diff changeset
174 EEPROM_RR_WRITE charge_cycles,eeprom_charge_cycles,.2 ; 2 byte write to EEPROM
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
175 bcf block_battery_gauge ; allow ISR to access the battery gauge again
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
176 return ; done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
177
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
178
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
179 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
180 ; Memorize the Checksum of the Firmware in the update Storage
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
181 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
182 global eeprom_memorize_fw_checksum
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
183 eeprom_memorize_fw_checksum:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
184 EXT_FLASH_ADDR 0x3E000D ; address firmware ID at 0x3E000D
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
185 FLASH_CW_READ_0x40 ; read firmware ID to WREG
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
186 movff WREG,buffer+.5 ; append firmware ID to checksum
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
187 EEPROM_RR_WRITE buffer,eeprom_fw_chksum_current,.6 ; do a 6 byte write to EEPROM
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
188 return ; done
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
189
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
190
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
191 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
192 ; Read and Write the Deco Status
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
193 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
194 global eeprom_deco_data_read
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
195 eeprom_deco_data_read:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
196
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
197 btfsc RCON,POR ; was there a power outage?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
198 bra eeprom_deco_data_read_1 ; NO - RTC is up-to-date
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
199
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
200 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
201 call rtc_set_rtc ; recover RTC to last known time & date
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
202
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
203 eeprom_deco_data_read_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
204
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
205 ; restore surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
206 EEPROM_II_READ eeprom_deco_data_surfinterval,mpr ; 2 byte read from EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
207 SMOVII mpr,surface_interval_mins ; ISR-safe copy of surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
208
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
209 ; bank 3: restore desaturation status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
210 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
211
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
212 ; bank 5: restore CNS
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
213 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
214
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
215 ; bank 7: restore tissue pressures
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
216 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
217
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
218 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
219
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
220
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
221 global eeprom_deco_data_write
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
222 eeprom_deco_data_write:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
223
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
224 ; invalidate current data in vault
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
225 movlw DECO_DATA_INVALID_TOKEN ; deco data invalid token
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
226 EEPROM_CC_WRITE WREG,eeprom_deco_data_validity ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
227
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
228 ; store vault version
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
229 movlw eeprom_vault_version ; deco data format version
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
230 EEPROM_CC_WRITE WREG,eeprom_deco_data_version ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
231
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
232 ; store date/time
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
233 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
234 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
235
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
236 ; store surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
237 SMOVII surface_interval_mins,mpr ; ISR-safe copy of surface interval
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
238 EEPROM_II_WRITE mpr,eeprom_deco_data_surfinterval ; 2 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
239
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
240 ; bank 3: store desaturation status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
241 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
242
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
243 ; bank 5: store CNS
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
244 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
245
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
246 ; bank 7: store tissue pressures
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
247 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
248
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
249 ; indicate new valid data in vault
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
250 movlw DECO_DATA_VALID_TOKEN ; deco data valid token
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
251 EEPROM_CC_WRITE WREG,eeprom_deco_data_validity ; 1 byte write to EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
252
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
253 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
254
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
255
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
256 ;=============================================================================
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
257 rs232 CODE
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
258 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
259
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
260 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
261 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
262 ; RS232 Functions
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
263 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
264 ;-----------------------------------------------------------------------------
0
heinrichsweikamp
parents:
diff changeset
265
heinrichsweikamp
parents:
diff changeset
266
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
267 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
268 ; Switch-On the IR/S8 Port
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
269 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
270 global enable_ir_s8_analog
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
271 enable_ir_s8_analog:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
272 ;initialize serial port2 (TRISG2)
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
273 btfsc ext_input_s8_ana ; do we have an S8/analog input?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
274 bra enable_s8_analog ; YES - enable S8/analog input
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
275 ;bra enable_ir ; NO - enable IR digital input
0
heinrichsweikamp
parents:
diff changeset
276
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
277 enable_ir:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
278 banksel BAUDCON2 ; select bank for IO register access
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
279 movlw b'00100000' ; speed generator configuration: BRG16=0, inverted for IR
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
280 movwf BAUDCON2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
281 movlw b'00100000' ; TX configuration: BRGH=0, SYNC=0
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
282 movwf TXSTA2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
283 movlw .102 ; speed configuration: SPBRGH:SPBRG = .102 : 2403 BAUD @ 16 MHz
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
284 movwf SPBRG2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
285 clrf SPBRGH2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
286 movlw b'10010000' ; RX configuration
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
287 movwf RCSTA2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
288 banksel common ; back to bank common
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
289 bsf ir_power ; power-up IR
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
290 btfss ir_power ; power-up confirmed?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
291 bra $-6 ; NO - loop and wait
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
292 bsf PIE3,RC2IE ; enable RC2 INT
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
293 return ; done
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
294
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
295 enable_s8_analog:
629
237931377539 3.07 stable release
heinrichsweikamp
parents: 628
diff changeset
296 banksel TXSTA2 ; select bank for IO register access
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
297 clrf TXSTA2 ; reset UART 2 TX function
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
298 clrf RCSTA2 ; reset UART 2 RX function
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
299 banksel common ; back to bank common
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
300
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
301 bsf mcp_power ; power-up instrumentation amp (used by S8 and analog input)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
302 btfss mcp_power ; power-up completed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
303 bra $-4 ; NO - loop
113
heinrichsweikamp
parents: 0
diff changeset
304
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
305 ; branch according to S8 / analog selection
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
306 TSTOSS opt_s8_mode ; =0: analog, =1: digital RS232
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
307 bra enable_analog ; -> analog
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
308
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
309 ; configure S8 digital interface
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
310 bcf s8_npower ; power S8 HUD (inverted via P-MOS transistor)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
311 WAITMS d'30' ; NO - wait 30 ms
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
312 banksel BAUDCON2 ; select bank for IO register access
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
313 movlw b'00000000' ; speed generator configuration: BRG16=0, normal for S8
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
314 movwf BAUDCON2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
315 movlw b'00100000' ; TX configuration: BRGH=0, SYNC=0
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
316 movwf TXSTA2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
317 movlw .25 ; speed configuration: SPBRGH:SPBRG = .25 : 9615 BAUD @ 16 MHz
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
318 movwf SPBRG2 ; ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
319 movlw b'10010000' ; RX configuration
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
320 movwf RCSTA2 ; ...
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
321 banksel common ; back to bank common
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
322 bsf PIE3,RC2IE ; enable RC2 INT
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
323 return
113
heinrichsweikamp
parents: 0
diff changeset
324
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
325 enable_analog:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
326 ; S8 analog interface
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
327 bcf PIE3,RC2IE ; disable RC2 INT
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
328 bsf s8_npower ; power-down S8 digital interface
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
329 return ; done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
330
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
331
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
332 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
333 ; Shut-Down the IR/S8 Port
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
334 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
335 global disable_ir_s8_analog
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
336 disable_ir_s8_analog:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
337 banksel TXSTA2 ; select bank for IO register access
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
338 clrf TXSTA2 ; shut down TX function
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
339 clrf RCSTA2 ; shut down RX function
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
340 banksel common ; back to bank common
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
341 bcf PIE3,RC2IE ; disable RC2 INT
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
342 bcf ir_power ; power down IR receiver
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
343 bcf mcp_power ; power-down instrumentation amp
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
344 bsf s8_npower ; power-down S8 digital interface
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
345 return ; done
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
346
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
347
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
348 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
349 ; Send Byte in WREG via the IR/S8 Port
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
350 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
351 global ir_s8_tx_single
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
352 ir_s8_tx_single:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
353 banksel TXSTA2 ; UART 2 is outside of the access RAM
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
354 movwf TXREG2 ; transmit byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
355 ir_s8_tx_single_loop:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
356 btfss TXSTA2,TRMT ; TX completed?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
357 bra ir_s8_tx_single_loop ; NO - wait...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
358 banksel common ; YES - back to bank common
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
359 return ; - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
360
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
361
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
362 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
363 ; Switch-On USB/BT Port
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
364 ;
0
heinrichsweikamp
parents:
diff changeset
365 global enable_rs232
heinrichsweikamp
parents:
diff changeset
366 enable_rs232:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
367 call request_speed_normal ; request CPU speed change to normal speed
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
368 enable_rs232_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
369 btfss speed_is_normal ; speed = normal?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
370 bra enable_rs232_1 ; NO - loop waiting for ISR to have adjusted the speed
640
8c1f1f334275 3.13 release
heinrichsweikamp
parents: 634
diff changeset
371 bsf TRISC,7
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
372 btfss aux_flag ; use Bluetooth?
654
75e90cd0c2c3 hwOS sport 10.77 release
heinrichsweikamp
parents: 650
diff changeset
373 bcf ble_npower ; YES - switch port to comm
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
374 bsf PORTJ,2 ; - /Reset (required for very old OSTC sport)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
375 movlw b'00100100' ; - TX configuration: TX enabled, async, high speed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
376 movwf TXSTA1 ; - ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
377 movlw b'10010000' ; - RX configuration: port enabled, RX enabled
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
378 movwf RCSTA1 ; - ...
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
379 IFNDEF _comm_debug
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
380 movlw HIGH(.65536-rx_timeout*.32) ; - define TMR5H initialization value for RX timeout (rx_timeout defined in hwos.inc)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
381 ELSE
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
382 include "math.inc"
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
383 movff opt_comm_timeout,xA+0 ; - get timeout setting in multiples of 10 ms (opt_comm_timeout: 10 .. 200 x 10 ms)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
384 clrf xA+1 ; - ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
385 MOVLI .320,xB ; - multiply with 10 to get timeout in ms and 32 because tmr5 ticks 32x per ms
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
386 call mult16x16 ; - xC = xA * xB = timer ticks to go until timeout
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
387 MOVII xC,sub_b ; - multiplication result is max. 64000
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
388 MOVLI .65535,sub_a ; - timer wraps around after 65535
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
389 call subU16 ; - sub_c = sub_a - sub_b = start value for timer
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
390
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
391 movlw .244 ; safety maximum value for rx_timeout_tmr5h_load (minimum timeout interval)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
392 cpfslt sub_c+1 ; result > safety value?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
393 movwf sub_c+1 ; YES - revert to safety value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
394
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
395 movf sub_c+1,W ; - keep only the upper byte as TMR5H initialization value for RX timeout
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
396 ENDIF
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
397 movwf rx_timeout_tmr5h_load ; - store for later use
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
398 return ; - done
0
heinrichsweikamp
parents:
diff changeset
399
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
400
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
401 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
402 ; Shut-Down USB/BT Port
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
403 ;
0
heinrichsweikamp
parents:
diff changeset
404 global disable_rs232
heinrichsweikamp
parents:
diff changeset
405 disable_rs232:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
406 clrf RCSTA1 ; disable RX
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
407 clrf TXSTA1 ; disable TX
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
408 bcf PORTC,6 ; switch TX pin hard to GND
654
75e90cd0c2c3 hwOS sport 10.77 release
heinrichsweikamp
parents: 650
diff changeset
409 bsf ble_npower ; power down BT chip
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
410 bcf PORTJ,2 ; /Reset (required for very old OSTC sport)
640
8c1f1f334275 3.13 release
heinrichsweikamp
parents: 634
diff changeset
411 bcf TRISC,7
8c1f1f334275 3.13 release
heinrichsweikamp
parents: 634
diff changeset
412 bcf PORTC,7 ; switch RX pin hard to GND
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
413 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
414
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
415
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
416 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
417 ; Wait for last Byte to be sent out of USB/BT Port
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
418 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
419 global rs232_wait_tx ; ++++ do not touch WREG here! ++++
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
420 rs232_wait_tx:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
421 btfss TXSTA1,TRMT ; last byte completely shifted out on TX pin?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
422 bra rs232_wait_tx ; NO - wait...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
423 btfss ble_available ; YES - OSTC running with Bluetooth?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
424 return ; NO - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
425 btfsc NRTS ; YES - Bluetooth module also completed TX?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
426 bra rs232_wait_tx ; NO - wait...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
427 return ; YES - done
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
428
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
429
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
430 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
431 ; Receive one Byte via the USB/BT Port
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
432 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
433 ; ++++ make this code as fast as possible! ++++
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
434 ; ++++ do not touch WREG here! ++++
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
435 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
436 global serial_rx_single
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
437 serial_rx_single:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
438 bcf rs232_rx_timeout ; clear timeout flag
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
439 btfsc PIR1,RCIF ; received a data byte? (bit is set on RX completion and reset on reading RCREG1)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
440 return ; YES - done (fast path)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
441 movff rx_timeout_tmr5h_load,TMR5H ; NO - load TMR5 high with timeout value
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
442 clrf TMR5L ; - load TMR5 low with a zero, writing low starts the timer
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
443 bcf PIR5,TMR5IF ; - clear timer overflow flag
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
444 serial_rx_single_loop:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
445 btfsc PIR1,RCIF ; received a data byte?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
446 return ; YES - done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
447 btfss PIR5,TMR5IF ; NO - timer overflow (timeout)?
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
448 bra serial_rx_single_loop ; NO - continue waiting
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
449 ;bra serial_rx_timeout ; YES - timeout
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
450
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
451
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
452 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
453 ; Helper Function: Timeout in serial_rx_single / serial_tx_steam
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
454 ;
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
455 serial_rx_timeout:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
456 bsf rs232_rx_timeout ; set timeout flag
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
457 bcf RCSTA1,CREN ; clear receiver status: disable RX,
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
458 bsf RCSTA1,CREN ; ... enable again RX
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
459 return ; done
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
460
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
461
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
462 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
463 ; Send and Receive Functions to be used via Macros
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
464 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
465
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
466 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
467 ; Send a Range of 1-256 Bytes from Memory via the USB/BT Port
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
468 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
469 global serial_tx_steam
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
470 serial_tx_steam:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
471 movwf eeprom_loop ; initialize loop counter (eeprom variable used here)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
472 serial_tx_ram_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
473 rcall rs232_wait_tx ; wait for completion of last transmit
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
474 movff POSTINC2,TXREG1 ; send a byte from memory to serial
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
475 decfsz eeprom_loop,F ; decrement loop counter, became zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
476 bra serial_tx_ram_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
477 return ; YES - done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
478
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
479
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
480 ;-----------------------------------------------------------------------------
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
481 ; Receive a Range of 1-256 Byte via the USB/BT Port and write them to Memory
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
482 ; ++++ make this code as fast as possible! ++++
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
483 ;
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
484 global serial_rx_stream
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
485 serial_rx_stream:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
486 movwf eeprom_loop ; initialize loop counter (eeprom variable used here)
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
487 serial_rx_stream_loop:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
488 btfss PIR1,RCIF ; received a data byte? (bit is set on RX complete and reset on reading RCREG1)
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
489 bra serial_rx_stream_tmr ; NO - enter receive loop with timeout
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
490 ;bra serial_rx_stream_received ; YES - copy to memory, tick counter, ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
491
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
492 serial_rx_stream_received:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
493 movff RCREG1,POSTINC2 ; copy received byte to memory
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
494 decfsz eeprom_loop,F ; decrement loop counter, became zero?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
495 bra serial_rx_stream_loop ; NO - await next byte
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
496 bcf rs232_rx_timeout ; YES - clear timeout flag
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
497 return ; - all bytes received, done
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
498
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
499 serial_rx_stream_tmr:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
500 movff rx_timeout_tmr5h_load,TMR5H ; load TMR5 high with timeout value
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
501 clrf TMR5L ; load TMR5 low with a zero, writing to low starts the timer
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
502 bcf PIR5,TMR5IF ; clear timer overflow flag
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
503 serial_rx_stream_tmr_loop:
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
504 btfsc PIR1,RCIF ; received a data byte? (bit is set on RX complete and reset on reading RCREG1)
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
505 bra serial_rx_stream_received ; YES - copy to memory, tick counter, ...
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
506 btfss PIR5,TMR5IF ; NO - timer overflow (timeout)?
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
507 bra serial_rx_stream_tmr_loop ; NO - continue waiting
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
508 bra serial_rx_timeout ; YES - timeout
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 604
diff changeset
509
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 629
diff changeset
510 ;-----------------------------------------------------------------------------
634
4050675965ea 3.10 stable release
heinrichsweikamp
parents: 631
diff changeset
511
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
512 ;------------------------------------------
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
513 ; Setup BLE name to new BLE (type 2) module
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
514 ;------------------------------------------
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
515 global ble2_configure_name
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
516 ble2_configure_name:
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
517 btfss dn_flag ; dn mode?
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
518 return ; no, return
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
519 ;rcall enable_rs232
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
520 bcf NCTS ; Clear to send
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
521 call wait_1s
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
522 call wait_1s
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
523 call wait_1s
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
524 call wait_1s
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
525 bcf PORTB,6
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
526 nop
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
527 bsf PORTB,6 ; rising edge -> Command mode
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
528 ; point to config table
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
529 movlw LOW ble_AT2
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
530 movwf TBLPTRL
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
531 movlw HIGH ble_AT2
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
532 movwf TBLPTRH
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
533 movlw UPPER ble_AT2
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
534 movwf TBLPTRU
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
535 rcall ble_init_loop
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
536 ; Read serial from EEPROM
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
537 call eeprom_serial_number_read ; read OSTC serial number
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
538 movff mpr+0, lo
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
539 movff mpr+1, hi
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
540 lfsr FSR2,buffer+0
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
541 output_65535 ; lo:hi converted to ascii into POSTINC2
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
542 SERIAL_CC_SEND buffer+0
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
543 SERIAL_CC_SEND buffer+1
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
544 SERIAL_CC_SEND buffer+2
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
545 SERIAL_CC_SEND buffer+3
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
546 SERIAL_CC_SEND buffer+4
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
547 SERIAL_LC_SEND .13 ; CR
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
548 WAITMS d'200'
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
549 bcf PORTB,6 ; falling edge -> Data mode
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
550 movlw LOW ble_AT3
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
551 movwf TBLPTRL
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
552 movlw HIGH ble_AT3
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
553 movwf TBLPTRH
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
554 movlw UPPER ble_AT3
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
555 movwf TBLPTRU
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
556 rcall ble_init_loop
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
557 return
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
558
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
559
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
560
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
561 ;-----------------------------------------------------------------------------
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
562 ; Add new services and characteristics to new BLE (type 2) module
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
563 ;-----------------------------------------------------------------------------
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
564 global ble2_configure
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
565 ble2_configure:
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
566 bcf aux_flag ; needed for enable_rs232
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
567 rcall enable_rs232
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
568 bcf NCTS ; Clear to send
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
569 call wait_1s
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
570 call wait_1s
650
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
571 call wait_1s
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
572 call wait_1s
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
573 bcf PORTB,6
650
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
574 nop
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
575 bsf PORTB,6 ; rising edge -> Command mode
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
576
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
577 ; point to config table
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
578 movlw LOW ble_AT1
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
579 movwf TBLPTRL
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
580 movlw HIGH ble_AT1
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
581 movwf TBLPTRH
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
582 movlw UPPER ble_AT1
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
583 movwf TBLPTRU
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
584
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
585 btfsc dual_comm ; dual-comm hardware?
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
586 rcall ble2_configure_at4 ; YES - BLE-only module in dual-comm hardware, overwrite TBLPTRx!
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
587
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
588 rcall ble_init_loop
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
589 rcall disable_rs232
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
590 bcf PORTB,6 ; keep low for min. current consumption
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
591 return ; done.
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
592
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
593 ble2_configure_at4:
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
594 ; point to config table
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
595 movlw LOW ble_AT4
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
596 movwf TBLPTRL
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
597 movlw HIGH ble_AT4
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
598 movwf TBLPTRH
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
599 movlw UPPER ble_AT4
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
600 movwf TBLPTRU
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
601 return
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
602
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
603 ble_init_loop:
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
604 TBLRD*+
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
605 movlw 0xFF ; end
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
606 cpfseq TABLAT
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
607 bra ble_init_loop1 ; not end
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
608 ; quit (return)
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
609 return ; done.
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
610 ble_init_loop1:
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
611 movlw 0xFE ; WAIT 20ms
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
612 cpfseq TABLAT
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
613 bra ble_init_loop2 ; not wait 20ms
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
614 WAITMS d'20'
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
615 bra ble_init_loop
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
616 ble_init_loop2:
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
617 movlw 0xFD ; WAIT 1s
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
618 cpfseq TABLAT
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
619 bra ble_init_loop3 ; not wait 1s
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
620 call wait_1s
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
621 bra ble_init_loop
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
622 ble_init_loop3:
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
623 movf TABLAT,W
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
624 SERIAL_CC_SEND WREG
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
625 bra ble_init_loop
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
626
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
627 ble_AT4: ; config table
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
628 ; 0xFF at the end
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
629 ; 0xFE: 20ms delay
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
630 ; 0xFD: 1s delay
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
631 ; .13: cr character
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
632 db "AT+UBTLN=OSTC nano",.13,0xFE ; "name command"
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
633 ;db "AT+UFACTORY",.13,0xFE,0xFE ; Set to factory defined configuration
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
634 db "AT+UMSM=1",.13,0xFE,0xFE ; start in Data mode
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
635 db "AT+UBTLE=2",.13,0xFE ; Bluetooth low energy Peripheral
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
636 db "AT+UDSC=0,0",.13,0xFE,0xFE ; Disable SPS Server on ID0 (and wait 40ms)
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
637 db "AT+UDSC=0,6",.13,0xFE,0xFE ; SPs Server on ID0 (and wait 40ms)
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
638 db "AT+UDSC=1,0",.13,0xFE,0xFE ; Disable SPP Server on ID1 (and wait 40ms)
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
639 db "AT+UDSC=1,3",.13,0xFE,0xFE ; SPP Server on ID1 (and wait 40ms)
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
640 db "AT&W",.13,0xFE ; write settings into eeprom
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
641 db "AT+CPWROFF",.13 ; save and reboot
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
642 db 0xFD, 0xFD, 0xFF
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
643
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
644 ble_AT1: ; config table
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
645 ; 0xFF at the end
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
646 ; 0xFE: 20ms delay
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
647 ; 0xFD: 1s delay
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
648 ; .13: cr character
650
bc214815deb2 3.19/10.75 release
heinrichsweikamp
parents: 648
diff changeset
649 db 0xFD,0xFD,0xFD,0xFD ; Wait 4 seconds
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
650 db "AT+UDSC=0,0",.13,0xFE,0xFE ; Disable SPS Server on ID0 (and wait 40ms)
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
651 db "AT+UDSC=0,6",.13,0xFE,0xFE ; SPs Server on ID0 (and wait 40ms)
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
652 db "AT+UDSC=1,0",.13,0xFE,0xFE ; Disable SPP Server on ID1 (and wait 40ms)
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
653 db "AT+UDSC=1,3",.13,0xFE,0xFE ; SPP Server on ID1 (and wait 40ms)
648
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
654 db "AT&W",.13,0xFE ; write settings into eeprom (and wait 20ms)
aeca5717d9eb 3.17 / 10.72 release
heinrichs weikamp
parents: 640
diff changeset
655 db "AT+CPWROFF",.13,0xFD,0xFD,0xFF ; save and reboot (and wait 2 seconds)
656
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
656 ble_AT2: ; config table
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
657 db 0xFD,0xFD,0xFD,0xFD ; Wait 4 seconds
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
658 db "AT+UBTLN=OSTC+ ",0xFF ; Start of "name command"
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
659 ble_AT3: ; config table
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
660 db "ATO1",.13,0xFF ; Enable Data mode
8af5aefbcdaf Update to 3.31 beta
heinrichsweikamp
parents: 654
diff changeset
661
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 386
diff changeset
662 END