8 #if (__XC16_VERSION__ > 1500)
9 #pragma message ("Warning: Library file '" __FILE__ "' has not been tested with the recently selected compiler version")
16 #include "dev_buck_pconfig.h"
17 #include "dev_buck_templates.h"
56 volatile uint16_t retval=1;
60 volatile bool _pmdlock = PMDCONbits.PMDLOCK;
61 PMDCONbits.PMDLOCK = 0;
63 PMDCONbits.PMDLOCK = _pmdlock;
112 volatile uint16_t retval=1;
113 volatile uint16_t _i=0;
117 volatile uint16_t pwm_Instance;
118 volatile uint16_t gpio_Instance;
234 volatile uint16_t retval=1;
235 volatile uint16_t _i=0;
236 volatile uint16_t timeout=0;
237 volatile uint16_t pwm_Instance=0;
238 volatile uint16_t sync_sw_mask=0;
258 while((!PCLKCONbits.HRRDY) && (timeout++ < 5000));
259 if ((timeout >= 5000) || (PCLKCONbits.HRERR))
280 retval &= (
volatile uint16_t)(pg->
PGxCONL.
bits.ON);
303 volatile uint16_t retval=1;
304 volatile uint16_t _i=0;
305 volatile uint16_t pwm_Instance=0;
323 retval &= (
volatile uint16_t)((
volatile bool)(pg->
PGxCONL.
bits.ON == 0));
349 volatile uint16_t retval=1;
350 volatile uint16_t _i=0;
351 volatile uint16_t pwm_Instance;
391 volatile uint16_t retval=1;
392 volatile uint16_t _i=0;
393 volatile bool sync_mode=
false;
394 volatile uint16_t pwm_Instance=0;
395 volatile uint16_t sync_sw_mask=0;
409 sync_mode &= (~buckInstance->
status.
bits.async_mode);
428 retval &= (uint16_t)((
bool)(!(pg->
PGxIOCONL.
value & sync_sw_mask)));
451 volatile uint16_t retval=1;
454 volatile bool _pmdlock = PMDCONbits.PMDLOCK;
455 PMDCONbits.PMDLOCK = 0;
457 PMDCONbits.PMDLOCK = _pmdlock;
460 ADCON1Lbits.ADON = 0;
461 ADCON1Lbits.ADSIDL = 0;
464 ADCON1Hbits.SHRRES = 0b11;
465 ADCON1Hbits.FORM = 0;
468 ADCON2Lbits.REFCIE = 0;;
469 ADCON2Lbits.REFERCIE = 0;
470 ADCON2Lbits.EIEN = 1;
471 ADCON2Lbits.SHREISEL = 0b111;
472 ADCON2Lbits.SHRADCS = 0b0000001;
475 ADCON2Hbits.SHRSAMC = 8;
476 ADCON2Hbits.REFERR = 0;
477 ADCON2Hbits.REFRDY = 0;
480 ADCON3Lbits.REFSEL = 0b000;
481 ADCON3Lbits.SUSPEND = 0;
482 ADCON3Lbits.SUSPCIE = 0;
483 ADCON3Lbits.SUSPRDY = 0;
484 ADCON3Lbits.SHRSAMP = 0;
485 ADCON3Lbits.CNVRTCH = 0;
486 ADCON3Lbits.SWLCTRG = 0;
487 ADCON3Lbits.SWCTRG = 0;
488 ADCON3Lbits.CNVCHSEL = 0;
491 ADCON3Hbits.CLKSEL = 0b01;
492 ADCON3Hbits.CLKDIV = 0b000000;
493 ADCON3Hbits.SHREN = 0;
494 ADCON3Hbits.C0EN = 0;
495 ADCON3Hbits.C1EN = 0;
498 ADCON4Lbits.SAMC0EN = 0;
499 ADCON4Lbits.SAMC1EN = 0;
502 ADCON4Hbits.C0CHS = 0b00;
503 ADCON4Hbits.C1CHS = 0b00;
509 ADCON5Lbits.SHRPWR = 0;
510 ADCON5Lbits.C0PWR = 0;
511 ADCON5Lbits.C1PWR = 0;
514 ADCON5Hbits.WARMTIME = 0b1111;
515 ADCON5Hbits.SHRCIE = 0;
516 ADCON5Hbits.C0CIE = 0;
517 ADCON5Hbits.C1CIE = 0;
520 ADCORE1Lbits.SAMC = 0b0000000000;
521 ADCORE0Lbits.SAMC = 0b0000000000;
524 ADCORE0Hbits.RES = 0b11;
525 ADCORE0Hbits.ADCS = 0b0000000;
526 ADCORE0Hbits.EISEL = 0b111;
528 ADCORE1Hbits.RES = 0b11;
529 ADCORE1Hbits.ADCS = 0b0000000;
530 ADCORE1Hbits.EISEL = 0b111;
550 volatile uint16_t retval=1;
551 volatile uint8_t* ptrADCRegister;
552 volatile uint8_t bit_offset;
574 bit_offset = (2 * adcInstance->
adc_input);
576 bit_offset = (2 * (adcInstance->
adc_input-8));
578 bit_offset = (2 * (adcInstance->
adc_input-16));
580 bit_offset = (2 * (adcInstance->
adc_input-24));
584 ptrADCRegister = (
volatile uint8_t *)
585 ((
volatile uint8_t *)&ADMOD0L + (
volatile uint8_t)(adcInstance->
adc_input >> 8));
587 *ptrADCRegister |= ((
unsigned int)adcInstance->
signed_result << bit_offset);
588 *ptrADCRegister |= ((
unsigned int)adcInstance->
differential_input << (bit_offset + 1));
591 ptrADCRegister = (
volatile uint8_t *)
592 ((
volatile uint8_t *)&ADTRIG0L + (
volatile uint8_t)adcInstance->
adc_input);
644 volatile uint16_t retval=1;
645 volatile uint16_t timeout=0;
646 volatile uint16_t adcore_mask_compare=0;
649 ADCON1Lbits.ADON = 1;
675 volatile uint16_t retval=1;
676 volatile uint16_t filter_mask=0;
683 filter_mask = (0x0001 << buckGPIOInstance->
pin);
686 if (buckGPIOInstance->
polarity == 0)
710 volatile uint16_t retval=1;
711 volatile uint16_t filter_mask=0;
718 filter_mask = (0x0001 << buckGPIOInstance->
pin);
721 if (buckGPIOInstance->
polarity == 0)
745 volatile bool retval=1;
752 retval = (bool)(gpio->
PORTx.
value & (0x0001 << buckGPIOInstance->
pin));
776 volatile uint16_t retval=1;
808 volatile uint16_t retval=1;
815 if (buckGPIOInstance->
polarity == 0)
821 if(buckGPIOInstance->
io_type == 1)
827 if(buckGPIOInstance->
io_type == 2)
853 volatile uint16_t retval=1;
880 volatile uint16_t retval=1;
881 volatile uint16_t _i=0;
882 volatile uint16_t bit_mask=0;
922 volatile uint16_t buckDAC_Start(
volatile struct BUCK_CONVERTER_s* buckInstance)
924 volatile uint16_t _i=0;
925 volatile uint16_t retval=1;
951 volatile uint16_t buckDAC_Stop(
volatile struct BUCK_CONVERTER_s* buckInstance)
953 volatile uint16_t _i=0;
954 volatile uint16_t retval=1;
volatile struct P33C_DAC_MODULE_s * p33c_DacModule_GetHandle(void)
Gets pointer to DAC Module SFR set.
volatile uint16_t p33c_DacInstance_ConfigWrite(volatile uint16_t dacInstance, volatile struct P33C_DAC_INSTANCE_s dacConfig)
Writes a user-defined configuration to the DAC instance registers.
volatile struct P33C_DAC_INSTANCE_s * p33c_DacInstance_GetHandle(volatile uint16_t dacInstance)
Gets pointer to DAC Instance SFR set.
volatile uint16_t p33c_DacModule_ConfigWrite(volatile struct P33C_DAC_MODULE_s dacModuleConfig)
Writes a user-defined configuration to the DAC module base registers.
volatile struct P33C_GPIO_INSTANCE_s * p33c_GpioInstance_GetHandle(volatile uint16_t gpioInstance)
Gets pointer to GPIO Instance SFR set.
volatile struct P33C_PWM_MODULE_s * p33c_PwmModule_GetHandle(void)
Gets pointer to PWM module SFR set.
volatile struct P33C_PWM_GENERATOR_s * p33c_PwmGenerator_GetHandle(volatile uint16_t pgInstance)
Returns the PWM generator index.
volatile uint16_t p33c_PwmModule_ConfigWrite(volatile struct P33C_PWM_MODULE_s pwmConfig)
Writes a user-defined configuration to the PWM base module registers.
volatile uint16_t p33c_PwmGenerator_ConfigWrite(volatile uint16_t pgInstance, volatile struct P33C_PWM_GENERATOR_s pgConfig)
Disposes a given PWM generator by resetting all its registers to default.
#define DAC_SSTIME
Integer value of Steady-State time period based on most recent auxiliary clock settings.
#define DAC_TMODTIME
Integer value of transition time period based on most recent auxiliary clock settings.
volatile uint16_t buckPWM_Resume(volatile struct BUCK_CONVERTER_s *buckInstance)
This function resumes the buck PWM operation.
volatile uint16_t buckGPIO_PrivateInitialize(volatile struct BUCK_GPIO_INSTANCE_s *buckGPIOInstance)
This function sets the pin as input or output.
volatile uint16_t buckADC_ModuleInitialize(void)
This fucntion initializes the buck by resetting all its registers to default.
volatile uint16_t buckPWM_ChannelInitialize(volatile struct BUCK_CONVERTER_s *buckInstance)
This function initializes the output pins for the PWM output and the default buck PWM settings.
volatile uint16_t buckPWM_ModuleInitialize(volatile struct BUCK_CONVERTER_s *buckInstance)
Initializes the buck PWM module by resetting its registers to default.
volatile uint16_t buckGPIO_Clear(volatile struct BUCK_GPIO_INSTANCE_s *buckGPIOInstance)
This function clears the selected general purpose input/output pin.
volatile bool buckGPIO_GetPinState(volatile struct BUCK_GPIO_INSTANCE_s *buckGPIOInstance)
This function gets the state of the selected pin.
volatile uint16_t buckDAC_ChannelInitialize(volatile struct BUCK_CONVERTER_s *buckInstance)
This function initializes the Digital-To-Analog converter, slope compensation and analog comparator u...
volatile uint16_t buckDAC_ModuleInitialize(void)
This function initializes the Digital-To-Analog converter peripheral module.
volatile uint16_t buckADC_Start(void)
This function enables the ADC module and starts the ADC cores analog inputs for the required input si...
volatile uint16_t buckPWM_Stop(volatile struct BUCK_CONVERTER_s *buckInstance)
This function stops the buck PWM output.
volatile uint16_t buckADC_ChannelInitialize(volatile struct BUCK_ADC_INPUT_SETTINGS_s *adcInstance)
This function initializes the settings for the ADC channel.
volatile uint16_t buckPWM_Start(volatile struct BUCK_CONVERTER_s *buckInstance)
This function enables the buck PWM operation.
volatile uint16_t buckGPIO_Initialize(volatile struct BUCK_CONVERTER_s *buckInstance)
This function initializes the buck input pins.
volatile uint16_t buckGPIO_Set(volatile struct BUCK_GPIO_INSTANCE_s *buckGPIOInstance)
This function sets the selected general purpose input/ouput pins.
volatile uint16_t buckPWM_Suspend(volatile struct BUCK_CONVERTER_s *buckInstance)
This function disables the PWM generator IOs.
volatile uint16_t adcore_diff_mask
This variable is use to set the ADC core mask.
volatile uint16_t adcore_mask
This variable is use to set the ADC core mask.
volatile struct P33C_PWM_MODULE_s buckPwmModuleConfig
PWM module default configuration.
volatile struct P33C_DAC_INSTANCE_s buckDacInstanceConfig
DAC generator default configuration.
volatile struct P33C_DAC_MODULE_s buckDacModuleConfig
DAC module default configuration.
volatile struct P33C_PWM_GENERATOR_s buckPwmGeneratorConfig
PWM generator default configuration.
#define P33C_PGxIOCONH_PEN_ASYNC_SWAP
#define ADC_CORE2_MASK_INDEX
This define masks core 2 of ADC.
#define ADC_POWERUP_TIMEOUT
Digital-To-Analog Converter and High Speed Comparator Special Function Register Set.
#define ADC_CORE3_MASK_INDEX
This define masks core 3 of ADC.
#define ADC_CORE1_MASK_INDEX
This define masks core 1 of ADC.
#define P33C_PGxIOCONL_OVREN_SYNC
control bits in PGxIOCONL enabling/disabling the PWM output override in synchronous mode
#define P33C_PGxIOCONH_PEN_SYNC
control bits in PGxIOCONH enabling/disabling the PWM outputs in synchronous mode
#define ADC_CORE0_MASK_INDEX
This define masks core 0 of ADC.
#define P33C_PGxCONL_HRES_EN
control bit in PGxCONL enabling/disabling High Resolution Mode
#define P33C_PGxIOCONL_OVREN_ASYNC_SWAP
#define P33C_PGxIOCONL_OVREN_ASYNC
control bits in PGxIOCONL enabling/disabling the PWM output override in asynchronous mode
#define ADC_SHRCORE_MASK_INDEX
This define masks shared core of ADC.
#define P33C_PGxCONL_PWM_ON
control bit in PGxCONL enabling/disabling the PWM generator
#define P33C_PGxIOCONH_PEN_ASYNC
#define P33C_PGxSTAT_UPDREQ
Control bit in PGxSTAT setting the Update Request bit.
Abstracted set of Special Function Registers of a Digital-to-Analog Converter peripheral.
union P33C_DAC_MODULE_s::@23 DacModuleCtrl2L
union P33C_DAC_MODULE_s::@22 DacModuleCtrl1L
volatile struct tagDACCTRL1LBITS bits
union P33C_DAC_MODULE_s::@24 DacModuleCtrl2H
union P33C_DAC_INSTANCE_s::@31 SLPxDAT
union P33C_DAC_INSTANCE_s::@29 SLPxCONL
union P33C_DAC_INSTANCE_s::@28 DACxDATH
union P33C_DAC_INSTANCE_s::@30 SLPxCONH
volatile struct tagDAC1CONLBITS bits
union P33C_DAC_INSTANCE_s::@27 DACxDATL
union P33C_DAC_INSTANCE_s::@25 DACxCONL
union P33C_DAC_INSTANCE_s::@26 DACxCONH
union P33C_GPIO_INSTANCE_s::@39 ODCx
union P33C_GPIO_INSTANCE_s::@36 TRISx
union P33C_GPIO_INSTANCE_s::@37 PORTx
union P33C_GPIO_INSTANCE_s::@38 LATx
union P33C_GPIO_INSTANCE_s::@35 ANSELx
union P33C_GPIO_INSTANCE_s::@41 CNPDx
union P33C_PWM_MODULE_s::@54 vMPER
union P33C_PWM_GENERATOR_s::@82 PGxEVTH
union P33C_PWM_GENERATOR_s::@96 PGxPER
union P33C_PWM_GENERATOR_s::@97 PGxTRIGA
union P33C_PWM_GENERATOR_s::@77 PGxCONH
union P33C_PWM_GENERATOR_s::@79 PGxIOCONL
union P33C_PWM_GENERATOR_s::@99 PGxTRIGC
union P33C_PWM_GENERATOR_s::@91 PGxLEBL
union P33C_PWM_GENERATOR_s::@87 PGxFFPCIL
union P33C_PWM_GENERATOR_s::@78 PGxSTAT
union P33C_PWM_GENERATOR_s::@80 PGxIOCONH
struct tagPG1CONLBITS bits
union P33C_PWM_GENERATOR_s::@81 PGxEVTL
union P33C_PWM_GENERATOR_s::@101 PGxDTH
union P33C_PWM_GENERATOR_s::@76 PGxCONL
union P33C_PWM_GENERATOR_s::@100 PGxDTL
union P33C_PWM_GENERATOR_s::@98 PGxTRIGB
union P33C_PWM_GENERATOR_s::@94 PGxDC
union P33C_PWM_GENERATOR_s::@88 PGxFFPCIH
struct BUCK_CONVERTER_STATUS_s::@126::@128 bits
data structure for single bit addressing operations
enum BUCK_CONTROL_MODE_e control_mode
Fundamental control mode.
volatile uint16_t no_of_phases
number of converter phases
volatile uint16_t dac_instance
Digital-to-analog converter instance used to generate the the slope compensation ramp.
volatile uint16_t slope_start_trigger
Period counter value at with the slope start is triggered.
volatile uint16_t cmp_input
Analog comparator input option A to D (0=A, 1=B, 2=C, 3=D)
volatile uint16_t pwm_trigger_input
PWM current limit PCI input source (must match comparator declared by cmp_instance)
volatile uint16_t slew_rate
Integer equivalent of compensation ramp slew rate in [V/µs].
volatile uint16_t cmp_instance
Analog comparator triggering on the peak current feedback signal.
volatile uint16_t slope_stop_trigger
Period counter value at with the slope stop is triggered.
volatile uint16_t initial_dac_value
Initial Digital-to-Analog converter reference value (used when peripheral is enabled or being reset)
volatile struct BUCK_SLOPE_COMP_SETTINGS_s slope_compensation
Peak current mode slope compensation settings.
volatile uint16_t leb_period
Leading-Edge Blanking period.
volatile uint16_t period
Switching period.
volatile bool sync_drive
Selecting if switch node is driven in synchronous or asnchronous mode.
volatile uint16_t gpio_low
GPIO port pin-number of PWMxL of the selected PWM generator.
volatile uint16_t duty_ratio_min
Absolute duty cycle minimum during normal operation.
volatile uint16_t dead_time_rising
Dead time setting at rising edge of a half-bridge drive.
volatile uint16_t gpio_instance
GPIO instance of the selected PWM generator.
volatile bool swap_outputs
Selecting if PWMxH (default) or PWMxL should be the leading PWM output.
volatile uint16_t gpio_high
GPIO port pin-number of PWMxH of the selected PWM generator.
volatile uint16_t phase
Switching signal phase-shift.
volatile bool high_resolution_enable
Selecting if PWM module should use high-resolution mode.
volatile uint16_t pwm_instance
number of the PWM channel used
volatile uint16_t dead_time_falling
Dead time setting at falling edge of a half-bridge drive.
volatile bool master_period_enable
Selecting MASTER or Individual period register.
ADC input channel configuration.
volatile bool early_interrupt_enable
input channel early interrupt enable bit
volatile bool enabled
input channel enable bit
volatile uint8_t adc_core
number of the ADC core connected to the selected channel
volatile uint8_t trigger_source
input channel trigger source
volatile bool interrupt_enable
input channel interrupt enable bit
volatile bool level_trigger
input channel level trigger mode enable bit
volatile bool signed_result
input channel singed result mode enable bit
volatile bool differential_input
input channel differential mode enable bit
volatile uint8_t adc_input
number of the ADC input channel used
GPIO instance of the converter control GPIO.
volatile bool enabled
Specifies, if this IO is used or not.
volatile uint16_t io_type
Input/Output definition (0=push-pull output, 1=input, 2=open-drain output)
volatile uint16_t port
GPIO port instance number (0=Port RA, 0=Port RB, 0=Port RC, etc.)
volatile uint16_t polarity
Output polarity, where 0=ACTIVE HIGH, 1=ACTIVE_LOW.
volatile uint16_t pin
GPIO port pin number.
volatile struct BUCK_GPIO_INSTANCE_s EnableInput
External ENABLE input.
volatile struct BUCK_GPIO_INSTANCE_s PowerGood
Power Good Output.
BUCK control & monitoring data structure.
volatile struct BUCK_SWITCH_NODE_SETTINGS_s sw_node[BUCK_NO_OF_PHASES]
BUCK converter switch node settings.
volatile struct BUCK_CONVERTER_STATUS_s status
BUCK operation status bits.
volatile struct BUCK_GPIO_SETTINGS_s gpio
BUCK converter additional GPIO specification.
volatile struct BUCK_CONVERTER_SETTINGS_s set_values
Control field for global access to references.