initial check in based on SVN revision 575
This commit is contained in:
158
source/taps.c
Normal file
158
source/taps.c
Normal file
@@ -0,0 +1,158 @@
|
||||
/*
|
||||
* taps.c
|
||||
*
|
||||
* Created on: Mar 16, 2023
|
||||
* Author: Keith.Lloyd
|
||||
*/
|
||||
#include "arm_math.h"
|
||||
#include "fsl_gpio.h"
|
||||
#include "spi.h"
|
||||
|
||||
#include "taps.h"
|
||||
#include "display.h"
|
||||
#include "ports.h"
|
||||
#include "mode.h"
|
||||
#include "frq.h"
|
||||
#include "amps.h"
|
||||
#include "adc.h"
|
||||
#include "utils.h"
|
||||
|
||||
extern ADC_t adc;
|
||||
extern uint8_t Port_State[];
|
||||
extern uint8_t Cur_Mode,Test_Mode;
|
||||
extern uint32_t new_freq;
|
||||
extern float32_t Ohms;
|
||||
extern uint16_t Taps_adjust_timer;
|
||||
extern uint8_t frequency;
|
||||
extern FREQUENCY_t freqArray[FREQ_MAX_NUM];
|
||||
float32_t last_Ohms;
|
||||
extern uint8_t Taps_Flag;
|
||||
void Check_Taps(void)
|
||||
{
|
||||
Taps_adjust_timer = DELAY_ONE_SECOND;
|
||||
|
||||
if(Cur_Mode != BROADCAST)
|
||||
{
|
||||
if (new_freq <= MAX_DTYPE)
|
||||
Set_taps_LF();
|
||||
else
|
||||
// Set_taps_HF();
|
||||
Set_taps_LF();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Set_taps_LF(void) // D' Type Amplifier
|
||||
{
|
||||
uint16_t New_Ohms;
|
||||
|
||||
if((!Taps_Flag) && (!Check_For_Clamp()))
|
||||
|
||||
// if((!Test_Mode && (ACCY_GetConnectedAccessory(1) != ID_CLAMP) && (ACCY_GetConnectedAccessory(2) != ID_CLAMP)))
|
||||
{
|
||||
if(!Taps_Flag)
|
||||
{
|
||||
Port_State[BOTTOM_SR] &= TAPS_OFF_MASK;
|
||||
New_Ohms = (adc.Ohms_slowfilt);
|
||||
|
||||
switch (New_Ohms)
|
||||
{
|
||||
|
||||
case 0 ... 25:
|
||||
Port_State[BOTTOM_SR] |= TAP1_LF_ON;
|
||||
break;
|
||||
|
||||
case 26 ... 50:
|
||||
if (freqArray[frequency].frequency1 <= 8192)
|
||||
Port_State[BOTTOM_SR] |= TAP2_LF_ON;
|
||||
else
|
||||
Port_State[BOTTOM_SR] |= TAP1_LF_ON; // v1.7 = TAP1 1.7X TAP2
|
||||
break;
|
||||
|
||||
case 51 ... 250:
|
||||
if (freqArray[frequency].frequency1 <= 29430) // 9820
|
||||
Port_State[BOTTOM_SR] |= TAP3_LF_ON;//3
|
||||
if (freqArray[frequency].frequency1 >= 29430 && freqArray[frequency].frequency1 <= MAX_DTYPE)
|
||||
Port_State[BOTTOM_SR] |= TAP2_LF_ON; //1,2
|
||||
else
|
||||
if(freqArray[frequency].frequency1 >= MAX_DTYPE)
|
||||
Port_State[BOTTOM_SR] |= TAP2_LF_ON;
|
||||
break;
|
||||
|
||||
case 251 ... 500:
|
||||
if (freqArray[frequency].frequency1 >= 29430 && freqArray[frequency].frequency1 <= MAX_DTYPE)
|
||||
Port_State[BOTTOM_SR] |= TAP2_LF_ON;
|
||||
else
|
||||
Port_State[BOTTOM_SR] |= TAP4_LF_ON;
|
||||
break;
|
||||
|
||||
case 501 ... 1000:
|
||||
if (freqArray[frequency].frequency1 == MAX_DTYPE || freqArray[frequency].frequency1 < 512)
|
||||
Port_State[BOTTOM_SR] |= TAP3_LF_ON;
|
||||
else
|
||||
Port_State[BOTTOM_SR] |= TAP4_LF_ON; //4 1.7 =T3 1.7X =T4
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
Port_State[BOTTOM_SR] |= TAP4_LF_ON;
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
|
||||
SPI0_SendBytes(Port_State, 3, EXPANDER);
|
||||
|
||||
last_Ohms = adc.Ohms_slowfilt;
|
||||
Taps_Flag = true;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Port_State[BOTTOM_SR] &= TAPS_OFF_MASK;
|
||||
Port_State[BOTTOM_SR] |= TAP4_LF_ON; // Set TAPS to Fixed Test setting
|
||||
SPI0_SendBytes(Port_State, 3, EXPANDER);
|
||||
|
||||
}
|
||||
// Port_State[BOTTOM_SR] &= TAPS_OFF_MASK;
|
||||
// Port_State[BOTTOM_SR] |= TAP2_LF_ON; // force TAP 2 for new transformer test (remove later)
|
||||
// SPI0_SendBytes(Port_State, 3, EXPANDER);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Set_taps_HF(void) // AB Amplifier
|
||||
{
|
||||
if(Hys_Taps)
|
||||
{
|
||||
last_Ohms = adc.Ohms_slowfilt;
|
||||
|
||||
if(adc.Ohms_slowfilt < 200)
|
||||
|
||||
Port_State[MID_SR] &= TAP102_HF_OFF; // 1:1
|
||||
else
|
||||
Port_State[MID_SR] |= TAP102_HF_ON; // 1:5
|
||||
|
||||
SPI0_SendBytes(Port_State, 3, EXPANDER);
|
||||
}
|
||||
}
|
||||
|
||||
bool Hys_Taps(void) //Check for a +/-10% change in the impedance
|
||||
{
|
||||
float32_t test;
|
||||
|
||||
test = last_Ohms + last_Ohms/10;
|
||||
|
||||
if(adc.Ohms_slowfilt > test )
|
||||
return(true);
|
||||
|
||||
test = last_Ohms - last_Ohms/10;
|
||||
|
||||
if(adc.Ohms_slowfilt < test)
|
||||
return(true);
|
||||
else
|
||||
return(false);
|
||||
}
|
||||
Reference in New Issue
Block a user