Files
TX/source/psu_ctrl.c

91 lines
1.4 KiB
C
Raw Normal View History

/*
* psu_ctrl.c
*
* Created on: Mar 16, 2023
* Author: Keith.Lloyd
*/
#include "psu_ctrl.h"
#include "arm_math.h"
#include "fsl_gpio.h"
#include "spi.h"
#include "mode.h"
#include "amps.h"
#include "frq.h"
#include "adc.h"
#include "timer.h"
#include "utils.h"
2025-06-11 10:55:00 -05:00
#include "System/system.h"
#include <stdbool.h>
#include <stdint.h>
uint8_t PSU_Val_Limit;
uint8_t Psu_Pot_Val[2]; // 2 byte Data for SPI
extern uint8_t frequency;
uint8_t mode,psu_index;
extern uint8_t Power_Level;
uint8_t Psu_Pot_Data[5] = {V_18V,V_24V,V_27V,V_36V,V_55V}; // PSU Pot values.
2025-06-11 10:55:00 -05:00
extern SYSTEM_DATA_t sys;
void Set_PSU_Voltage(uint8_t value)
{
Psu_Pot_Val[0] = 0x0;
Psu_Pot_Val[1] = value;
Get_Max_PSU_Limit(); // Get the maximum limit to compare to for each frequency or mode
if (Psu_Pot_Val[1] > PSU_Val_Limit)
Psu_Pot_Val[1] = PSU_Val_Limit;
SPI0_SendBytes(Psu_Pot_Val, 2, PSU_VCTRL); // Update the Pot
}
void Get_Max_PSU_Limit(void) // Set up Maximum voltage for PSU
{
if (freqArray[frequency].frequency1 > MAX_DTYPE)
PSU_Val_Limit = MAX_AB_PSU;
else
PSU_Val_Limit = MAX_D_PSU;
if (mode == BROADCAST)
PSU_Val_Limit = MAX_BCAST_PSU;
if((Check_For_Clamp()))
PSU_Val_Limit = MAX_CLAMP_PSU;
}
bool Wait_For_Psu(float32_t volt_limit)
{
uint16_t escape_count;
escape_count = 350;
2025-06-11 10:55:00 -05:00
while(sys.adc.V_PSU > volt_limit && escape_count > 0 )
{
Delay_Ticks(1);
escape_count--;
}
if(escape_count > 0)
return(true);
else
return(false);
}