 |
Serial Wombat 18AB Firmware
|
Go to the documentation of this file.
22 #if (!defined (_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"
32 #define PHYSICALEQUALSVIRTUALPIN
37 #define PHYSICALEQUALSVIRTUALPIN
39 #define SIZE_OF_USER_BUFFER 4096
46 #define toggle_pin(_a) {set_pin (_a, !read_pin(_a));}
64 #ifdef CACHED_ADREADINGS
65 #define read_ad(_a) ADbuffer[map_physical_pin_ad(_a)].u
95 uint8_t
slow_SPI00_send(uint8_t data,uint8_t delay,uint8_t clkpin,uint8_t sdipin,uint8_t sdopin);
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); }
112 #define HIGH_BYTE_16(a) ( (uint8_t) ( a >> 8 ) )
113 #define LOW_BYTE_16(a) ( (uint8_t) a )
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;}
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)\
143 ((mixed16_t*)&dest)->bytes.highbyte = rxbuffer[a]; \
144 ((mixed16_t*)&dest)->bytes.lowbyte = rxbuffer[a+1]; \
152 #ifndef PHYSICALEQUALSVIRTUALPIN
156 #ifdef PHYSICALEQUALSVIRTUALPIN
157 #define map_pin(_a) (_a)
158 #define unmap_pin(_a) _a
160 #define map_pin(_a) ((_a <= LAST_VIRTUALIZED_PIN)?map_pin_table[_a]:_a)
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; }
170 #define DISABLE_ALL_INTERRUPTS() { }
171 #define ENABLE_ALL_INTERRUPTS() { }
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; }
178 #define SET_BAUD_RATE(_a) { SPBRG = (CRYSTAL_SPEED / ((uint32_t)_a) / 64 - 1) & 0x00FF; }
181 #ifndef COMPILING_FIRMWARE
183 extern void print_pin(
int pin,
unsigned char high,
unsigned char low);
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)
229 #define BROADCAST_ADDRESS 0xFF
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
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
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);
void put_user_buffer(uint16_t offset, uint8_t data)
Definition: utilities.c:1114
void update_pwm(void)
Definition: utilities.c:919
uint16_t hex_ascii_to_val16(uint8_t *ptr, uint8_t counter)
Definition: utilities.c:427
const uint16_t PinBitmapB[NUMBER_OF_PHYSICAL_PINS]
@ PPS_OUTPUT_SS2OUT
Definition: utilities.h:200
@ PPS_OUTPUT_REFO
Definition: utilities.h:216
@ PPS_OUTPUT_SS3OUT
Definition: utilities.h:213
void set_pwm(uint8_t virtual_pin, uint16_t width)
Definition: utilities.c:851
const rom uint16_t uint16_bitfield[16]
Definition: utilities.c:1017
uint32_t hex_ascii_to_val32(uint8_t *ptr, uint8_t counter)
Definition: utilities.c:442
@ PPS_OUTPUT_OC3
Definition: utilities.h:203
@ PPS_OUTPUT_U2RTS
Definition: utilities.h:194
@ PPS_OUTPUT_OC1
Definition: utilities.h:201
void vpin_set(uint8_t state)
uint8_t read_pin(uint8_t pin)
uint16_t vread_ad(void)
Definition: utilities.c:146
@ PPS_OUTPUT_SDO2
Definition: utilities.h:198
@ PPS_OUTPUT_SCK1OUT
Definition: utilities.h:196
@ PPS_OUTPUT_OCM2B
Definition: utilities.h:205
const uint16_t PinBitmapA[NUMBER_OF_PHYSICAL_PINS]
@ PPS_OUTPUT_PWRGT
Definition: utilities.h:215
#define SIZE_OF_DMA_ARRAY
Definition: utilities.h:27
@ PPS_OUTPUT_C3OUT
Definition: utilities.h:214
void get_tp2_asm(uint8_t pin)
A type which allows multiple boolean variables to be packed into a single byte.
Definition: types.h:767
pin_register_t pin_update_registers[NUMBER_OF_PHYSICAL_PINS]
uint16_t rx_dec_ascii_to_val16(uint8_t rxbufferindex, uint8_t counter)
Definition: utilities.c:480
uint8_t map_physical_pin_ad(uint8_t pin)
@ PPS_OUTPUT_Reserved
Definition: utilities.h:210
uint8_t get_user_buffer(uint16_t offset)
Definition: utilities.c:1088
void val16_to_hex(mixed16_t val, uint8_t *string)
Definition: utilities.c:580
void put_tp2_asm(uint8_t pin)
void pin_low(uint8_t pin)
@ PPS_OUTPUT_SDO3
Definition: utilities.h:211
void pin_input(uint8_t pin)
void vset_pwm(uint16_t width)
Definition: utilities.c:913
void pin_high(uint8_t pin)
void get_user_buffer_block(uint16_t offset, uint16_t length, uint8_t *dest)
Definition: utilities.c:1138
#define NUMBER_OF_PHYSICAL_PINS
Definition: utilities.h:24
@ PPS_OUTPUT_U1TX
Definition: utilities.h:191
@ PPS_OUTPUT_CLC1OUT
Definition: utilities.h:217
void random_seed(uint32_t)
Definition: utilities.c:974
uint32_t read_free_running_timer(void)
Definition: utilities.c:337
const rom uint8_t uint8_bitfield[8]
Definition: utilities.c:987
#define rom
Definition: types.h:60
@ PPS_OUTPUT_SS1OUT
Definition: utilities.h:197
uint8_t vpinPort(void)
Definition: utilities.c:247
uint16_t InputArrayA[SIZE_OF_DMA_ARRAY]
uint32_t dec_ascii_to_val32(uint8_t *ptr, uint8_t counter)
Definition: utilities.c:509
const rom uint8_t uint8_bitlowermask[8]
Definition: utilities.c:997
@ PPS_OUTPUT_OCM2A
Definition: utilities.h:204
void delay_cycles16(uint16_t cycles)
A union representing all the possible pin modes, with meanings for each.
Definition: types.h:165
const rom uint8_t uint8_bitfield_invert[8]
Definition: utilities.c:1007
@ PPS_OUTPUT_SCK2OUT
Definition: utilities.h:199
void put_buffer(uint8_t, uint16_t)
Definition: utilities.c:592
uint8_t slow_SPI00_send(uint8_t data, uint8_t delay, uint8_t clkpin, uint8_t sdipin, uint8_t sdopin)
uint16_t InputArrayB[SIZE_OF_DMA_ARRAY]
uint8 mode
Definition: types.h:822
const rom uint8_t map_next_physical_pin[NUMBER_OF_PHYSICAL_PINS+1]
@ PPS_OUTPUT_SCK3OUT
Definition: utilities.h:212
uint16_t random(void)
Definition: utilities.c:957
@ PPS_OUTPUT_U1RTS
Definition: utilities.h:192
@ PPS_OUTPUT_RTCC
Definition: utilities.h:219
@ PPS_OUTPUT_OCM4A
Definition: utilities.h:208
uint8_t getDMAInputSample(uint8_t pin, uint8_t sample)
Definition: utilities.c:232
void vpulse_high(uint16_t cycles)
@ PPS_OUTPUT_OC2
Definition: utilities.h:202
@ PPS_OUTPUT_SDO1
Definition: utilities.h:195
@ PPS_OUTPUT_U2TX
Definition: utilities.h:193
uint16_t gen_sin_wave(uint8_t wavenum)
uint8_t val_to_ascii(uint8_t)
Definition: utilities.c:569
PPSOutputVal_t
Definition: utilities.h:186
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
Definition: utilities.h:188
@ PPS_OUTPUT_OCM3A
Definition: utilities.h:206
@ PPS_OUTPUT_CLC2OUT
Definition: utilities.h:218
#define SIZE_OF_USER_BUFFER
Definition: utilities.h:39
executive_settings_t executive_settings
void updatePulseOutput(uint8_t pin)
@ PPS_OUTPUT_OCM3B
Definition: utilities.h:207
void put_pin_registers(void)
uint16_t OutputArrayA[SIZE_OF_DMA_ARRAY]
uint16_t get_buffer(uint8_t)
Definition: utilities.c:609
@ PPS_OUTPUT_C1OUT
Definition: utilities.h:189
uint16_t vpinBitmap(void)
Definition: utilities.c:221
void EEPROM_WRITE(uint16_t address, uint8_t value)
Definition: utilities.c:1447
uint8_t user_buffer[SIZE_OF_USER_BUFFER]
Definition: utilities.c:17
Union of 16 bit types. Also includes pointers for the 18F.
Definition: types.h:142
uint8_t get_pin_registers(void)
uint8_t ascii_to_val(uint8_t)
Definition: SerialWombat18A_18B/SerialWombat18A_18B.X/asciiConversion.c:3
void set_pin(uint8_t pin, uint8_t mode)
uint16_t read_ad(uint8_t virtual_pin)
Definition: utilities.c:259
@ PPS_OUTPUT_OCM4B
Definition: utilities.h:209
uint16_t OutputArrayB[SIZE_OF_DMA_ARRAY]
void delay_timer3_ticks(uint16_t ticks)
Definition: utilities.c:322
void put_user_buffer_block(uint16_t offset, uint16_t length, uint8_t *source)
Definition: utilities.c:1423
@ PPS_OUTPUT_C2OUT
Definition: utilities.h:190