Digital Power Starter Kit 3 Firmware  DM330017-3, Rev.3.0
dsPIC33C Buck Converter Peak Current Mode Control Example
dpsk3_hwdescr.h
1 /* Microchip Technology Inc. and its subsidiaries. You may use this software
2  * and any derivatives exclusively with Microchip products.
3  *
4  * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
5  * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
6  * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
7  * PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION
8  * WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.
9  *
10  * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
11  * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
12  * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
13  * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
14  * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS
15  * IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF
16  * ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
17  *
18  * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE
19  * TERMS.
20  */
21 
22 /*
23  * @file dpsk3_hwdescr.h
24  * Author: M91406
25  * @brief DPSK3 Hardware Descriptor header file
26  * Revision history:
27  */
28 
29 // This is a guard condition so that contents of this file are not included
30 // more than once.
31 #ifndef DPSK3_HARDWARE_DESCRIPTOR_H
32 #define DPSK3_HARDWARE_DESCRIPTOR_H
33 
34 #include <xc.h> // include processor files - each processor file is guarded.
35 #include <stdint.h> // include standard integer data types
36 #include <stdbool.h> // include standard boolean data types
37 #include <stddef.h> // include standard definition data types
38 #include <math.h> // include standard math functions library
39 
40 
41 /* DPSK3 BOARD CIRCUIT SEGMENTS */
42 
43 #define INCLUDE_BUCK true // Include buck converter declarations
44 #define INCLUDE_BOOST false // Include boost converter declarations
45 #define INCLUDE_LCD true // Include LCD declarations
46 
47 
58 #ifndef __DPSK3_R30__
59  #define __DPSK3_R30__
60 #endif
61  // end of group hardware-id-macro
63 
64 
75 /* CUSTOM RUNTIME OPTIONS */
76 #define PLANT_MEASUREMENT false
77 
78 #define DBGPIN1_ENABLE true
79 #define DBGPIN2_ENABLE true
80 #define DBGDAC_ENABLE true
81  // end of group special-options
83 
84 
95 #define CPU_FREQUENCY (float)100000000.0
96 #define AUX_FREQUENCY (float)500000000.0
97 
98 // ADC Reference and Resolution Settings
99 #define ADC_REFERENCE (float)3.300
100 #define ADC_RESOLUTION (float)12.00
101 
102 // ADC Reference and Resolution Settings
103 #define DAC_REFERENCE (float)3.300
104 #define DAC_RESOLUTION (float)12.00
105 
106 #define DAC_MINIMUM (float)0.165
107 #define DAC_MAXIMUM (float)3.135
108 #define DAC_TRANSITION_TIME (float)340.0e-9
109 #define DAC_STEADY_STATE_TIME (float)550.0e-9
110 #define DAC_LEADING_EDGE_PERIOD (float)120.0e-9
111 
112 // PWM/ADC Clock Settings
113 #define PWM_CLOCK_HIGH_RESOLUTION true
114 
115 #if (PWM_CLOCK_HIGH_RESOLUTION)
116 #define PWM_CLOCK_FREQUENCY (float)4.0e+9
117 #else
118 #define PWM_CLOCK_FREQUENCY (float)500.0e+6
119 #endif
120 
121 #define AUX_PLL_CLOCK (float)(1.0 / AUX_FREQUENCY)
122  // end of group device-abstraction-settings
124 
136 #define CPU_TCY (float)(1.0 / CPU_FREQUENCY)
137 #define ADC_GRANULARITY (float)(ADC_REFERENCE / pow(2.0, ADC_RESOLUTION))
138 #define DAC_GRANULARITY (float)(DAC_REFERENCE / pow(2.0, DAC_RESOLUTION))
139 #define ADC_VALUE_MAX (uint16_t)(pow(2.0, ADC_RESOLUTION) - 1.0) // DO NOT CHANGE
140 #define PWM_CLOCK_PERIOD (float)(1.0 / PWM_CLOCK_FREQUENCY)
141 #define DAC_CLOCK_PERIOD (float)(2.0 / AUX_FREQUENCY)
142 
143 #define DAC_MIN (uint16_t)(DAC_MINIMUM / DAC_GRANULARITY)
144 #define DAC_MAX (uint16_t)(DAC_MAXIMUM / DAC_GRANULARITY)
145 #define DAC_TMODTIME (uint16_t)((DAC_TRANSITION_TIME / AUX_PLL_CLOCK) / 2.0)
146 #define DAC_SSTIME (uint16_t)((DAC_STEADY_STATE_TIME / AUX_PLL_CLOCK) / 2.0)
147 #define DAC_TMCB (uint16_t)((DAC_LEADING_EDGE_PERIOD / AUX_PLL_CLOCK) / 2.0)
148  // end of group device-abstraction-macros
150 
151 
164 #define MAIN_EXECUTION_PERIOD (float)100.0e-6
165  // end of group state-machine-settings ~~~~~~~~~~
167 
179 #define MAIN_EXEC_PER (uint16_t)((CPU_FREQUENCY * MAIN_EXECUTION_PERIOD)-1) // DO NOT CHANGE
180  // end of group state-machine-macros ~~~~~~~~~~
182 
193 #define _OsTimerInterrupt _T1Interrupt
194 #define _OSTIMER_IP _T1IP
195 #define _OSTIMER_IE _T1IE
196 #define _OSTIMER_IF _T1IF
197 #define _OSTIMER_PRIORITY 2
198  // end of group state-machine-mcal ~~~~~~~~~~
200 
201 
214 #if (DBGPIN1_ENABLE == true)
215 #define DBGPIN1_PORT 1
216 #define DBGPIN1_PIN 5
217 #define DBGPIN1_Get() _RB5
218 #define DBGPIN1_Set() { _LATB5 = 1; }
219 #define DBGPIN1_Clear() { _LATB5 = 0; }
220 #define DBGPIN1_Toggle() { _LATB5 ^= 1; }
221 #define DBGPIN1_Init() { _LATB5 = 0; _TRISB5 = 0; }
222 #define DBGPIN1_Dispose() { _LATB5 = 1; _TRISB5 = 1; }
223 #endif
224 
225 #if (DBGPIN2_ENABLE == true)
226 #define DBGPIN2_PORT 1
227 #define DBGPIN2_PIN 11
228 #define DBGPIN2_Get() _RB11
229 #define DBGPIN2_Set() { _LATB11 = 1; }
230 #define DBGPIN2_Clear() { _LATB11 = 0; }
231 #define DBGPIN2_Toggle() { _LATB11 ^= 1; }
232 #define DBGPIN2_Init() { _LATB11 = 0; _TRISB11 = 0; }
233 #define DBGPIN2_Dispose() { _LATB11 = 1; _TRISB11 = 1; }
234 #endif
235 
236 // Ref LED on DPSK3 (TP51)
237 #define DBGLED_PORT 1
238 #define DBGLED_PIN 6
239 #define DBGLED_Get() _RB6
240 #define DBGLED_Set() { _LATB6 = 1; }
241 #define DBGLED_Clear() { _LATB6 = 0; }
242 #define DBGLED_Toggle() { _LATB6 ^= 1; }
243 #define DBGLED_Init() { _LATB6 = 0; _TRISB6 = 0; }
244 #define DBGLED_Dispose() { _LATB6 = 1; _TRISB6 = 1; }
245 
246 // Power Good Output
247 #define PWRGOOD_PORT 1
248 #define PWRGOOD_PIN 12
249 #define PWRGOOD_Get() { _RB12; }
250 #define PWRGOOD_Set() { _LATB12 = 1; }
251 #define PWRGOOD_Clear() { _LATB12 = 0; }
252 #define PWRGOOD_Toggle() { _LATB12 ^= 1; }
253 #define PWRGOOD_Init() { _LATB12 = 0; _TRISB12 = 0; }
254 #define PWRGOOD_Dispose() { _LATB12 = 1; _TRISB12 = 1; }
255 
256 // User Switch Input
257 #define SW_USER_PORT 3
258 #define SW_USER_PIN 1
259 #define SW_USER_Get() _RD1
260 #define SW_USER_Set() { _LATD1 = 1; }
261 #define SW_USER_Clear() { _LATD1 = 0; }
262 #define SW_USER_Toggle() { _LATD1 ^= 1; }
263 #define SW_USER_Init() { _LATD1 = 1; _TRISD1 = 1; }
264 #define SW_USER_Dispose() { _LATD1 = 1; _TRISD1 = 1; }
265 
266  // end of group circuit-gpio-mcal
268 
269 
283 #define DAC_OUTPUT_INSTANCE 1U
284 #define DAC_BUFFER_OPA_INSTANCE 3U
285 #define DAC_OUTPUT_INIT_VALUE 0U
286 
287 
288 #if (DAC_OUTPUT_INSTANCE == 1U)
289  #define DACOUT_Set(x) { DAC1DATH=x; }
290  #define DACOUT_Get() DAC1DATH
291 #elif (DAC_OUTPUT_INSTANCE == 2U)
292  #define DACOUT_Set(x) { DAC2DATH=x; }
293  #define DACOUT_Get() DAC2DATH
294 #elif (DAC_OUTPUT_INSTANCE == 3U)
295  #define DACOUT_Set(x) { DAC3DATH=x; }
296  #define DACOUT_Get() DAC3DATH
297 #endif
298  // end of group circuit-peripheral-mcal
300 
301 
302 #if (INCLUDE_BUCK == true)
305 
318 #define BUCK_NO_OF_PHASES 1U
319 
320 #define BUCK_SWITCHING_FREQUENCY (float)500.0e+3
321 #define BUCK_PWM_DUTY_CYCLE_MIN (float) 0.010
322 #define BUCK_PWM_DUTY_CYCLE_MAX (float) 0.900
323 #define BUCK_LEADING_EDGE_BLANKING (float)120.0e-9
324 #define BUCK_DEAD_TIME_LEADING_EDGE (float) 20.0e-9
325 #define BUCK_DEAD_TIME_FALLING_EDGE (float) 60.0e-9
326  // end of group pwm-settings-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
328 
343 #define BUCK_PWM_CHANNEL 1U
344 #define BUCK_PWM_GPIO_INSTANCE 1U
345 #define BUCK_PWM_GPIO_PORT_PINH 14U
346 #define BUCK_PWM_GPIO_PORT_PINL 15U
347 #define BUCK_PWM_OUTPUT_SWAP false
348 
349 #define BUCK_PWM_PDC PG1DC
350 #define BUCK_PWM_IOCONL PG1IOCONL
351 #define BUCK_PWMH_TRIS _TRISB14
352 #define BUCK_PWMH_WR _LATB14
353 #define BUCK_PWMH_RD _RB14
354 #define BUCK_PWMH_RPx (uint8_t)46
355 #define BUCK_PWML_TRIS _TRISB15
356 #define BUCK_PWML_WR _LATB15
357 #define BUCK_PWML_RD _RB15
358 #define BUCK_PWML_RPx (uint8_t)47
359 
360 #define _BUCK_PWM_Interrupt _PWM1Interrupt
361 #define BUCK_PWM_IF _PWM1IF
362 #define BUCK_PWM_IE _PWM1IE
363 #define BUCK_PWM_IP _PWM1IP
364 #define BUCK_PWM_TRGSRC_TRG1 0b00100
365 #define BUCK_PWM_TRGSRC_TRG2 0b00101
366 #define BUCK_PWM_PGxTRIGA PG1TRIGA
367 #define BUCK_PWM_PGxTRIGB PG1TRIGB
368 #define BUCK_PWM_PGxTRIGC PG1TRIGC
369 
370 #define BUCK_PWM_ADTR1OFS 0U
371 #define BUCK_PWM_ADTR1PS 0U
372 
373 #define BUCK_PWM_UPDREQ PG1STATbits.UPDREQ
374  // end of group pwm-mcal-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
376 
377 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
389 // Conversion Macros
390 #define BUCK_SWITCHING_PERIOD (float)(1.0/BUCK_SWITCHING_FREQUENCY)
391 #define BUCK_PWM_PERIOD (uint16_t)(float)(BUCK_SWITCHING_PERIOD / PWM_CLOCK_PERIOD)
392 #define BUCK_PWM_PHASE_SHIFT (uint16_t)((float)BUCK_PWM_PERIOD / (float)BUCK_NO_OF_PHASES)
393 #define BUCK_PWM_DC_MIN (uint16_t)(BUCK_PWM_DUTY_CYCLE_MIN * (float)BUCK_PWM_PERIOD)
394 #define BUCK_PWM_DC_MAX (uint16_t)(BUCK_PWM_DUTY_CYCLE_MAX * (float)BUCK_PWM_PERIOD)
395 #define BUCK_LEB_PERIOD (uint16_t)(BUCK_LEADING_EDGE_BLANKING / (float)PWM_CLOCK_PERIOD)
396 #define BUCK_PWM_DEAD_TIME_LE (uint16_t)(BUCK_DEAD_TIME_LEADING_EDGE / (float)PWM_CLOCK_PERIOD)
397 #define BUCK_PWM_DEAD_TIME_FE (uint16_t)(BUCK_DEAD_TIME_FALLING_EDGE / (float)PWM_CLOCK_PERIOD)
398  // end of group pwm-macros-buck ~~~~~~~~~~~~~~~~~
400 
401 
415 #define BUCK_DAC_SLOPE_START_DELAY (float) 0.100
416 #define BUCK_DAC_SLOPE_STOP_DELAY (float) 0.900
417 #define BUCK_DAC_VOLTAGE_INITIAL (float) 0.000
418 #define BUCK_SLOPE_COMP_SLEW_RATE (float) 0.240
419  // end of group dac-settings-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
421 
433 #define BUCK_DAC_INSTANCE 1U
434 #define BUCK_DACxDATH DAC1DATH
435 #define BUCK_ACMP_INSTANCE 1U
436 #define BUCK_ACMPxIN 0U
437 #define BUCK_PCMC_PGxPCIL_PSS 0b11011
438  // end of group dac-mcal-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
440 
441 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
452 #define BUCK_DAC_SLOPE_TRIG_START (uint16_t)(BUCK_PWM_PERIOD * BUCK_DAC_SLOPE_START_DELAY)
453 #define BUCK_DAC_SLOPE_TRIG_STOP (uint16_t)(BUCK_PWM_PERIOD * BUCK_DAC_SLOPE_STOP_DELAY)
454 #define BUCK_DACOUT_VALUE_INITIAL (uint16_t)(BUCK_DAC_VOLTAGE_INITIAL / DAC_GRANULARITY)
455 #define BUCK_DAC_SLEW_RATE (uint16_t)((16.0 * (BUCK_SLOPE_COMP_SLEW_RATE / DAC_GRANULARITY)) / (1.0e-6 / DAC_CLOCK_PERIOD)) // SLOPE DATA in [<DAC ticks>/<CLK-ticks>] representing [V/usec]
456  // end of group dac-macros-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
458 
459 
470 // Feedback Declarations
471 #define BUCK_VIN_MINIMUM (float) 6.500
472 #define BUCK_VIN_NOMINAL (float) 9.000
473 #define BUCK_VIN_MAXIMUM (float)13.800
474 
475 #define BUCK_VIN_UNDER_VOLTAGE (float) 6.000
476 #define BUCK_VIN_OVER_VOLTAGE (float)14.300
477 #define BUCK_VIN_HYSTERESIS (float) 1.000
478 
479 #define BUCK_VIN_R1 (float) 6.980
480 #define BUCK_VIN_R2 (float) 1.000
481 
482 #define BUCK_VIN_FEEDBACK_OFFSET (float) 0.0000
483 #define BUCK_VIN_ADC_TRG_DELAY (float) 20.0e-9
484  // end of group input-voltage-feedback-settings-buck ~~~~~~~~~~~~~~~~
486 
487 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
499 // Peripheral Assignments
500 #define _BUCK_VIN_ADCInterrupt _ADCAN12Interrupt
501 #define _BUCK_VIN_ADCISR_IF _ADCAN12IF
502 
503 #define BUCK_VIN_ANSEL _ANSELC0
504 #define BUCK_VIN_ADCCORE 8
505 #define BUCK_VIN_ADCIN 12
506 #define BUCK_VIN_ADCBUF ADCBUF12
507 #define BUCK_VIN_ADCTRIG PG1TRIGB
508 #define BUCK_VIN_TRGSRC BUCK_PWM_TRGSRC_TRG2
509  // end of group input-voltage-feedback-mcal-buck ~~~~~~~~~~~~~~~~~~~~
511 
512 
513 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
525 #define BUCK_VIN_FEEDBACK_GAIN (float)((BUCK_VIN_R2) / (BUCK_VIN_R1 + BUCK_VIN_R2)) // DO NOT CHANGE
526 #define BUCK_VIN_MIN (uint16_t)(BUCK_VIN_MINIMUM * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
527 #define BUCK_VIN_NOM (uint16_t)(BUCK_VIN_NOMINAL * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
528 #define BUCK_VIN_MAX (uint16_t)(BUCK_VIN_MAXIMUM * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
529 #define BUCK_VIN_HYST (uint16_t)(BUCK_VIN_HYSTERESIS * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
530 #define BUCK_VIN_UVLO_TRIP (uint16_t)(BUCK_VIN_UNDER_VOLTAGE * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
531 #define BUCK_VIN_UVLO_RELEASE (uint16_t)((BUCK_VIN_UNDER_VOLTAGE + BUCK_VIN_HYSTERESIS) * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
532 #define BUCK_VIN_OVLO_TRIP (uint16_t)(BUCK_VIN_OVER_VOLTAGE * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
533 #define BUCK_VIN_OVLO_RELEASE (uint16_t)((BUCK_VIN_OVER_VOLTAGE - BUCK_VIN_HYSTERESIS) * BUCK_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
534 #define BUCK_VIN_ADC_TRGDLY (uint16_t)(BUCK_VIN_ADC_TRG_DELAY / PWM_CLOCK_PERIOD)
535 #define BUCK_VIN_OFFSET (uint16_t)(BUCK_VIN_FEEDBACK_OFFSET / ADC_GRANULARITY)
536 
537 #define BUCK_VIN_NORM_INV_G (float)(1.0/BUCK_VIN_FEEDBACK_GAIN)
538 #define BUCK_VIN_NORM_SCALER (int16_t)(ceil(log(BUCK_VIN_NORM_INV_G)/log(2)))
539 #define BUCK_VIN_NORM_FACTOR (int16_t)((BUCK_VIN_NORM_INV_G / pow(2.0, BUCK_VIN_NORM_SCALER)) * (pow(2.0, 15)-1))
540 
541 #define BUCK_VIN_RANGE_MAX (float)(ADC_REFERENCE * BUCK_VIN_NORM_INV_G)
542  // end of group input-voltage-feedback-macros-buck ~~~~~~~~~~~~~~~~~~
544 
545 
556 // Feedback Declarations
557 #define BUCK_VOUT_MINIMUM (float) 0.000
558 #define BUCK_VOUT_NOMINAL (float) 3.300
559 #define BUCK_VOUT_MAXIMUM (float) 4.000
560 #define BUCK_VOUT_HYSTERESIS (float) 0.500
561 
562 #define BUCK_VOUT_TOLERANCE_MAX (float) 0.200
563 #define BUCK_VOUT_TOLERANCE_MIN (float) 0.100
564 
565 #define BUCK_VOUT_DIV_R1 (float) 1.000
566 #define BUCK_VOUT_DIV_R2 (float) 1.000
567 #define BUCK_VOUT_FEEDBACK_OFFSET (float) 0.000
568 #define BUCK_VOUT_ADC_TRG_DELAY (float)20.0e-9
569  // end of group output-voltage-feedback-settings-buck ~~~~~~~~~~~~~~~
571 
572 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
584 // Peripheral Assignments
585 #define BUCK_VOUT_ANSEL _ANSELC1
586 #define BUCK_VOUT_ADCCORE 8
587 #define BUCK_VOUT_ADCIN 13
588 #define BUCK_VOUT_ADCBUF ADCBUF13
589 #define BUCK_VOUT_ADCTRIG PG1TRIGA
590 #define BUCK_VOUT_TRGSRC BUCK_PWM_TRGSRC_TRG1
591  // end of group output-voltage-feedback-mcal-buck ~~~~~~~~~~~~~~~~~~~
593 
594 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
606 #define BUCK_VOUT_FEEDBACK_GAIN (float)((BUCK_VOUT_DIV_R2) / (BUCK_VOUT_DIV_R1 + BUCK_VOUT_DIV_R2))
607 
608 #define BUCK_VOUT_REF (uint16_t)(BUCK_VOUT_NOMINAL * BUCK_VOUT_FEEDBACK_GAIN / ADC_GRANULARITY)
609 #define BUCK_VOUT_NOM (uint16_t) BUCK_VOUT_REF
610 #define BUCK_VOUT_DEV_TRIP (uint16_t)((BUCK_VOUT_TOLERANCE_MAX * BUCK_VOUT_FEEDBACK_GAIN) / ADC_GRANULARITY)
611 #define BUCK_VOUT_DEV_RELEASE (uint16_t)((BUCK_VOUT_TOLERANCE_MIN * BUCK_VOUT_FEEDBACK_GAIN) / ADC_GRANULARITY)
612 #define BUCK_VOUT_OVP_TRIP (uint16_t)((BUCK_VOUT_MAXIMUM * BUCK_VOUT_FEEDBACK_GAIN) / ADC_GRANULARITY)
613 #define BUCK_VOUT_OVP_RELEASE (uint16_t)((BUCK_VOUT_MAXIMUM - BUCK_VOUT_HYSTERESIS) * BUCK_VOUT_FEEDBACK_GAIN / ADC_GRANULARITY)
614 #define BUCK_VOUT_OFFSET (uint16_t)(BUCK_VOUT_FEEDBACK_OFFSET / ADC_GRANULARITY)
615 #define BUCK_VOUT_ADC_TRGDLY (uint16_t)(BUCK_VOUT_ADC_TRG_DELAY / PWM_CLOCK_PERIOD)
616 
617 #define BUCK_VOUT_NORM_INV_G (float)(1.0/BUCK_VOUT_FEEDBACK_GAIN)
618 #define BUCK_VOUT_NORM_SCALER (int16_t)(ceil(log(BUCK_VOUT_NORM_INV_G)/log(2)))
619 #define BUCK_VOUT_NORM_FACTOR (int16_t)((BUCK_VOUT_NORM_INV_G / pow(2.0, BUCK_VOUT_NORM_SCALER)) * (pow(2.0, 15)-1))
620 
621 #define BUCK_VOUT_RANGE_MAX (float)(ADC_REFERENCE * BUCK_VOUT_NORM_INV_G)
622  // end of group output-voltage-feedback-macros-buck ~~~~~~~~~~~~~~~~~
624 
625 
645 // Feedback Declarations
646 #define BUCK_ISNS_CT 0
647 #define BUCK_ISNS_AMP 1
648 
649 #define BUCK_ISNS_OPTION BUCK_ISNS_CT
650 
651 // Settings based on the selection made above
652 #if (BUCK_ISNS_OPTION == BUCK_ISNS_CT)
653 
654  #define BUCK_ISNS_FEEDBACK_GAIN (float) 1.000
655  #define BUCK_ISNS_MINIMUM (float) 0.000
656  #define BUCK_ISNS_MAXIMUM (float) 1.500
657  #define BUCK_ISNS_RELEASE (float) 1.000
658  #define BUCK_ISNS_REFERENCE (float) 1.000
659  #define BUCK_ISNS_ADC_TRG_DELAY (float) 80.0e-9
660  #define BUCK_ISNS_FEEDBACK_OFFSET (float) 0.000
661 
662  #define BUCK_ISNS_OFFSET_CALIBRATION_ENABLE false
663 
664  #define BUCK_SYNCCTL_ON_THRESHOLD (float) 0.250
665  #define BUCK_SYNCCTL_OFF_THRESHOLD (float) 0.200
666 
667 #elif (BUCK_ISNS_OPTION == BUCK_ISNS_AMP)
668 
669  #define BUCK_ISNS_FEEDBACK_GAIN (float) 0.600
670  #define BUCK_ISNS_MINIMUM (float) 0.000
671  #define BUCK_ISNS_MAXIMUM (float) 2.500
672  #define BUCK_ISNS_RELEASE (float) 2.500
673  #define BUCK_ISNS_REFERENCE (float) 2.500
674  #define BUCK_ISNS_ADC_TRG_DELAY (float) 240.0e-9
675  #define BUCK_ISNS_FEEDBACK_OFFSET (float) 1.650
676 
677  #define BUCK_ISNS_OFFSET_CALIBRATION_ENABLE true
678 
679  #define BUCK_SYNCCTL_ON_THRESHOLD (float) 0.100
680  #define BUCK_SYNCCTL_OFF_THRESHOLD (float) 0.080
681 
682 #endif
683  // end of group phase-current-feedback-settings-buck ~~~~~~~~~~~~~~~~
685 
686 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
698 // Phase Current Feedback Settings Conversion Macros
699 #define BUCK_ISNS_MIN (uint16_t)(int16_t)(((BUCK_ISNS_MINIMUM-BUCK_ISNS_FEEDBACK_OFFSET) * BUCK_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
700 #define BUCK_ISNS_OCL (uint16_t)(((BUCK_ISNS_MAXIMUM-BUCK_ISNS_FEEDBACK_OFFSET) * BUCK_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
701 #define BUCK_ISNS_OCL_RELEASE (uint16_t)(((BUCK_ISNS_RELEASE-BUCK_ISNS_FEEDBACK_OFFSET) * BUCK_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
702 #define BUCK_ISNS_REF (uint16_t)((BUCK_ISNS_REFERENCE * BUCK_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
703 #define BUCK_ISNS_FB_OFFSET (uint16_t)(BUCK_ISNS_FEEDBACK_OFFSET / ADC_GRANULARITY)
704 #define BUCK_ISNS_ADC_TRGDLY (uint16_t)(BUCK_ISNS_ADC_TRG_DELAY / PWM_CLOCK_PERIOD)
705 
706 #define BUCK_ISNS_NORM_INV_G (float)(1.0/BUCK_ISNS_FEEDBACK_GAIN)
707 #define BUCK_ISNS_NORM_SCALER (int16_t)(ceil(log(BUCK_ISNS_NORM_INV_G)/log(2)))
708 #define BUCK_ISNS_NORM_FACTOR (int16_t)((BUCK_ISNS_NORM_INV_G / pow(2.0, BUCK_ISNS_NORM_SCALER)) * (pow(2.0, 15)-1))
709 
710 #define BUCK_SYNCTHLD_ON (uint16_t)(((BUCK_SYNCCTL_ON_THRESHOLD-BUCK_ISNS_FEEDBACK_OFFSET) * BUCK_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
711 #define BUCK_SYNCTHLD_OFF (uint16_t)(((BUCK_SYNCCTL_OFF_THRESHOLD-BUCK_ISNS_FEEDBACK_OFFSET) * BUCK_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
712 
713  // end of group phase-current-feedback-macros ~~~~~~~~~~~~~~~~~~~~~~~
715 
716 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
728 // Peripheral Assignments
729 #if (BUCK_ISNS_OPTION == BUCK_ISNS_CT)
730 
731  #define _BUCK_ISNS_ADCInterrupt _ADCAN0Interrupt
732  #define _BUCK_ISNS_ADCISR_IF _ADCAN0IF
733 
734  #define BUCK_ISNS_ANSEL _ANSELA0
735  #define BUCK_ISNS_ADCCORE 0U
736  #define BUCK_ISNS_ADCIN 0U
737  #define BUCK_ISNS_ALT_IN_SELECT 0b00
738  #define BUCK_ISNS_ADCBUF ADCBUF0
739  #define BUCK_ISNS_ADCTRIG PG1TRIGB
740  #define BUCK_ISNS_ADCTRIG_PC PG1TRIGB
741  #define BUCK_ISNS_TRGSRC BUCK_PWM_TRGSRC_TRG2
742 
743  // Peak Current Mode Control or Over Current Fault Protection Support
744  #define BUCK_ISNS_ACMPxIN 1U
745 
746 #elif (BUCK_ISNS_OPTION == BUCK_ISNS_AMP)
747 
748  #define _BUCK_ISNS_ADCInterrupt _ADCAN1Interrupt
749  #define _BUCK_ISNS_ADCISR_IF _ADCAN1IF
750 
751  #define BUCK_ISNS_ANSEL _ANSELA1
752  #define BUCK_ISNS_ADCCORE 1U
753  #define BUCK_ISNS_ADCIN 1U
754  #define BUCK_ISNS_ALT_IN_SELECT 0b01
755  #define BUCK_ISNS_ADCBUF ADCBUF1
756  #define BUCK_ISNS_ADCTRIG PG1TRIGB
757  #define BUCK_ISNS_TRGSRC BUCK_PWM_TRGSRC_TRG2
758 
759  // Peak Current Mode Control or Over Current Fault Protection Support
760  #define BUCK_ISNS_ACMPxIN 0U
761 
762 #else
763  #pragma message "hardware abstraction layer warning: no current sense feedback selected."
764 #endif
765  // end of group phase-current-feedback-mcal-buck ~~~~~~~~~~~~~~~~~~~~
767 
768 
780 #define BUCK_AGC_EXECUTION_DELAY (float)(370.0e-9)
781  // end of group adaptive-gain-control-settings-buck ~~~~~~~~~~~~~~~~~
783 
784 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
796 #define BUCK_VL_MINIMUM (float)(BUCK_VIN_UNDER_VOLTAGE - BUCK_VOUT_MAXIMUM)
797 #define BUCK_VL_NOMINAL (float)(BUCK_VIN_NOMINAL - BUCK_VOUT_NOMINAL)
798 #define BUCK_VL_MAXIMUM (float)(BUCK_VIN_RANGE_MAX - 0)
799 
800 // The AGC compare value is defined at nominal input voltage and output voltage
801 // The maximum modulation factor is normalized to fractional '1' to prevent number overruns
802 #define BUCK_AGC_FACTOR_MAX (float)(BUCK_VL_NOMINAL / BUCK_VL_MINIMUM)
803 #define BUCK_AGC_NOM_SCALER (uint16_t)(ceil(log(BUCK_AGC_FACTOR_MAX)/log(2)))
804 #define BUCK_AGC_NOM_FACTOR (uint16_t)(0x7FFF >> BUCK_AGC_NOM_SCALER)
805 #define BUCK_AGC_MEDIAN (int16_t)(((int16_t)(((float)BUCK_VIN_NOM * BUCK_VIN_NORM_FCT) - BUCK_VOUT_NOM))>>BUCK_AGC_NOM_SCALER)
806 
807 // To calculate the voltage across the inductor, input and output voltage ADC results need to be normalized. The normalization factor is determined here
808 // Each input voltage sample has to be multiplied with this scaling factor to allow the calculation of the instantaneous voltage across the inductor
809 #define BUCK_VIN_NORM_FCT (float)(BUCK_VOUT_FEEDBACK_GAIN / BUCK_VIN_FEEDBACK_GAIN)
810 #define BUCK_AGC_IO_NORM_SCALER (int16_t)(ceil(log(BUCK_VIN_NORM_FCT)/log(2)))
811 #define BUCK_AGC_IO_NORM_FACTOR (int16_t)((BUCK_VIN_NORM_FCT / pow(2.0, BUCK_AGC_IO_NORM_SCALER)) * (pow(2.0, 15)-1))
812 
813 // Additional execution time calculation to be considered in trigger delay and overall control timing
814 #define BUCK_AGC_EXEC_DLY (uint16_t)(BUCK_AGC_EXECUTION_DELAY / PWM_CLOCK_PERIOD)
815  // end of group adaptive-gain-control-macros-buck ~~~~~~~~~~~~~~~~~~~
817 
818 
831 // Hardware-dependent defines
832 #define BUCK_VOUT_TRIG_PWM 0
833 #define BUCK_VOUT_TRIG_ADC 1
834 
835 #define BUCK_VOUT_TRIGGER_MODE BUCK_VOUT_TRIG_PWM
836 #define BUCK_VOUT_ISR_PRIORITY 5
837 
838 #if (BUCK_VOUT_TRIGGER_MODE == BUCK_VOUT_TRIG_ADC)
839 
840  #define _BUCK_VLOOP_Interrupt _ADCAN13Interrupt
841  #define _BUCK_VLOOP_ISR_IP _ADCAN13IP
842  #define _BUCK_VLOOP_ISR_IF _ADCAN13IF
843  #define _BUCK_VLOOP_ISR_IE _ADCAN13IE
844 
845 #elif (BUCK_VOUT_TRIGGER_MODE == BUCK_VOUT_TRIG_PWM)
846 
847  #define _BUCK_VLOOP_Interrupt _PWM1Interrupt
848  #define _BUCK_VLOOP_ISR_IP _PWM1IP
849  #define _BUCK_VLOOP_ISR_IF _PWM1IF
850  #define _BUCK_VLOOP_ISR_IE _PWM1IE
851 
852 #endif
853  // end of group isr-settings-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
855 
856 
893 #define BUCK_POWER_ON_DELAY (float) 200e-3
894 #define BUCK_VRAMP_PERIOD (float) 100e-3
895 #define BUCK_IRAMP_PERIOD (float) 100e-3
896 #define BUCK_POWER_GOOD_DELAY (float) 200e-3
897  // end of group startup-timing-settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
899 
900 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
912 #define BUCK_POD (uint16_t)(((float)BUCK_POWER_ON_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
913 #define BUCK_VRAMP_PER (uint16_t)(((float)BUCK_VRAMP_PERIOD / (float)MAIN_EXECUTION_PERIOD)-1.0)
914 #define BUCK_VREF_STEP (uint16_t)((float)BUCK_VOUT_REF / (float)(BUCK_VRAMP_PER + 1.0))
915 #define BUCK_IRAMP_PER (uint16_t)(((float)BUCK_IRAMP_PERIOD / (float)MAIN_EXECUTION_PERIOD)-1.0)
916 #define BUCK_IREF_STEP (uint16_t)((float)BUCK_ISNS_REF / (float)(BUCK_VRAMP_PER + 1.0))
917 #define BUCK_PGD (uint16_t)(((float)BUCK_POWER_GOOD_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
918  // end of group startup-timing-macros-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~
920 
921 
948 #define BUCK_UVLO_TRIP_DELAY (float) 5e-3
949 #define BUCK_UVLO_RECOVERY_DELAY (float) 500e-3
950 #define BUCK_OVLO_TRIP_DELAY (float) 5e-3
951 #define BUCK_OVLO_RECOVERY_DELAY (float) 500e-3
952 #define BUCK_REGERR_TRIP_DELAY (float) 50e-3
953 #define BUCK_REGERR_RECOVERY_DELAY (float) 2000e-3
954 #define BUCK_OCP_TRIP_DELAY (float) 2e-3
955 #define BUCK_OCP_RECOVERY_DELAY (float) 2000e-3
956 
957 #define BUCK_FAULT_RESTART_CYCLES 10
958  // end of group fault-response-settings-buck ~~~~~~~~~~~~~~~~~~~~~~~~
960 
961 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
973 #define BUCK_UVLO_TDLY (uint16_t)(((float) BUCK_UVLO_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
974 #define BUCK_UVLO_RDLY (uint16_t)(((float) BUCK_UVLO_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
975 #define BUCK_OVLO_TDLY (uint16_t)(((float) BUCK_OVLO_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
976 #define BUCK_OVLO_RDLY (uint16_t)(((float) BUCK_OVLO_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
977 #define BUCK_REGERR_TDLY (uint16_t)(((float) BUCK_REGERR_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
978 #define BUCK_REGERR_RDLY (uint16_t)(((float)BUCK_REGERR_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
979 #define BUCK_OCP_TDLY (uint16_t)(((float) BUCK_OCP_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
980 #define BUCK_OCP_RDLY (uint16_t)(((float) BUCK_OCP_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
981  // end of group fault-response-macros-buck ~~~~~~~~~~~~~~~~~~~~~~~~~~
983  // Doxygen section
985 #endif /* INCLUDE_BUCK */
986 
987 #if (INCLUDE_BOOST == true)
990 
1003 #define BOOST_NO_OF_PHASES 1U
1004 
1005 #define BOOST_SWITCHING_FREQUENCY (float)500.0e+3
1006 #define BOOST_PWM_DUTY_CYCLE_MIN (float) 0.030
1007 #define BOOST_PWM_DUTY_CYCLE_MAX (float) 0.900
1008 #define BOOST_LEADING_EDGE_BLANKING (float)120.0e-9
1009 #define BOOST_DEAD_TIME_LEADING_EDGE (float) 0.0e-9
1010 #define BOOST_DEAD_TIME_FALLING_EDGE (float) 0.0e-9
1011  // end of group pwm-settings-boost ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1013 
1028 #define BOOST_PWM_CHANNEL 2U
1029 #define BOOST_PWM_GPIO_INSTANCE 1U
1030 #define BOOST_PWM_GPIO_PORT_PINH 13U
1031 #define BOOST_PWM_GPIO_PORT_PINL 12U
1032 #define BOOST_PWM_OUTPUT_SWAP true
1033 
1034 #define BOOST_PWM_PDC PG2DC
1035 #define BOOST_PWMH_TRIS _TRISB12
1036 #define BOOST_PWMH_WR _LATB12
1037 #define BOOST_PWMH_RD _RB12
1038 #define BOOST_PWMH_RPx (uint8_t)44
1039 #define BOOST_PWML_TRIS _TRISB13
1040 #define BOOST_PWML_WR _LATB13
1041 #define BOOST_PWML_RD _RB13
1042 #define BOOST_PWML_RPx (uint8_t)45
1043 
1044 #define _BOOST_PWM_Interrupt _PWM2Interrupt
1045 #define BOOST_PWM_IF _PWM2IF
1046 #define BOOST_PWM_IE _PWM2IE
1047 #define BOOST_PWM_IP _PWM2IP
1048 #define BOOST_PWM_TRGSRC_TRG1 0b00110
1049 #define BOOST_PWM_TRGSRC_TRG2 0b00111
1050 #define BOOST_PWM_PGxTRIGA PG2TRIGA
1051 #define BOOST_PWM_PGxTRIGB PG2TRIGB
1052 #define BOOST_PWM_PGxTRIGC PG2TRIGC
1053 
1054 #define BOOST_PWM_ADTR1OFS 0U
1055 #define BOOST_PWM_ADTR1PS 0U
1056 
1057 #define BOOST_PWM_UPDREQ PG2STATbits.UPDREQ
1058  // end of group pwm-mcal-boost ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1060 
1061 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1073 // Conversion Macros
1074 #define BOOST_SWITCHING_PERIOD (float)(1.0/BOOST_SWITCHING_FREQUENCY)
1075 #define BOOST_PWM_PERIOD (uint16_t)(float)(BOOST_SWITCHING_PERIOD / PWM_CLOCK_PERIOD)
1076 #define BOOST_PWM_PHASE_SHIFT (uint16_t)((float)BOOST_PWM_PERIOD / (float)BOOST_NO_OF_PHASES)
1077 #define BOOST_PWM_DC_MIN (uint16_t)(BOOST_PWM_DUTY_CYCLE_MIN * (float)BOOST_PWM_PERIOD)
1078 #define BOOST_PWM_DC_MAX (uint16_t)(BOOST_PWM_DUTY_CYCLE_MAX * (float)BOOST_PWM_PERIOD)
1079 #define BOOST_LEB_PERIOD (uint16_t)(BOOST_LEADING_EDGE_BLANKING / (float)PWM_CLOCK_PERIOD)
1080 #define BOOST_PWM_DEAD_TIME_LE (uint16_t)(BOOST_DEAD_TIME_LEADING_EDGE / (float)PWM_CLOCK_PERIOD)
1081 #define BOOST_PWM_DEAD_TIME_FE (uint16_t)(BOOST_DEAD_TIME_FALLING_EDGE / (float)PWM_CLOCK_PERIOD)
1082  // end of group pwm-macros-boost ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1084 
1085 
1086 
1097 // Feedback Declarations
1098 #define BOOST_VIN_MINIMUM (float) 6.500
1099 #define BOOST_VIN_NOMINAL (float) 9.000
1100 #define BOOST_VIN_MAXIMUM (float)13.800
1101 
1102 #define BOOST_VIN_UNDER_VOLTAGE (float) 6.000
1103 #define BOOST_VIN_OVER_VOLTAGE (float)14.300
1104 #define BOOST_VIN_HYSTERESIS (float) 1.000
1105 
1106 #define BOOST_VIN_R1 (float) 6.980
1107 #define BOOST_VIN_R2 (float) 1.000
1108 
1109 #define BOOST_VIN_FEEDBACK_OFFSET (float) 0.0000
1110 #define BOOST_VIN_ADC_TRG_DELAY (float)20.0e-9
1111  // end of group input-voltage-feedback-settings-boost ~~~~~~~~~~~~~~~
1113 
1114 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1126 // Peripheral Assignments
1127 #define _BOOST_VIN_ADCInterrupt _ADCAN12Interrupt
1128 #define _BOOST_VIN_ADCISR_IF _ADCAN12IF
1129 
1130 #define BOOST_VIN_ANSEL _ANSELC0
1131 #define BOOST_VIN_ADCCORE 8
1132 #define BOOST_VIN_ADCIN 12
1133 #define BOOST_VIN_ADCBUF ADCBUF12
1134 #define BOOST_VIN_ADCTRIG PG2TRIGB
1135 #define BOOST_VIN_TRGSRC BOOST_PWM_TRGSRC_TRG2
1136  // end of group input-voltage-feedback-mcal-boost ~~~~~~~~~~~~~~~~~~~
1138 
1139 
1140 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1152 #define BOOST_VIN_FEEDBACK_GAIN (float)((BOOST_VIN_R2) / (BOOST_VIN_R1 + BOOST_VIN_R2)) // DO NOT CHANGE
1153 #define BOOST_VIN_MIN (uint16_t)(BOOST_VIN_MINIMUM * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1154 #define BOOST_VIN_NOM (uint16_t)(BOOST_VIN_NOMINAL * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1155 #define BOOST_VIN_MAX (uint16_t)(BOOST_VIN_MAXIMUM * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1156 #define BOOST_VIN_HYST (uint16_t)(BOOST_VIN_HYSTERESIS * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1157 #define BOOST_VIN_UVLO_TRIP (uint16_t)(BOOST_VIN_UNDER_VOLTAGE * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1158 #define BOOST_VIN_UVLO_RELEASE (uint16_t)((BOOST_VIN_UNDER_VOLTAGE + BOOST_VIN_HYSTERESIS) * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1159 #define BOOST_VIN_OVLO_TRIP (uint16_t)(BOOST_VIN_OVER_VOLTAGE * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1160 #define BOOST_VIN_OVLO_RELEASE (uint16_t)((BOOST_VIN_OVER_VOLTAGE - BOOST_VIN_HYSTERESIS) * BOOST_VIN_FEEDBACK_GAIN / ADC_GRANULARITY)
1161 #define BOOST_VIN_ADC_TRGDLY (uint16_t)(BOOST_VIN_ADC_TRG_DELAY / PWM_CLOCK_PERIOD)
1162 #define BOOST_VIN_OFFSET (uint16_t)(BOOST_VIN_FEEDBACK_OFFSET / ADC_GRANULARITY)
1163 
1164 #define BOOST_VIN_NORM_INV_G (float)(1.0/BOOST_VIN_FEEDBACK_GAIN)
1165 #define BOOST_VIN_NORM_SCALER (int16_t)(ceil(log(BOOST_VIN_NORM_INV_G)/log(2)))
1166 #define BOOST_VIN_NORM_FACTOR (int16_t)((BOOST_VIN_NORM_INV_G / pow(2.0, BOOST_VIN_NORM_SCALER)) * (pow(2.0, 15)-1))
1167 
1168 #define BOOST_VIN_RANGE_MAX (float)(ADC_REFERENCE * BOOST_VIN_NORM_INV_G)
1169  // end of group input-voltage-feedback-macros-boost ~~~~~~~~~~~~~~~~~
1171 
1172 
1183 // Feedback Declarations
1184 #define BOOST_VOUT_MINIMUM (float)14.00
1185 #define BOOST_VOUT_NOMINAL (float)15.00
1186 #define BOOST_VOUT_MAXIMUM (float)16.00
1187 #define BOOST_VOUT_HYSTERESIS (float)0.500
1188 
1189 #define BOOST_VOUT_TOLERANCE_MAX (float)0.500
1190 #define BOOST_VOUT_TOLERANCE_MIN (float)0.100
1191 #define BOOST_VOUT_VFWD_DROP_MAX (float)0.400
1192 
1193 #define BOOST_VOUT_DIV_R1 (float) 6.980
1194 #define BOOST_VOUT_DIV_R2 (float) 1.000
1195 #define BOOST_VOUT_FEEDBACK_OFFSET (float) 0.000
1196 #define BOOST_VOUT_ADC_TRG_DELAY (float)20.0e-9
1197  // end of group output-voltage-feedback-settings-boost ~~~~~~~~~~~~~~~
1199 
1200 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1212 // Peripheral Assignments
1213 #define BOOST_VOUT_ANSEL _ANSELD10
1214 #define BOOST_VOUT_ADCCORE 8
1215 #define BOOST_VOUT_ADCIN 18
1216 #define BOOST_VOUT_ADCBUF ADCBUF18
1217 #define BOOST_VOUT_ADCTRIG PG2TRIGA
1218 #define BOOST_VOUT_TRGSRC BOOST_PWM_TRGSRC_TRG1
1219  // end of group output-voltage-feedback-mcal-boost ~~~~~~~~~~~~~~~~~~
1221 
1222 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1234 #define BOOST_VOUT_FEEDBACK_GAIN (float)((BOOST_VOUT_DIV_R2) / (BOOST_VOUT_DIV_R1 + BOOST_VOUT_DIV_R2))
1235 
1236 #define BOOST_VOUT_REF (uint16_t)(BOOST_VOUT_NOMINAL * BOOST_VOUT_FEEDBACK_GAIN / ADC_GRANULARITY)
1237 #define BOOST_VOUT_NOM BOOST_VOUT_REF
1238 #define BOOST_VOUT_DEV_TRIP (uint16_t)(BOOST_VOUT_TOLERANCE_MAX * BOOST_VOUT_FEEDBACK_GAIN / ADC_GRANULARITY)
1239 #define BOOST_VOUT_DEV_RELEASE (uint16_t)(BOOST_VOUT_TOLERANCE_MIN * BOOST_VOUT_FEEDBACK_GAIN / ADC_GRANULARITY)
1240 #define BOOST_VOUT_OVP_TRIP (uint16_t)((BOOST_VOUT_MAXIMUM * BOOST_VOUT_FEEDBACK_GAIN) / ADC_GRANULARITY)
1241 #define BOOST_VOUT_OVP_RELEASE (uint16_t)((BOOST_VOUT_MAXIMUM - BOOST_VOUT_HYSTERESIS) * BOOST_VOUT_FEEDBACK_GAIN / ADC_GRANULARITY)
1242 #define BOOST_VOUT_OFFSET (uint16_t)(BOOST_VOUT_FEEDBACK_OFFSET / ADC_GRANULARITY)
1243 #define BOOST_VOUT_ADC_TRGDLY (uint16_t)(BOOST_VOUT_ADC_TRG_DELAY / PWM_CLOCK_PERIOD)
1244 #define BOOST_VOUT_VFWD_DROP (uint16_t)(BOOST_VOUT_VFWD_DROP_MAX / ADC_GRANULARITY)
1245 
1246 #define BOOST_VOUT_NORM_INV_G (float)(1.0/BOOST_VOUT_FEEDBACK_GAIN)
1247 #define BOOST_VOUT_NORM_SCALER (int16_t)(ceil(log(BOOST_VOUT_NORM_INV_G)/log(2)))
1248 #define BOOST_VOUT_NORM_FACTOR (int16_t)((BOOST_VOUT_NORM_INV_G / pow(2.0, BOOST_VOUT_NORM_SCALER)) * (pow(2.0, 15)-1))
1249 
1250 #define BOOST_VOUT_RANGE_MAX (float)(ADC_REFERENCE * BOOST_VOUT_NORM_INV_G)
1251  // end of group output-voltage-feedback-macros-boost ~~~~~~~~~~~~~~~~
1253 
1254 
1274 // Feedback Declarations
1275 #define BOOST_ISNS_LSCS 0
1276 #define BOOST_ISNS_AMP 1
1277 
1278 #define BOOST_ISNS_OPTION BOOST_ISNS_LSCS
1279 
1280 // Settings based on the selection made above
1281 #if (BOOST_ISNS_OPTION == BOOST_ISNS_LSCS)
1282 
1283  #define BOOST_ISNS_FEEDBACK_GAIN (float) 1.000
1284  #define BOOST_ISNS_MINIMUM (float)-1.000
1285  #define BOOST_ISNS_MAXIMUM (float) 2.500
1286  #define BOOST_ISNS_RELEASE (float) 1.500
1287  #define BOOST_ISNS_REFERENCE (float) 2.500
1288  #define BOOST_ISNS_REFERENCE_STARTUP (float) 2.500
1289  #define BOOST_ISNS_ADC_TRG_DELAY (float)80.0e-9
1290  #define BOOST_ISNS_FEEDBACK_OFFSET (float) 1.125
1291 
1292  #define BOOST_ISNS_OFFSET_CALIBRATION_ENABLE true
1293 
1294 #elif (BOOST_ISNS_OPTION == BOOST_ISNS_AMP)
1295 
1296  #define BOOST_ISNS_FEEDBACK_GAIN (float) 0.600
1297  #define BOOST_ISNS_MINIMUM (float) 0.000
1298  #define BOOST_ISNS_MAXIMUM (float) 2.500
1299  #define BOOST_ISNS_RELEASE (float) 2.500
1300  #define BOOST_ISNS_REFERENCE (float) 2.500
1301  #define BOOST_ISNS_REFERENCE_STARTUP (float) 2.500
1302  #define BOOST_ISNS_ADC_TRG_DELAY (float) 240.0e-9
1303  #define BOOST_ISNS_FEEDBACK_OFFSET (float) 1.650
1304 
1305  #define BOOST_ISNS_OFFSET_CALIBRATION_ENABLE true
1306 
1307 #endif
1308  // end of group phase-current-feedback-settings-boost ~~~~~~~~~~~~~~~
1310 
1311 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1323 // Phase Current Feedback Settings Conversion Macros
1324 #define BOOST_ISNS_MIN (uint16_t)(int16_t)(((BOOST_ISNS_MINIMUM-BOOST_ISNS_FEEDBACK_OFFSET) * BOOST_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
1325 #define BOOST_ISNS_OCL (uint16_t)(((BOOST_ISNS_MAXIMUM-BOOST_ISNS_FEEDBACK_OFFSET) * BOOST_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
1326 #define BOOST_ISNS_OCL_RELEASE (uint16_t)(((BOOST_ISNS_RELEASE-BOOST_ISNS_FEEDBACK_OFFSET) * BOOST_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
1327 #define BOOST_ISNS_REF (uint16_t)((BOOST_ISNS_REFERENCE * BOOST_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
1328 #define BOOST_ISNS_REF_STARTUP (uint16_t)((BOOST_ISNS_REFERENCE_STARTUP * BOOST_ISNS_FEEDBACK_GAIN) / ADC_GRANULARITY)
1329 #define BOOST_ISNS_FB_OFFSET (uint16_t)(BOOST_ISNS_FEEDBACK_OFFSET / ADC_GRANULARITY)
1330 #define BOOST_ISNS_ADC_TRGDLY (uint16_t)(BOOST_ISNS_ADC_TRG_DELAY / PWM_CLOCK_PERIOD)
1331 
1332 #define BOOST_ISNS_NORM_INV_G (float)(1.0/BOOST_ISNS_FEEDBACK_GAIN)
1333 #define BOOST_ISNS_NORM_SCALER (int16_t)(ceil(log(BOOST_ISNS_NORM_INV_G)/log(2)))
1334 #define BOOST_ISNS_NORM_FACTOR (int16_t)((BOOST_ISNS_NORM_INV_G / pow(2.0, BOOST_ISNS_NORM_SCALER)) * (pow(2.0, 15)-1))
1335  // end of group phase-current-feedback-macros-boost ~~~~~~~~~~~~~~~~~
1337 
1338 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1350 // Peripheral Assignments
1351 #if (BOOST_ISNS_OPTION == BOOST_ISNS_LSCS)
1352 
1353  #define _BOOST_ISNS_ADCInterrupt _ADCAN1Interrupt
1354  #define _BOOST_ISNS_ADCISR_IF _ADCAN1IF
1355 
1356  #define BOOST_ISNS_ANSEL _ANSELA1
1357  #define BOOST_ISNS_ADCCORE 1
1358  #define BOOST_ISNS_ADCIN 1
1359  #define BOOST_ISNS_ALT_IN_SELECT 0b00
1360  #define BOOST_ISNS_ADCBUF ADCBUF1
1361  #define BOOST_ISNS_ADCTRIG PG2TRIGB
1362  #define BOOST_ISNS_TRGSRC BOOST_PWM_TRGSRC_TRG2
1363 
1364  #define BOOST_ISNS_OPA_INSTANCE 2U
1365 
1366 #elif (BOOST_ISNS_OPTION == BOOST_ISNS_AMP)
1367 
1368  #define _BOOST_ISNS_ADCInterrupt _ADCAN1Interrupt
1369  #define _BOOST_ISNS_ADCISR_IF _ADCAN1IF
1370 
1371  #define BOOST_ISNS_ANSEL _ANSELA1
1372  #define BOOST_ISNS_ADCCORE 1
1373  #define BOOST_ISNS_ADCIN 1
1374  #define BOOST_ISNS_ALT_IN_SELECT 0b00
1375  #define BOOST_ISNS_ADCBUF ADCBUF1
1376  #define BOOST_ISNS_ADCTRIG PG2TRIGB
1377  #define BOOST_ISNS_TRGSRC BOOST_PWM_TRGSRC_TRG2
1378 
1379  #define BOOST_ISNS_OPA_INSTANCE 0U
1380 
1381 #else
1382  #pragma message "hardware abstraction layer warning: no current sense feedback selected."
1383 #endif
1384  // end of group phase-current-feedback-mcal-boost ~~~~~~~~~~~~~~~~~~~
1386 
1387 
1399 #define BOOST_AGC_EXECUTION_DELAY (float)(400.0e-9)
1400  // end of group adaptive-gain-control-settings-boost ~~~~~~~~~~~~~~~~
1402 
1403 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1414 /* ToDo: AGC is temporarily disabled for the boost converter and requires further verification
1415 
1416 #define BOOST_VL_MINIMUM (float)(BOOST_VIN_UNDER_VOLTAGE) ///< Minimum input voltage - maximum output voltage
1417 #define BOOST_VL_NOMINAL (float)(BOOST_VIN_NOMINAL) ///< Nominal input voltage - nominal output voltage
1418 #define BOOST_VL_MAXIMUM (float)(BOOST_VIN_RANGE_MAX) ///< Maximum input voltage - output voltage = 0V
1419 
1420 // The AGC compare value is defined at nominal input voltage and output voltage
1421 // The maximum modulation factor is normalized to fractional '1' to prevent number overruns
1422 #define BOOST_AGC_FACTOR_MAX (float)(BOOST_VL_NOMINAL / BOOST_VL_MINIMUM) ///< Floating point number of the maximumm limit of the adaptive gain modulation factor (float)
1423 #define BOOST_AGC_NOM_SCALER (uint16_t)(ceil(log(BOOST_AGC_FACTOR_MAX)/log(2))) ///< Bit-shift scaler of the floating point number of the maimum limit of the adaptive gain modulation factor
1424 #define BOOST_AGC_NOM_FACTOR (uint16_t)(0x7FFF >> BOOST_AGC_NOM_SCALER) ///< Fractional of the floating point number of the maimum limit of the adaptive gain modulation factor
1425 #define BOOST_AGC_MEDIAN (int16_t)(((int16_t)(((float)BOOST_VIN_NOM * BOOST_VIN_NORM_FCT) - BOOST_VOUT_NOM))>>BOOST_AGC_NOM_SCALER) ///< Adaptive gain modulation factor at nominal operating point
1426 
1427 // To calculate the voltage across the inductor, input and output voltage ADC results need to be normalized. The normalization factor is determined here
1428 // Each input voltage sample has to be multiplied with this scaling factor to allow the calculation of the instantaneous voltage across the inductor
1429 #define BOOST_VIN_NORM_FCT (float)(BOOST_VOUT_FEEDBACK_GAIN / BOOST_VIN_FEEDBACK_GAIN) ///< VIN-2-VOUT Normalization Factor
1430 #define BOOST_AGC_IO_NORM_SCALER (int16_t)(ceil(log(BOOST_VIN_NORM_FCT)/log(2))) ///< Nominal VL Q15 scaler
1431 #define BOOST_AGC_IO_NORM_FACTOR (int16_t)((BOOST_VIN_NORM_FCT / pow(2.0, BOOST_AGC_IO_NORM_SCALER)) * (pow(2.0, 15)-1)) ///< Nominal VL Q15 factor
1432 
1433 // Additional execution time calculation to be considered in trigger delay and overall control timing
1434 #define BOOST_AGC_EXEC_DLY (uint16_t)(BOOST_AGC_EXECUTION_DELAY / PWM_CLOCK_PERIOD) ///< Macro calculating the integer number equivalent of the AGC algorithm computation time
1435 
1436 */ // end of group adaptive-gain-control-macros-boost ~~~~~~~~~~~~~~~~~~
1438 
1439 
1452 // Hardware-dependent defines
1453 #define BOOST_VOUT_TRIG_PWM 0
1454 #define BOOST_VOUT_TRIG_ADC 1
1455 
1456 #define BOOST_VOUT_TRIGGER_MODE BOOST_VOUT_TRIG_PWM
1457 #define BOOST_VOUT_ISR_PRIORITY 5
1458 
1459 #if (BOOST_VOUT_TRIGGER_MODE == BOOST_VOUT_TRIG_ADC)
1460 
1461  #define _BOOST_VLOOP_Interrupt _ADCAN18Interrupt
1462  #define _BOOST_VLOOP_ISR_IP _ADCAN18IP
1463  #define _BOOST_VLOOP_ISR_IF _ADCAN18IF
1464  #define _BOOST_VLOOP_ISR_IE _ADCAN18IE
1465 
1466 #elif (BOOST_VOUT_TRIGGER_MODE == BOOST_VOUT_TRIG_PWM)
1467 
1468  #define _BOOST_VLOOP_Interrupt _PWM2Interrupt
1469  #define _BOOST_VLOOP_ISR_IP _PWM2IP
1470  #define _BOOST_VLOOP_ISR_IF _PWM2IF
1471  #define _BOOST_VLOOP_ISR_IE _PWM2IE
1472 
1473 #endif
1474  // end of group isr-settings-boost ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1476 
1477 
1514 #define BOOST_POWER_ON_DELAY (float) 200e-3
1515 #define BOOST_VRAMP_PERIOD (float) 100e-3
1516 #define BOOST_IRAMP_PERIOD (float) 100e-3
1517 #define BOOST_POWER_GOOD_DELAY (float) 200e-3
1518 
1519 #define BOOST_CHARGEUP_PERIOD (float) 50e-3
1520 #define BOOST_CHARGEUP_TIMEOUT (float) 200e-3
1521  // end of group startup-timing-settings-boost ~~~~~~~~~~~~~~~~~~~~~~~
1523 
1524 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1536 #define BOOST_POD (uint16_t)(((float)BOOST_POWER_ON_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1537 #define BOOST_VRAMP_PER (uint16_t)(((float)BOOST_VRAMP_PERIOD / (float)MAIN_EXECUTION_PERIOD)-1.0)
1538 #define BOOST_VREF_STEP (uint16_t)((float)BOOST_VOUT_REF / (float)(BOOST_VRAMP_PER + 1.0))
1539 #define BOOST_IRAMP_PER (uint16_t)(((float)BOOST_IRAMP_PERIOD / (float)MAIN_EXECUTION_PERIOD)-1.0)
1540 #define BOOST_IREF_STEP (uint16_t)((float)BOOST_ISNS_REF / (float)(BOOST_VRAMP_PER + 1.0))
1541 #define BOOST_PGD (uint16_t)(((float)BOOST_POWER_GOOD_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1542 #define BOOST_CHRG_PER (uint16_t)(((float)BOOST_CHARGEUP_PERIOD / (float)MAIN_EXECUTION_PERIOD)-1.0)
1543 #define BOOST_CHRG_TOUT (uint16_t)(((float)BOOST_CHARGEUP_TIMEOUT / (float)MAIN_EXECUTION_PERIOD)-1.0)
1544  // end of group startup-timing-macros-boost ~~~~~~~~~~~~~~~~~~~~~~~~~
1546 
1547 
1574 #define BOOST_UVLO_TRIP_DELAY (float) 5e-3
1575 #define BOOST_UVLO_RECOVERY_DELAY (float) 500e-3
1576 #define BOOST_OVLO_TRIP_DELAY (float) 5e-3
1577 #define BOOST_OVLO_RECOVERY_DELAY (float) 500e-3
1578 #define BOOST_REGERR_TRIP_DELAY (float) 25e-3
1579 #define BOOST_REGERR_RECOVERY_DELAY (float)2000e-3
1580 #define BOOST_OCP_TRIP_DELAY (float) 2e-3
1581 #define BOOST_OCP_RECOVERY_DELAY (float)2000e-3
1582 
1583 #define BOOST_FAULT_RESTART_CYCLES 10
1584  // end of group fault-response-settings-boost ~~~~~~~~~~~~~~~~~~~~~~~
1586 
1587 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1599 #define BOOST_UVLO_TDLY (uint16_t)(((float) BOOST_UVLO_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1600 #define BOOST_UVLO_RDLY (uint16_t)(((float) BOOST_UVLO_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1601 #define BOOST_OVLO_TDLY (uint16_t)(((float) BOOST_OVLO_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1602 #define BOOST_OVLO_RDLY (uint16_t)(((float) BOOST_OVLO_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1603 #define BOOST_REGERR_TDLY (uint16_t)(((float) BOOST_REGERR_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1604 #define BOOST_REGERR_RDLY (uint16_t)(((float)BOOST_REGERR_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1605 #define BOOST_OCP_TDLY (uint16_t)(((float) BOOST_OCP_TRIP_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1606 #define BOOST_OCP_RDLY (uint16_t)(((float) BOOST_OCP_RECOVERY_DELAY / (float)MAIN_EXECUTION_PERIOD)-1.0)
1607  // end of group fault-response-macros-boost ~~~~~~~~~~~~~~~~~~~~~~~~~
1609 
1610 
1612 #endif /* INCLUDE_BOOST */
1613 
1614 
1615 
1633 #define TEMP_CAL_ZERO (float) 0.500 // Temperature sense signal zero point voltage in [V]
1634 #define TEMP_CAL_SLOPE (float) 0.010 // Temperature sense signal slope in [V/K]
1635  // end of group temperature-feedback-settings
1637 
1638 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1650 #define TEMP_FB_ZERO (uint16_t)(TEMP_CAL_ZERO / ADC_GRANULARITY)
1651 #define TEMP_FB_SLOPE (float)(TEMP_CAL_SLOPE / ADC_GRANULARITY)
1652  // end of group temperature-feedback-macros
1654 
1655 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1667 #define _TEMP_ADCInterrupt _ADCAN2Interrupt
1668 #define _TEMP_ADCISR_IF _ADCAN2IF
1669 
1670 #define TEMP_ANSEL _ANSELB7
1671 #define TEMP_ADCCORE 8 // 0=Dedicated Core #0, 1=Dedicated Core #1, 8=Shared ADC Core
1672 #define TEMP_ADCIN 2 // Analog input number (e.g. '5' for 'AN5')
1673 #define TEMP_ADCBUF ADCBUF2
1674 #define TEMP_ADCTRIG BUCK_PWM_PGxTRIGB
1675 #define TEMP_TRGSRC BUCK_PWM_TRGSRC_TRG2 // PWM2 Trigger 2 via PG1TRIGB
1676  // end of group temperature-feedback-mcal
1678 
1679 
1680 #if (INCLUDE_LCD == true)
1683 
1693 #define LCD_SCL_SetHigh() _LATC5 = 1
1694 #define LCD_SCL_SetLow() _LATC5 = 0
1695 #define LCD_SCL_Toggle() _LATC5 ^= 1
1696 #define LCD_SCL_GetValue() _RC5
1697 #define LCD_SCL_SetDigitalInput() _TRISC5 = 1
1698 #define LCD_SCL_SetDigitalOutput() _TRISC5 = 0
1699 
1700 #define LCD_SDI_SetHigh() _LATC4 = 1
1701 #define LCD_SDI_SetLow() _LATC4 = 0
1702 #define LCD_SDI_Toggle() _LATC4 ^= 1
1703 #define LCD_SDI_GetValue() _RC4
1704 #define LCD_SDI_SetDigitalInput() _TRISC4 = 1
1705 #define LCD_SDI_SetDigitalOutput() _TRISC4 = 0
1706 
1707 #define LCD_CS_SetHigh() _LATD8 = 1
1708 #define LCD_CS_SetLow() _LATD8 = 0
1709 #define LCD_CS_Toggle() _LATD8 ^= 1
1710 #define LCD_CS_GetValue() _RD8
1711 #define LCD_CS_SetDigitalInput() _TRISD8 = 1
1712 #define LCD_CS_SetDigitalOutput() _TRISD8 = 0
1713 
1714 #define LCD_RST_SetHigh() _LATC8 = 1
1715 #define LCD_RST_SetLow() _LATC8 = 0
1716 #define LCD_RST_Toggle() _LATC8 ^= 1
1717 #define LCD_RST_GetValue() _RC8
1718 #define LCD_RST_SetDigitalInput() _TRISC8 = 1
1719 #define LCD_RST_SetDigitalOutput() _TRISC8 = 0
1720 
1721 #define LCD_RS_SetHigh() _LATC9 = 1
1722 #define LCD_RS_SetLow() _LATC9 = 0
1723 #define LCD_RS_Toggle() _LATC9 ^= 1
1724 #define LCD_RS_GetValue() _RC9
1725 #define LCD_RS_SetDigitalInput() _TRISC9 = 1
1726 #define LCD_RS_SetDigitalOutput() _TRISC9 = 0
1727  // end of group lcd-interface-declarations
1729  // Doxygen section
1731 #endif /* INCLUDE_LCD */
1732 
1733 #endif /* DPSK3_HARDWARE_DESCRIPTOR_H */
1734 
1735 // end of file