Serial Wombat 18AB Firmware
utilities.h
Go to the documentation of this file.
1 /*
2 Copyright 2021-2023 Broadwell Consulting Inc.
3 
4 Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10 
11 The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20  * OTHER DEALINGS IN THE SOFTWARE.
21 */
22 #if (!defined (_utilities_h))
23 #define _utilities_h
24 #define NUMBER_OF_PHYSICAL_PINS 19
25 #define NUMBER_OF_VIRTUAL_PINS NUMBER_OF_PHYSICAL_PINS
26 #define COMPILING_FIRMWARE
27 #define SIZE_OF_DMA_ARRAY 128
28 #include "mcc_generated_files/system.h"
29 #include "types.h"
30 
31 
32 #define PHYSICALEQUALSVIRTUALPIN
33 #define RANDOM_ENABLE
34 
35 //#include "global_data.h"
36 //#include "eeprom_map.h"
37 #define PHYSICALEQUALSVIRTUALPIN
38 
39 #define SIZE_OF_USER_BUFFER 4096
40 
41 
42 
43 uint8_t map_physical_pin_ad(uint8_t pin);
44 uint8_t read_pin (uint8_t pin);
45 void set_pin (uint8_t pin, uint8_t mode);
46 #define toggle_pin(_a) {set_pin (_a, !read_pin(_a));}
47 //#define vpin_high() {set_pin(virtual_pin,HIGH);}
48 void vpin_high(void);
49 
50 void delay_timer3_ticks(uint16_t ticks);
51 //#define vpin_low() {set_pin(virtual_pin,LOW);}
52 void vpin_low(void);
53 //#define vpin_input() {set_pin(virtual_pin,INPUT);}
54 void vpin_input(void);
55 void vpin_set(uint8_t state);
56 void pin_high(uint8_t pin);
57 void pin_low(uint8_t pin);
58 void pin_input(uint8_t pin);
59 //#define vpin_set(_a) {set_pin(virtual_pin,_a);}
60 //#define vpin_read() read_pin(virtual_pin)
61 
62 void EEPROM_WRITE(uint16_t address, uint8_t value) ;
63 
64 #ifdef CACHED_ADREADINGS
65 #define read_ad(_a) ADbuffer[map_physical_pin_ad(_a)].u
66 #else
67 uint16_t read_ad(uint8_t virtual_pin);
68 #endif
69 
70 
71 
72 uint16_t vread_ad(void);
73 
74 uint8_t vpin_read(void);
75 uint8_t ascii_to_val(uint8_t);
76 uint8_t val_to_ascii(uint8_t);
77 void val16_to_hex(mixed16_t val, uint8_t* string);
78 uint16_t hex_ascii_to_val16(uint8_t* ptr,uint8_t counter);
79 uint32_t hex_ascii_to_val32(uint8_t* ptr,uint8_t counter);
80 uint16_t rx_dec_ascii_to_val16(uint8_t rxbufferindex,uint8_t counter);
81 uint32_t dec_ascii_to_val32(uint8_t* ptr,uint8_t counter);
82 uint32_t read_free_running_timer(void);
83 uint8_t get_user_buffer(uint16_t offset);
84 void put_user_buffer(uint16_t offset, uint8_t data);
85 void get_user_buffer_block(uint16_t offset, uint16_t length, uint8_t* dest);
86 void put_user_buffer_block(uint16_t offset, uint16_t length, uint8_t* source);
87 void set_pwm(uint8_t virtual_pin, uint16_t width);
88 void vset_pwm(uint16_t width);
89 void update_pwm(void);
90 uint16_t get_buffer(uint8_t);
91 void put_buffer(uint8_t,uint16_t);
92 uint8_t get_pin_registers(void);
93 void put_pin_registers(void);
94 void vpulse_high(uint16_t cycles);
95 uint8_t slow_SPI00_send(uint8_t data,uint8_t delay,uint8_t clkpin,uint8_t sdipin,uint8_t sdopin);
96 void delay_cycles16(uint16_t cycles);
97 #define DELAY_CYCLES(_a) { delay_cycles16(_a);}
98 #define DELAY_1MS() {delay_cycles16(CRYSTAL_SPEED / 1000); }
99 #define get_tp2(_a) {get_tp2_asm(_a);}
100 #define put_tp2(_a) {put_tp2_asm(_a); }
101 void put_tp2_asm(uint8_t pin);
102 void get_tp2_asm(uint8_t pin);
103 
104 uint16_t random(void);
105 void random_seed(uint32_t);
106 uint16_t gen_sin_wave (uint8_t wavenum);
107 
108 #define LOW 0
109 #define HIGH 1
110 #define INPUT 2
111 
112 #define HIGH_BYTE_16(a) ( (uint8_t) ( a >> 8 ) )
113 #define LOW_BYTE_16(a) ( (uint8_t) a )
114 
115 #define HIGH_BYTE_32(a) ( (uint8_t) ( a >> 24 ) )
116 #define MH_BYTE_32(a) ( (uint8_t) ( (a >> 16) & 0xFF ) )
117 #define ML_BYTE_32(a) ( (uint8_t) ( (a >> 8) & 0xFF ) )
118 #define LOW_BYTE_32(a) ( (uint8_t) a )
119 #define set_register_memory(pin,field,value) {pin_update_registers[pin].field = value;}
120 #define set_register_memory2(pin,field,value) {((pin_register2_t*)pin_update_registers)[pin].field = value;}
121 #define get_register_memory(pin,field) pin_update_registers[pin].field
122 #define get_register_memory2(pin,field) ((pin_register2_t*)pin_update_registers)[pin].field
123 #define set_mode(_a,_b) {pin_update_registers[_a].generic.mode = _b;}
124 #define get_mode(pin) pin_update_registers[pin].generic.mode
125 #define set_hw_mode(_a,_b) {pin_update_registers[_a].generic.hw_mode = _b;}
126 #define set_hw_option(_a,_b) {pin_update_registers[_a].generic.duty_cycle = _b;}
127 #define get_hw_option(_a) pin_update_registers[_a].generic.duty_cycle
128 #define set_buffer(a,b) {pin_update_registers[a].generic.buffer = b;}
129 
130 #define ENABLE_CCP1_CAPTURE() { PIE1bits.CCP1IE = 1; }
131 #define DISABLE_CCP1_CAPTURE() { PIE1bits.CCP1IE = 0; }
132 #define ENABLE_CCP2_CAPTURE() { PIE2bits.CCP2IE = 1; }
133 #define DISABLE_CCP2_CAPTURE() { PIE2bits.CCP2IE = 0; }
134 #define ENABLE_INT0_CAPTURE() { INTCONbits.INT0IE = 1; }
135 #define DISABLE_INT0_CAPTURE() { INTCONbits.INT0IE = 0; }
136 #define ENABLE_INT1_CAPTURE() { INTCON3bits.INT1IE = 1; }
137 #define DISABLE_INT1_CAPTURE() { INTCON3bits.INT1IE = 0; }
138 #define ENABLE_INT2_CAPTURE() { INTCON3bits.INT2IE = 1; }
139 #define DISABLE_INT2_CAPTURE() { INTCON3bits.INT2IE = 0; }
140 #define RXBUFFER16(a) ((((uint16_t)rxbuffer[a]) <<8) + rxbuffer[a + 1])
141 #define ASSIGN_RXBUFFER16(dest,a)\
142 { \
143  ((mixed16_t*)&dest)->bytes.highbyte = rxbuffer[a]; \
144  ((mixed16_t*)&dest)->bytes.lowbyte = rxbuffer[a+1]; \
145 }
146 extern rom const uint8_t uint8_bitfield_invert[8] ;
147 extern rom const uint16_t uint16_bitfield[16];
148 extern rom const uint8_t uint8_bitfield[8]; // = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
149 extern rom const uint8_t uint8_bitlowermask[8]; // = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
150 
151 extern rom const uint8_t map_next_physical_pin[NUMBER_OF_PHYSICAL_PINS + 1];
152 #ifndef PHYSICALEQUALSVIRTUALPIN
153 extern rom const uint8_t map_pin_table[NUMBER_OF_PHYSICAL_PINS + 1];
154 #endif
155 
156 #ifdef PHYSICALEQUALSVIRTUALPIN
157 #define map_pin(_a) (_a)
158 #define unmap_pin(_a) _a
159 #else
160 #define map_pin(_a) ((_a <= LAST_VIRTUALIZED_PIN)?map_pin_table[_a]:_a)
161 #endif
162 
163 extern void error(void);
164 #ifdef COMPILING_FIRMWARE
165 #define DISABLE_ALL_INTERRUPTS() {INTCONbits.GIEL = 0; INTCONbits.GIEH = 0; }
166 #define ENABLE_ALL_INTERRUPTS() {INTCONbits.GIEL = 1; INTCONbits.GIEH = 1; }
167 
168 #else
169 
170 #define DISABLE_ALL_INTERRUPTS() { }
171 #define ENABLE_ALL_INTERRUPTS() { }
172 
173 #endif
174 
175 #ifdef EUSART
176 #define SET_BAUD_RATE(_a) { SPBRG = ((CRYSTAL_SPEED / ((uint32_t)_a) / 16 * PLL_MULTIPLIER) - 1) & 0x00FF; SPBRGH = ((CRYSTAL_SPEED / ((uint32_t)_a)/ 16 * PLL_MULTIPLIER) - 1) >>8; }
177 #else
178 #define SET_BAUD_RATE(_a) { SPBRG = (CRYSTAL_SPEED / ((uint32_t)_a) / 64 - 1) & 0x00FF; }
179 #endif
180 
181 #ifndef COMPILING_FIRMWARE
182 
183 extern void print_pin(int pin,unsigned char high,unsigned char low);
184 #endif
185 
186 typedef enum
187 {
188  PPS_OUTPUT_None = 0, //(Pin Disabled) —
189  PPS_OUTPUT_C1OUT = 1, //Comparator 1 Output
190  PPS_OUTPUT_C2OUT = 2, //Comparator 2 Output
191  PPS_OUTPUT_U1TX = 3, //UART1 Transmit
192  PPS_OUTPUT_U1RTS = 4, //UART1 Request-to-Send
193  PPS_OUTPUT_U2TX = 5, //UART2 Transmit
194  PPS_OUTPUT_U2RTS = 6, //UART2 Request-to-Send
195  PPS_OUTPUT_SDO1 = 7, //SPI1 Data Output
196  PPS_OUTPUT_SCK1OUT = 8, //SPI1 Clock Output
197  PPS_OUTPUT_SS1OUT = 9, //SPI1 Chip Select Output
198  PPS_OUTPUT_SDO2 = 10, //SPI2 Data Output
199  PPS_OUTPUT_SCK2OUT = 11, //SPI2 Clock Output
200  PPS_OUTPUT_SS2OUT = 12, //SPI2 Chip Select Output
201  PPS_OUTPUT_OC1 = 13, //Output Compare 1
202  PPS_OUTPUT_OC2 = 14, //Output Compare 2
203  PPS_OUTPUT_OC3 = 15, //Output Compare 3
204  PPS_OUTPUT_OCM2A = 16, //CCP2A Output Compare
205  PPS_OUTPUT_OCM2B = 17, //CCP2B Output Compare
206  PPS_OUTPUT_OCM3A = 18, //CCP3A Output Compare
207  PPS_OUTPUT_OCM3B = 19, //CCP3B Output Compare
208  PPS_OUTPUT_OCM4A = 20, //CCP4A Output Compare
209  PPS_OUTPUT_OCM4B = 21, //CCP4B Output Compare
211  PPS_OUTPUT_SDO3 = 23, //SPI3 Data Output
212  PPS_OUTPUT_SCK3OUT = 24, //SPI3 Clock Output
213  PPS_OUTPUT_SS3OUT = 25, //SPI3 Chip Select Output
214  PPS_OUTPUT_C3OUT = 26, //Comparator 3 Output
215  PPS_OUTPUT_PWRGT = 27, //RTCC Power Control
216  PPS_OUTPUT_REFO = 28, //Reference Clock Output
217  PPS_OUTPUT_CLC1OUT = 29, //CLC1 Output
218  PPS_OUTPUT_CLC2OUT = 30, //CLC2 Output
219  PPS_OUTPUT_RTCC = 31, //RTCC Clock Output
221 
222 
223 #define OUTPUT_ARRAY_A_DMA_INDEX (SIZE_OF_DMA_ARRAY - DMACNT0)
224 #define OUTPUT_ARRAY_B_DMA_INDEX (SIZE_OF_DMA_ARRAY - DMACNT1)
225 #define INPUT_ARRAY_A_DMA_INDEX (SIZE_OF_DMA_ARRAY - DMACNT2)
226 #define INPUT_ARRAY_B_DMA_INDEX (SIZE_OF_DMA_ARRAY - DMACNT3)
227 
228 
229 #define BROADCAST_ADDRESS 0xFF
230 
231 #define BUFFER_RANDOM_NUMBER 253
232 #define BUFFER_ZERO_VALUE 252
233 #define BUFFER_UART_RX_OVERFLOWS 251
234 #define BUFFER_CLOCK_SECONDS 250
235 #define BUFFER_CLOCK_MINUTES 249
236 #define BUFFER_CLOCK_HOURS 248
237 #define BUFFER_CLOCK_DAYS 247
238 #define BUFFER_RX_INTERRUPTS 246
239 #define BUFFER_TX_INTERRUPTS 245
240 #define BUFFER_SINE_SUM_3 244
241 #define BUFFER_SINE_SUM_2 243
242 #define BUFFER_SINE_3 242
243 #define BUFFER_SINE_2 241
244 #define BUFFER_SINE_1 240
245 #define BUFFER_INCREMENTING_NUMBER 239
246 #define BUFFER_LAST_QUEUE_UNDERFLOW 238
247 #define BUFFER_LAST_QUEUE_OVERFLOW 237
248 #define BUFFER_PINS2345671413 236
249 #define BUFFER_PINS1516171823242526 235
250 #define BUFFER_PINS1920212227282930 234
251 #define BUFFER_PINS3334353637383940 233
252 #define BUFFER_FREE_RUNNING_TIMER 232
253 #define BUFFER_INTERRUPT_OCCURRED 231
254 #define BUFFER_NUM_OF_DROPPED_FRAMES 230
255 #define BUFFER_TO_USER_RAM 160
256 #define BUFFER_TO_USER_RAM_MAX 200
257 
258 #define SYSINFO_VERSION 0
259 #define SYSINFO_CONFIG_BITS_1 1
260 #define SYSINFO_CONFIG_BITS_2 2
261 #define SYSINFO_CONFIG_BITS_3 3
262 #define SYSINFO_FRAME_COUNTER 4
263 #define SYSINFO_RX_INTERRUPTS 5
264 #define SYSINFO_TX_INTERRUPTS 6
265 #define SYSINFO_AD_INTERRUPTS 7
266 #define SYSINFO_THROUGHPUT_INFO 8
267 #define SYSINFO_FREE_RUNNING_TIMER 9
268 #define SYSINFO_CHIP_ID 10
269 #define SYSINFO_FRAME_DATA 11
270 #define SYSINFO_BAUD_RATE 12
271 #define SYSINFO_RESET_REGISTER 13
272 #define SYSINFO_USER_RAM_SIZE 14
273 
274 extern uint8_t virtual_pin;
275  extern pin_register_t* tp;
276 extern pin_register2_t* tp2;
278 extern uint16_t OutputArrayA[SIZE_OF_DMA_ARRAY];
279 extern uint16_t OutputArrayB[SIZE_OF_DMA_ARRAY];
280 extern uint16_t InputArrayA[SIZE_OF_DMA_ARRAY];
281 extern uint16_t InputArrayB[SIZE_OF_DMA_ARRAY];
282 extern const uint16_t PinBitmapA[NUMBER_OF_PHYSICAL_PINS] ;
283 extern const uint16_t PinBitmapB[NUMBER_OF_PHYSICAL_PINS];
284 extern uint8_t rxbuffer[];
285 extern uint8_t txbuffer[];
287 extern uint8_t user_buffer[SIZE_OF_USER_BUFFER];
288 extern uint16_t vpinBitmap(void);
289 extern uint8_t vpinPort(void);
290 extern uint8_t getDMAInputSample(uint8_t pin, uint8_t sample);
291 extern void updatePulseOutput(uint8_t pin);
292 extern void SPI_Transfer(uint8_t cs_pin,uint8_t clk_pin, uint8_t MOSI_pin, uint8_t MISO_pin, uint8_t* MOSI_Buffer, uint8_t* MISO_Buffer, uint16_t Count);
293 
294 #endif
put_user_buffer
void put_user_buffer(uint16_t offset, uint8_t data)
Definition: utilities.c:1114
update_pwm
void update_pwm(void)
Definition: utilities.c:919
hex_ascii_to_val16
uint16_t hex_ascii_to_val16(uint8_t *ptr, uint8_t counter)
Definition: utilities.c:427
PinBitmapB
const uint16_t PinBitmapB[NUMBER_OF_PHYSICAL_PINS]
PPS_OUTPUT_SS2OUT
@ PPS_OUTPUT_SS2OUT
Definition: utilities.h:200
PPS_OUTPUT_REFO
@ PPS_OUTPUT_REFO
Definition: utilities.h:216
PPS_OUTPUT_SS3OUT
@ PPS_OUTPUT_SS3OUT
Definition: utilities.h:213
set_pwm
void set_pwm(uint8_t virtual_pin, uint16_t width)
Definition: utilities.c:851
uint16_bitfield
const rom uint16_t uint16_bitfield[16]
Definition: utilities.c:1017
hex_ascii_to_val32
uint32_t hex_ascii_to_val32(uint8_t *ptr, uint8_t counter)
Definition: utilities.c:442
PPS_OUTPUT_OC3
@ PPS_OUTPUT_OC3
Definition: utilities.h:203
PPS_OUTPUT_U2RTS
@ PPS_OUTPUT_U2RTS
Definition: utilities.h:194
types.h
PPS_OUTPUT_OC1
@ PPS_OUTPUT_OC1
Definition: utilities.h:201
vpin_set
void vpin_set(uint8_t state)
read_pin
uint8_t read_pin(uint8_t pin)
vread_ad
uint16_t vread_ad(void)
Definition: utilities.c:146
PPS_OUTPUT_SDO2
@ PPS_OUTPUT_SDO2
Definition: utilities.h:198
PPS_OUTPUT_SCK1OUT
@ PPS_OUTPUT_SCK1OUT
Definition: utilities.h:196
PPS_OUTPUT_OCM2B
@ PPS_OUTPUT_OCM2B
Definition: utilities.h:205
PinBitmapA
const uint16_t PinBitmapA[NUMBER_OF_PHYSICAL_PINS]
PPS_OUTPUT_PWRGT
@ PPS_OUTPUT_PWRGT
Definition: utilities.h:215
SIZE_OF_DMA_ARRAY
#define SIZE_OF_DMA_ARRAY
Definition: utilities.h:27
PPS_OUTPUT_C3OUT
@ PPS_OUTPUT_C3OUT
Definition: utilities.h:214
get_tp2_asm
void get_tp2_asm(uint8_t pin)
executive_settings_n
A type which allows multiple boolean variables to be packed into a single byte.
Definition: types.h:767
tp
pin_register_t * tp
virtual_pin
uint8_t virtual_pin
pin_update_registers
pin_register_t pin_update_registers[NUMBER_OF_PHYSICAL_PINS]
rx_dec_ascii_to_val16
uint16_t rx_dec_ascii_to_val16(uint8_t rxbufferindex, uint8_t counter)
Definition: utilities.c:480
map_physical_pin_ad
uint8_t map_physical_pin_ad(uint8_t pin)
PPS_OUTPUT_Reserved
@ PPS_OUTPUT_Reserved
Definition: utilities.h:210
rxbuffer
uint8_t rxbuffer[]
get_user_buffer
uint8_t get_user_buffer(uint16_t offset)
Definition: utilities.c:1088
val16_to_hex
void val16_to_hex(mixed16_t val, uint8_t *string)
Definition: utilities.c:580
put_tp2_asm
void put_tp2_asm(uint8_t pin)
pin_low
void pin_low(uint8_t pin)
PPS_OUTPUT_SDO3
@ PPS_OUTPUT_SDO3
Definition: utilities.h:211
pin_input
void pin_input(uint8_t pin)
vset_pwm
void vset_pwm(uint16_t width)
Definition: utilities.c:913
pin_high
void pin_high(uint8_t pin)
get_user_buffer_block
void get_user_buffer_block(uint16_t offset, uint16_t length, uint8_t *dest)
Definition: utilities.c:1138
NUMBER_OF_PHYSICAL_PINS
#define NUMBER_OF_PHYSICAL_PINS
Definition: utilities.h:24
PPS_OUTPUT_U1TX
@ PPS_OUTPUT_U1TX
Definition: utilities.h:191
PPS_OUTPUT_CLC1OUT
@ PPS_OUTPUT_CLC1OUT
Definition: utilities.h:217
random_seed
void random_seed(uint32_t)
Definition: utilities.c:974
read_free_running_timer
uint32_t read_free_running_timer(void)
Definition: utilities.c:337
uint8_bitfield
const rom uint8_t uint8_bitfield[8]
Definition: utilities.c:987
rom
#define rom
Definition: types.h:60
PPS_OUTPUT_SS1OUT
@ PPS_OUTPUT_SS1OUT
Definition: utilities.h:197
vpinPort
uint8_t vpinPort(void)
Definition: utilities.c:247
_pin_register2_t
Definition: types.h:588
InputArrayA
uint16_t InputArrayA[SIZE_OF_DMA_ARRAY]
dec_ascii_to_val32
uint32_t dec_ascii_to_val32(uint8_t *ptr, uint8_t counter)
Definition: utilities.c:509
uint8_bitlowermask
const rom uint8_t uint8_bitlowermask[8]
Definition: utilities.c:997
PPS_OUTPUT_OCM2A
@ PPS_OUTPUT_OCM2A
Definition: utilities.h:204
delay_cycles16
void delay_cycles16(uint16_t cycles)
_pin_register_t
A union representing all the possible pin modes, with meanings for each.
Definition: types.h:165
uint8_bitfield_invert
const rom uint8_t uint8_bitfield_invert[8]
Definition: utilities.c:1007
PPS_OUTPUT_SCK2OUT
@ PPS_OUTPUT_SCK2OUT
Definition: utilities.h:199
put_buffer
void put_buffer(uint8_t, uint16_t)
Definition: utilities.c:592
slow_SPI00_send
uint8_t slow_SPI00_send(uint8_t data, uint8_t delay, uint8_t clkpin, uint8_t sdipin, uint8_t sdopin)
InputArrayB
uint16_t InputArrayB[SIZE_OF_DMA_ARRAY]
mode
uint8 mode
Definition: types.h:822
map_next_physical_pin
const rom uint8_t map_next_physical_pin[NUMBER_OF_PHYSICAL_PINS+1]
PPS_OUTPUT_SCK3OUT
@ PPS_OUTPUT_SCK3OUT
Definition: utilities.h:212
random
uint16_t random(void)
Definition: utilities.c:957
PPS_OUTPUT_U1RTS
@ PPS_OUTPUT_U1RTS
Definition: utilities.h:192
PPS_OUTPUT_RTCC
@ PPS_OUTPUT_RTCC
Definition: utilities.h:219
PPS_OUTPUT_OCM4A
@ PPS_OUTPUT_OCM4A
Definition: utilities.h:208
getDMAInputSample
uint8_t getDMAInputSample(uint8_t pin, uint8_t sample)
Definition: utilities.c:232
vpulse_high
void vpulse_high(uint16_t cycles)
PPS_OUTPUT_OC2
@ PPS_OUTPUT_OC2
Definition: utilities.h:202
PPS_OUTPUT_SDO1
@ PPS_OUTPUT_SDO1
Definition: utilities.h:195
PPS_OUTPUT_U2TX
@ PPS_OUTPUT_U2TX
Definition: utilities.h:193
gen_sin_wave
uint16_t gen_sin_wave(uint8_t wavenum)
val_to_ascii
uint8_t val_to_ascii(uint8_t)
Definition: utilities.c:569
PPSOutputVal_t
PPSOutputVal_t
Definition: utilities.h:186
SPI_Transfer
void SPI_Transfer(uint8_t cs_pin, uint8_t clk_pin, uint8_t MOSI_pin, uint8_t MISO_pin, uint8_t *MOSI_Buffer, uint8_t *MISO_Buffer, uint16_t Count)
PPS_OUTPUT_None
@ PPS_OUTPUT_None
Definition: utilities.h:188
PPS_OUTPUT_OCM3A
@ PPS_OUTPUT_OCM3A
Definition: utilities.h:206
PPS_OUTPUT_CLC2OUT
@ PPS_OUTPUT_CLC2OUT
Definition: utilities.h:218
SIZE_OF_USER_BUFFER
#define SIZE_OF_USER_BUFFER
Definition: utilities.h:39
txbuffer
uint8_t txbuffer[]
executive_settings
executive_settings_t executive_settings
updatePulseOutput
void updatePulseOutput(uint8_t pin)
PPS_OUTPUT_OCM3B
@ PPS_OUTPUT_OCM3B
Definition: utilities.h:207
put_pin_registers
void put_pin_registers(void)
OutputArrayA
uint16_t OutputArrayA[SIZE_OF_DMA_ARRAY]
get_buffer
uint16_t get_buffer(uint8_t)
Definition: utilities.c:609
PPS_OUTPUT_C1OUT
@ PPS_OUTPUT_C1OUT
Definition: utilities.h:189
vpinBitmap
uint16_t vpinBitmap(void)
Definition: utilities.c:221
EEPROM_WRITE
void EEPROM_WRITE(uint16_t address, uint8_t value)
Definition: utilities.c:1447
user_buffer
uint8_t user_buffer[SIZE_OF_USER_BUFFER]
Definition: utilities.c:17
vpin_low
void vpin_low(void)
mixed16_n
Union of 16 bit types. Also includes pointers for the 18F.
Definition: types.h:142
get_pin_registers
uint8_t get_pin_registers(void)
error
void error(void)
tp2
pin_register2_t * tp2
vpin_input
void vpin_input(void)
ascii_to_val
uint8_t ascii_to_val(uint8_t)
Definition: SerialWombat18A_18B/SerialWombat18A_18B.X/asciiConversion.c:3
set_pin
void set_pin(uint8_t pin, uint8_t mode)
read_ad
uint16_t read_ad(uint8_t virtual_pin)
Definition: utilities.c:259
PPS_OUTPUT_OCM4B
@ PPS_OUTPUT_OCM4B
Definition: utilities.h:209
OutputArrayB
uint16_t OutputArrayB[SIZE_OF_DMA_ARRAY]
delay_timer3_ticks
void delay_timer3_ticks(uint16_t ticks)
Definition: utilities.c:322
put_user_buffer_block
void put_user_buffer_block(uint16_t offset, uint16_t length, uint8_t *source)
Definition: utilities.c:1423
vpin_read
uint8_t vpin_read(void)
vpin_high
void vpin_high(void)
PPS_OUTPUT_C2OUT
@ PPS_OUTPUT_C2OUT
Definition: utilities.h:190