Beruflich Dokumente
Kultur Dokumente
PRESENTADO POR:
JHON JAIRO FERNANDEZ MORALES
CODIGO: 1090376353
GRUPO: 299016_4
TUTOR:
SAULO ANDRES
#ifndef MX_ADC_REF //Inform CAL ADC extern void FC_CAL_Enable_ADC (MX_UINT8 Channel,
peripheral is now in use MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8
#define MX_ADC_REF T_Charge);
#endif extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8
Sample_Mode);
extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, extern void FC_CAL_Disable_ADC (void);
MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8
T_Charge);
extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8
Sample_Mode);
extern void FC_CAL_Disable_ADC (void); //ADC(1): //Macro function declarations
void FCD_ADC1_SampleADC();
MX_UINT8 FCD_ADC1_ReadAsByte();
MX_UINT16 FCD_ADC1_ReadAsInt();
//ADC(0): //Macro function declarations MX_FLOAT FCD_ADC1_ReadAsVoltage();
void FCD_ADC1_ReadAsString(MX_CHAR*
void FCD_ADC0_SampleADC(); FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE);
MX_UINT8 FCD_ADC0_ReadAsByte(); void FCD_ADC1_ADC_RAW_Configure_Channel();
MX_UINT16 FCD_ADC0_ReadAsInt(); MX_UINT8
MX_FLOAT FCD_ADC0_ReadAsVoltage(); FCD_ADC1_ADC_RAW_Sample_Channel_Byte();
void FCD_ADC0_ReadAsString(MX_CHAR* MX_UINT16
FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE); FCD_ADC1_ADC_RAW_Sample_Channel_Int();
void FCD_ADC0_ADC_RAW_Configure_Channel(); MX_UINT8
MX_UINT8 FCD_ADC1_ADC_RAW_Average_Channel_Byte(MX_UI
FCD_ADC0_ADC_RAW_Sample_Channel_Byte(); NT8 NumSamples, MX_UINT8 DelayUs);
MX_UINT16 MX_UINT16
FCD_ADC0_ADC_RAW_Sample_Channel_Int(); FCD_ADC1_ADC_RAW_Average_Channel_Int(MX_UIN
MX_UINT8 T8 NumSamples, MX_UINT8 DelayUs);
FCD_ADC0_ADC_RAW_Average_Channel_Byte(MX_UI void FCD_ADC1_ADC_RAW_Disable_Channel();
NT8 NumSamples, MX_UINT8 DelayUs);
MX_UINT16
FCD_ADC0_ADC_RAW_Average_Channel_Int(MX_UIN //ADC(2): //Defines:
T8 NumSamples, MX_UINT8 DelayUs);
void FCD_ADC0_ADC_RAW_Disable_Channel(); /**** Macro Substitutions ****
a = Unique Reference
b = Which ADC Channel
//ADC(1): //Defines: c = Acquisition time
d = Conversion Speed
/**** Macro Substitutions **** e = VRef+ Option
a = Unique Reference f = VRef Voltage x 0.01V
b = Which ADC Channel ******************************/
c = Acquisition time
d = Conversion Speed //Common Defines
e = VRef+ Option
f = VRef Voltage x 0.01V #define ADC_7_MX_ADC_CHANNEL 2
******************************/ #define ADC_7_MX_ADC_ACTIME 40
#define ADC_7_MX_ADC_CONVSP 3
//Common Defines #define ADC_7_MX_ADC_VREFOP 0
#define ADC_7_MX_ADC_VREFVOL 500
#define ADC_2_MX_ADC_CHANNEL 1
#define ADC_2_MX_ADC_ACTIME 40 #ifndef MX_ADC_CHANNEL_2
#define ADC_2_MX_ADC_CONVSP 3
#define MX_ADC_CHANNEL_2 //Inform CAL #ifndef MX_ADC_REF //Inform CAL ADC
ADC channel 2 is now in use. peripheral is now in use
#endif #define MX_ADC_REF
#endif
#ifndef MX_ADC_REF //Inform CAL ADC
peripheral is now in use extern void FC_CAL_Enable_ADC (MX_UINT8 Channel,
#define MX_ADC_REF MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8
#endif T_Charge);
extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8
extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, Sample_Mode);
MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8 extern void FC_CAL_Disable_ADC (void);
T_Charge);
extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8
Sample_Mode);
extern void FC_CAL_Disable_ADC (void);
//ADC(3): //Macro function declarations
void FCD_ADC3_SampleADC();
MX_UINT8 FCD_ADC3_ReadAsByte();
//ADC(2): //Macro function declarations MX_UINT16 FCD_ADC3_ReadAsInt();
MX_FLOAT FCD_ADC3_ReadAsVoltage();
void FCD_ADC2_SampleADC(); void FCD_ADC3_ReadAsString(MX_CHAR*
MX_UINT8 FCD_ADC2_ReadAsByte(); FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE);
MX_UINT16 FCD_ADC2_ReadAsInt(); void FCD_ADC3_ADC_RAW_Configure_Channel();
MX_FLOAT FCD_ADC2_ReadAsVoltage(); MX_UINT8
void FCD_ADC2_ReadAsString(MX_CHAR* FCD_ADC3_ADC_RAW_Sample_Channel_Byte();
FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE); MX_UINT16
void FCD_ADC2_ADC_RAW_Configure_Channel(); FCD_ADC3_ADC_RAW_Sample_Channel_Int();
MX_UINT8 MX_UINT8
FCD_ADC2_ADC_RAW_Sample_Channel_Byte(); FCD_ADC3_ADC_RAW_Average_Channel_Byte(MX_UI
MX_UINT16 NT8 NumSamples, MX_UINT8 DelayUs);
FCD_ADC2_ADC_RAW_Sample_Channel_Int(); MX_UINT16
MX_UINT8 FCD_ADC3_ADC_RAW_Average_Channel_Int(MX_UIN
FCD_ADC2_ADC_RAW_Average_Channel_Byte(MX_UI T8 NumSamples, MX_UINT8 DelayUs);
NT8 NumSamples, MX_UINT8 DelayUs); void FCD_ADC3_ADC_RAW_Disable_Channel();
MX_UINT16
FCD_ADC2_ADC_RAW_Average_Channel_Int(MX_UIN
T8 NumSamples, MX_UINT8 DelayUs);
void FCD_ADC2_ADC_RAW_Disable_Channel(); //ADC(0): //Macro implementations
return (retVal);
fVperDiv = float32_mul(fVoltage, 0.00024414);
} //Convert actual voltage to voltage per division (VRef /
4096)
MX_UINT16 FCD_ADC0_ReadAsInt() #endif
{
fSample = float32_from_int32(iSample);
MX_UINT16 retVal; //Convert to floating point variable
fVoltage = float32_mul(fSample, fVperDiv);
//Configure & Enable ADC Channel //Calculate floating point voltage
FC_CAL_Enable_ADC (
ADC_1_MX_ADC_CHANNEL , return (fVoltage);
ADC_1_MX_ADC_CONVSP ,
ADC_1_MX_ADC_VREFOP , }
ADC_1_MX_ADC_ACTIME );
void FCD_ADC0_ReadAsString(MX_CHAR*
retVal = FC_CAL_Sample_ADC( 1 ); FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE)
//Perform Sample - Return as MX_UINT16 {
//Configure & Enable ADC Channel //Configure & Enable ADC Channel
FC_CAL_Enable_ADC ( FC_CAL_Enable_ADC (
ADC_1_MX_ADC_CHANNEL , ADC_1_MX_ADC_CHANNEL ,
ADC_1_MX_ADC_CONVSP , ADC_1_MX_ADC_CONVSP ,
ADC_1_MX_ADC_VREFOP , ADC_1_MX_ADC_VREFOP ,
ADC_1_MX_ADC_ACTIME ); ADC_1_MX_ADC_ACTIME );
#ifdef MX_ADC_BITS_8 }
iSample = FC_CAL_Sample_ADC( 0 );
//Perform Sample - Return as byte MX_UINT8
#else FCD_ADC0_ADC_RAW_Sample_Channel_Byte()
iSample = FC_CAL_Sample_ADC( 1 ); {
//Perform Sample - Return as MX_UINT16
#endif return FC_CAL_Sample_ADC( 0 );
//Perform Sample - Return as byte
FC_CAL_Disable_ADC ();
//Switch off ADC peripheral }
fVoltage = float32_from_int32(
ADC_1_MX_ADC_VREFVOL ); //Convert MX_UINT16
reference voltage count to floating point (0 - 500 x 10mV) FCD_ADC0_ADC_RAW_Sample_Channel_Int()
fVoltage = float32_mul(fVoltage, 0.01); {
//Convert reference voltage count to actual voltage (0 - 5)
return FC_CAL_Sample_ADC( 1 );
#ifdef MX_ADC_BITS_8 //Perform Sample - Return as MX_UINT16
fVperDiv = float32_mul(fVoltage, 0.00390625);
//Convert actual voltage to voltage per division (VRef / }
256)
#endif MX_UINT8
#ifdef MX_ADC_BITS_10 FCD_ADC0_ADC_RAW_Average_Channel_Byte(MX_UI
fVperDiv = float32_mul(fVoltage, 0.000976); NT8 NumSamples, MX_UINT8 DelayUs)
//Convert actual voltage to voltage per division (VRef / {
1024)
#endif MX_UINT32 average = 0;
#ifdef MX_ADC_BITS_12 MX_UINT8 count;
} }
#ifdef MX_ADC_BITS_8
//ADC(1): //Macro implementations iSample = FC_CAL_Sample_ADC( 0 );
//Perform Sample - Return as byte
#else
void FCD_ADC1_SampleADC() iSample = FC_CAL_Sample_ADC( 1 );
{ //Perform Sample - Return as MX_UINT16
#endif
//unused
FC_CAL_Disable_ADC ();
} //Switch off ADC peripheral
fVoltage = float32_from_int32(
MX_UINT8 FCD_ADC1_ReadAsByte() ADC_2_MX_ADC_VREFVOL ); //Convert
{ reference voltage count to floating point (0 - 500 x 10mV)
fVoltage = float32_mul(fVoltage, 0.01);
MX_UINT8 retVal; //Convert reference voltage count to actual voltage (0 - 5)
} }
MX_UINT16
FCD_ADC1_ADC_RAW_Sample_Channel_Int()
{ //ADC(2): //Macro implementations
return FC_CAL_Sample_ADC( 1 );
//Perform Sample - Return as MX_UINT16 void FCD_ADC2_SampleADC()
{
}
//unused
FC_CAL_Disable_ADC ();
} //Switch off ADC peripheral
fVoltage = float32_from_int32(
MX_UINT8 FCD_ADC2_ReadAsByte() ADC_7_MX_ADC_VREFVOL ); //Convert
{ reference voltage count to floating point (0 - 500 x 10mV)
fVoltage = float32_mul(fVoltage, 0.01);
MX_UINT8 retVal; //Convert reference voltage count to actual voltage (0 - 5)
MX_UINT16
FCD_ADC2_ADC_RAW_Sample_Channel_Int() //ADC(3): //Macro implementations
{
} //unused
MX_UINT8 }
FCD_ADC2_ADC_RAW_Average_Channel_Byte(MX_UI
NT8 NumSamples, MX_UINT8 DelayUs) MX_UINT8 FCD_ADC3_ReadAsByte()
{ {
} MX_UINT16 iSample;
MX_FLOAT fSample, fVoltage, fVperDiv;
void FCD_ADC2_ADC_RAW_Disable_Channel()
{ //Configure & Enable ADC Channel
FC_CAL_Enable_ADC (
FC_CAL_Disable_ADC (); ADC_8_MX_ADC_CHANNEL ,
//Disable ADC Channel ADC_8_MX_ADC_CONVSP ,
ADC_8_MX_ADC_VREFOP ,
ADC_8_MX_ADC_ACTIME ); }
#ifdef MX_ADC_BITS_8 }
fVperDiv = float32_mul(fVoltage, 0.00390625);
//Convert actual voltage to voltage per division (VRef / MX_UINT8
256) FCD_ADC3_ADC_RAW_Average_Channel_Byte(MX_UI
#endif NT8 NumSamples, MX_UINT8 DelayUs)
#ifdef MX_ADC_BITS_10 {
fVperDiv = float32_mul(fVoltage, 0.000976);
//Convert actual voltage to voltage per division (VRef / MX_UINT32 average = 0;
1024) MX_UINT8 count;
#endif
#ifdef MX_ADC_BITS_12 for (count=0; count<NumSamples; count++)
fVperDiv = float32_mul(fVoltage, 0.00024414); {
//Convert actual voltage to voltage per division (VRef / average = average + FC_CAL_Sample_ADC( 0 );
4096) //Perform Sample - Return as byte - add to average
#endif
if (DelayUs)
fSample = float32_from_int32(iSample); delay_us(DelayUs); //If
//Convert to floating point variable delay is not 0 then pause between samples
fVoltage = float32_mul(fSample, fVperDiv); }
//Calculate floating point voltage average = average / count;
//Ingreso //Decisin
//Ingreso: B5 -> PMMP //Decisin: PMMN = 1?
trisb = trisb | 0x20; if (FCV_PMMN == 1)
FCV_PMMP = ((portb & 0x20) == 0x20); {
//Decisin //Clculo
//Decisin: PMMP = 1? //Clculo:
if (FCV_PMMP == 1) // Ton = fadd ((100),fmul (ADC1, (9800)))
{ // Ton1 = fmul (Ton,1)
FCV_TON = flt_add((100),
//Clculo flt_mul(FCV_ADC1, (9800)));
//Clculo: FCV_TON1 = flt_toi(flt_mul(FCV_TON,
// Ton = fadd ((100),fmul (ADC1, (9800))) 1));
// Ton1 = fmul (Ton,1)
FCV_TON = flt_add((100), //Clculo
flt_mul(FCV_ADC1, (9800))); //Clculo:
FCV_TON1 = flt_toi(flt_mul(FCV_TON, 1)); // Toff = fadd ((0.5),fmul (ADC2,3))
// Toff1 = fmul (Toff,10000)
//Clculo FCV_TOFF = flt_add((0.5),
//Clculo: flt_mul(FCV_ADC2, 3));
// Toff = fadd ((0.5),fmul (ADC2,3)) FCV_TOFF1 = flt_toi(flt_mul(FCV_TOFF,
// Toff1 = fmul (Toff,10000) 10000));
FCV_TOFF = flt_add((0.5),
flt_mul(FCV_ADC2, 3)); //Salida
FCV_TOFF1 = flt_toi(flt_mul(FCV_TOFF, //Salida: 0 -> C1
10000)); trisc = trisc & 0xFD;
if ((0))
//Salida portc = (portc & 0xFD) | 0x02;
//Salida: 0 -> C2 else
trisc = trisc & 0xFB; portc = portc & 0xFD;
if ((0))
portc = (portc & 0xFB) | 0x04; //Salida
else //Salida: 1 -> C2
portc = portc & 0xFB; trisc = trisc & 0xFB;
if ((1))
//Salida portc = (portc & 0xFB) | 0x04;
else FCV_TON1 = flt_toi(flt_mul(FCV_TON,
portc = portc & 0xFB; 1));
//Demora //Clculo
//Demora: Ton1 us //Clculo:
FCI_DELAYINT_US(FCV_TON1); // Toff = fadd ((0.5),fmul (ADC2,3))
// Toff1 = fmul (Toff,10000)
//Salida FCV_TOFF = flt_add((0.5),
//Salida: 0 -> C2 flt_mul(FCV_ADC2, 3));
trisc = trisc & 0xFB; FCV_TOFF1 =
if ((0)) flt_toi(flt_mul(FCV_TOFF, 10000));
portc = (portc & 0xFB) | 0x04;
else //Bucle
portc = portc & 0xFB; //Bucle: Mientras Ton21 < 0
while (1)
//Demora {
//Demora: Toff1 us
FCI_DELAYINT_US(FCV_TOFF1); //Salida
//Salida: 0 -> C2
} else { trisc = trisc & 0xFB;
if ((0))
//Ingreso portc = (portc & 0xFB) | 0x04;
//Ingreso: B1 -> TP else
trisb = trisb | 0x02; portc = portc & 0xFB;
FCV_TP = ((portb & 0x02) == 0x02);
//Salida
//Decisin //Salida: 1 -> C1
//Decisin: TP = 1? trisc = trisc & 0xFD;
if (FCV_TP == 1) if ((1))
{ portc = (portc & 0xFD) | 0x02;
else
//Llamar a Macro de Componente portc = portc & 0xFD;
//Llamar a Macro de Componente:
ADC3=LeerComoTensin() //Demora
FCV_ADC3 = //Demora: Ton1 us
FCD_ADC2_ReadAsVoltage(); FCI_DELAYINT_US(FCV_TON1);
//Clculo //Salida
//Clculo: //Salida: 0 -> C1
// Ton2 = fadd (1, (fmul (ADC3, (3.8)))) trisc = trisc & 0xFD;
// Ton21 = fmul (Ton2,1000000) if ((0))
FCV_TON2 = flt_add(1, portc = (portc & 0xFD) | 0x02;
(flt_mul(FCV_ADC3, (3.8)))); else
FCV_TON21 = portc = portc & 0xFD;
flt_toi(flt_mul(FCV_TON2, 1000000));
//Demora
//Llamar a Macro de Componente //Demora: Toff1 us
//Llamar a Macro de Componente: FCI_DELAYINT_US(FCV_TOFF1);
ADC1=LeerComoTensin()
FCV_ADC1 = //Clculo
FCD_ADC0_ReadAsVoltage(); //Clculo:
// Ton21 = (Ton21 - ((Ton1 + Toff1)))
//Llamar a Macro de Componente FCV_TON21 = (FCV_TON21 -
//Llamar a Macro de Componente: ((FCV_TON1 + FCV_TOFF1)));
ADC2=LeerComoTensin()
FCV_ADC2 =
FCD_ADC1_ReadAsVoltage(); if ((FCV_TON21 < 0) != 0) break;
}
//Clculo
//Clculo: //Llamar a Macro de Componente
// Ton = fadd ((100),fmul (ADC1, //Llamar a Macro de Componente:
(9800))) ADC4=LeerComoTensin()
// Ton1 = fmul (Ton,1) FCV_ADC4 =
FCV_TON = flt_add((100), FCD_ADC3_ReadAsVoltage();
flt_mul(FCV_ADC1, (9800)));
//Clculo
//Clculo: if ((1))
// Toff2 = fadd (1,fmul (ADC4, (7.8))) portc = (portc & 0xFB) | 0x04;
// Toff21 = fmul (Toff2,1000) else
FCV_TOFF2 = flt_add(1, portc = portc & 0xFB;
flt_mul(FCV_ADC4, (7.8)));
FCV_TOFF21 = //Demora
flt_toi(flt_mul(FCV_TOFF2, 1000)); //Demora: Ton1 ms
FCI_DELAYINT_MS(FCV_TON1);
//Demora
//Demora: Toff21 ms //Salida
FCI_DELAYINT_MS(FCV_TOFF21); //Salida: 0 -> C2
trisc = trisc & 0xFB;
} else { if ((0))
portc = (portc & 0xFB) | 0x04;
//Ingreso else
//Ingreso: B2 -> PB portc = portc & 0xFB;
trisb = trisb | 0x04;
FCV_PB = ((portb & 0x04) == 0x04); //Demora
//Demora: Toff1 ms
//Decisin FCI_DELAYINT_MS(FCV_TOFF1);
//Decisin: PB = 1?
if (FCV_PB == 1) //Clculo
{ //Clculo:
// ToffPB = fsub (Toff1,Ton1)
//Clculo FCV_TOFFPB =
//Clculo: flt_toi(flt_sub(flt_fromi(FCV_TOFF1),
// Ton = fadd ((0.05),fmul (ADC1, flt_fromi(FCV_TON1)));
(1999.9)))
// Ton1 = fmul (Ton,1) //Demora
FCV_TON = flt_add((0.05), //Demora: ToffPB ms
flt_mul(FCV_ADC1, (1999.9)));
FCV_TON1 = FCI_DELAYINT_MS(FCV_TOFFPB);
flt_toi(flt_mul(FCV_TON, 1));
// } else {
//Clculo
//Clculo: }
// Toff = fadd (1,fmul (ADC2,8))
// Toff1 = fmul (Toff,1000) }
FCV_TOFF = flt_add(1,
flt_mul(FCV_ADC2, 8));
FCV_TOFF1 = }
flt_toi(flt_mul(FCV_TOFF, 1000));
//Salida
}
//Salida: 1 -> C1
trisc = trisc & 0xFD;
if ((1))
portc = (portc & 0xFD) | 0x02; }
else
portc = portc & 0xFD;
//Demora }
//Demora: Ton1 ms
FCI_DELAYINT_MS(FCV_TON1);
//Salida
//Salida: 0 -> C1 }
trisc = trisc & 0xFD;
if ((0)) mainendloop: goto mainendloop;
portc = (portc & 0xFD) | 0x02;
else }
portc = portc & 0xFD;
void MX_INTERRUPT_MACRO(void)
//Salida
{
//Salida: 1 -> C2
trisc = trisc & 0xFB; }
CONCLUSIONES