void ConfigIntSmpsADCPair5(unsigned int adc_intp, unsigned int adc_intp_priority) { /* Clear the ADC Interrupt status Flags of ADC channels AN11 and AN10 */ ClearSmpsADCIntPair5(); /* Enable/Disable the ADC Interrupt of ADC channels AN11 and AN10 */ SetIntSmpsADCPair5(adc_intp); /* Set the priority of ADC interrupt for ADC channels AN11 and AN10 */ SetPriorityIntSmpsADCPair5(adc_intp_priority); }
void InitializeA36613(void) { //Timer setup T3CON = T3CON_VALUE; PR3 = PR3_VALUE_10_MILLISECONDS; _T3IF = 0; DisableIntT3; T1CON = T1CON_VALUE; PR1 = PR1_VALUE_10_US; _T1IF = 0; DisableIntT1; //init global variables global_data_A36613.heater_set_voltage = 0x0000; global_data_A36613.top1_set_voltage = 0; //2V from DAC global_data_A36613.top2_set_voltage = 0; //2V from DAC global_data_A36613.top1_voltage_monitor = 0x0000; global_data_A36613.top2_voltage_monitor = 0x0000; global_data_A36613.top1_voltage_feedback = 0; global_data_A36613.top2_voltage_feedback = 0; global_data_A36613.bias_feedback = 0x0000; global_data_A36613.status = 0x80; PIN_LED_OPERATIONAL_GREEN = 0; //set tris TRISB = A36613_TRISB_VALUE; TRISC = A36613_TRISC_VALUE; TRISD = A36613_TRISD_VALUE; TRISE = A36613_TRISE_VALUE; TRISF = A36613_TRISF_VALUE; TRISG = A36613_TRISG_VALUE; //init PWM OpenSmpsPWM(PWM_MOD_DIS | PWM_IDLE_CONT | PWM_SEVT_INT_DIS | PWM_PER_UPDATE_BOUND, PWM_PERIOD, INITIAL_PWM_DC, 0x0000); //PWM off, no sync, continue during idle, no sepecial event trigger, update DC on next cycle ConfigSmpsPWMInputClkDiv(PWM_INPUT_CLK_DIV1); //Select PWM prescaler of 1:2 ConfigSmpsPWM1(PWM1_D_CYLE_MDC | PWM1_DT_DIS, PWM1_H_PIN_GPIO | PWM1_L_PIN_EN | PWM1_IO_PIN_PAIR_RED, 0x0000, 0x0000, 0x0000 ); //Master Duty Cycle selection; Dead time function disabled; No interrupts; Use master time base; redundant pai //Heater_PID.abcCoefficients = &abcCoefficient[0]; /*Set up pointer to derived coefficients */ //Heater_PID.controlHistory = &controlHistory[0]; /*Set up pointer to controller history samples */ //PIDCoeffCalc( &kCoeffs[0], &Heater_PID); //PIDInit( &Heater_PID); ETMAnalogInitializeInput(&Heater_output_voltage, HEATER_VOLTAGE_SCALING_FACTOR, OFFSET_ZERO, ANALOG_INPUT_NO_CALIBRATION, HEATER_OVERVOLTAGE_TRIP, HEATER_UNDERVOLTAGE_TRIP, NO_TRIP_SCALE, NO_FLOOR, NO_RELATIVE_COUNTER, ABSOLUTE_TRIP_COUNTER); ETMAnalogInitializeInput(&Heater1_current, HEATER_CURRENT_SCALING_FACTOR, OFFSET_ZERO, ANALOG_INPUT_NO_CALIBRATION, HEATER_OVERCURRENT_TRIP, HEATER_UNDERCURRENT_TRIP, NO_TRIP_SCALE, NO_FLOOR, NO_RELATIVE_COUNTER, ABSOLUTE_TRIP_COUNTER); ETMAnalogInitializeInput(&Heater2_current, HEATER_CURRENT_SCALING_FACTOR, OFFSET_ZERO, ANALOG_INPUT_NO_CALIBRATION, HEATER_OVERCURRENT_TRIP, HEATER_UNDERCURRENT_TRIP, NO_TRIP_SCALE, NO_FLOOR, NO_RELATIVE_COUNTER, ABSOLUTE_TRIP_COUNTER); SetupLTC265X(&U4_LTC2654, ETM_SPI_PORT_2, FCY_CLK, LTC265X_SPI_2_5_M_BIT, _PIN_RE6, _PIN_RE7); InitializeA36613Serial(); // ---- Configure the ADC Module ------------ // ADCON = ADCON_SETTING; // Configure the high speed ADC module based on H file parameters ADPCFG = ADPCFG_SETTING; // Set which pins are analog and which are digital I/O ADCPC0 = ADCPC0_SETTING; // Set trigger and enable each channel ADCPC1 = ADCPC1_SETTING; // Set trigger and enable each channel ADCPC2 = ADCPC2_SETTING; // Set trigger and enable each channel ClearSmpsADCIntPair0(); ClearSmpsADCIntPair1(); ClearSmpsADCIntPair2(); ClearSmpsADCIntPair3(); ClearSmpsADCIntPair4(); ClearSmpsADCIntPair5(); _ADCP0IE = 1; _ADCP1IE = 1; _ADCP2IE = 1; _ADCP3IE = 1; _ADCP4IE = 1; _ADCP5IE = 1; _ADCP0IP = 2; _ADCP1IP = 2; _ADCP2IP = 2; _ADCP3IP = 2; _ADCP4IP = 2; _ADCP5IP = 2; top1_voltage_monitor_accumulator = 0; top1_voltage_accumulator_size = 0; top2_voltage_monitor_accumulator = 0; top1_voltage_feedback_accumulator = 0; top1_fdbk_voltage_accumulator_size = 0; top2_voltage_feedback_accumulator = 0; top2_fdbk_voltage_accumulator_size = 0; bias_feedback_accumulator = 0; heater_reset_counter = 0; _ADON = 1; //Turn ADC on }