//************************************************************************************
//**  
//**  Source name:   E:\Flowcode\V10\2025\Test18F15Q41\Test18F15Q41.fcfx
//**  Title:         
//**  Description:   
//**  Device:        PIC.18F.18F15Q41
//**  
//**  Generated by:  Flowcode v10.1.2.40
//**  Date:          Wednesday, March 12, 2025 10:23:46
//**  Users:         1
//**  Registriert für: DirkB (39503461)
//**  Lizenzschlüssel:RA0JM6
//**  
//**  
//**  https://www.flowcode.co.uk
//**  
//************************************************************************************


#define MX_PIC

#define MX_CAL_PIC

#define MX_CLK_SPEED 64000000

#define FCP_NULL Unconnected_Port

//Missing TRISE workaround
unsigned char TRISE;

#define MX_PWM_NEW_TMR_CONF2
#define MX_PWM_ALTTIMER 1

#define MX_EE_DFM_Address 0x310000
#include <xc.h>
#include <math.h>
//Chip Configuration Settings
__PROG_CONFIG(0x1, 0xD78A);
__PROG_CONFIG(0x2, 0xE5FD);
__PROG_CONFIG(0x3, 0xFF80);
__PROG_CONFIG(0x4, 0xDF7F);
__PROG_CONFIG(0x5, 0xFFFE);

/*========================================================================*\
   Use :Mit Typdefinitionen
\*========================================================================*/
#include "C:\ProgramData\MatrixTSL\FlowcodeV10\CAL\internals.c"



MX_UINT8 FCLV_LOOP1;
MX_UINT8 FCLV_LOOP2;
MX_UINT32 FCLV_LOOP3;
MX_UINT32 FCLV_LOOP4;


/*========================================================================*\
   Use :TypeConversionsFree1
       :Deklarationen zur Makrofunktion
\*========================================================================*/

/*=----------------------------------------------------------------------=*\
   Use :TypeConversionsFree1
       :Ergänzende Definitionen
\*=----------------------------------------------------------------------=*/

#ifndef MX_UNIONTYPE
 #define MX_UNIONTYPE
 typedef union
{
  MX_FLOAT AsFloat;
  MX_UINT32 AsLong;
  MX_UINT16 AsInt[2];
  MX_UINT8  AsByte[4];
} MX_Union_Type;
 MX_Union_Type MX_Conv_Var;
#endif


void FCD_02571_TypeConversionsFree1__SetInt(MX_UINT8 FCL_INDEX, MX_UINT16 FCL_VALUE);
void FCD_02571_TypeConversionsFree1__SetLong(MX_UINT32 FCL_VALUE);
MX_FLOAT FCD_02571_TypeConversionsFree1__GetFloat();
MX_UINT32 FCD_02571_TypeConversionsFree1__GetLong();
MX_UINT16 FCD_02571_TypeConversionsFree1__GetInt(MX_UINT8 FCL_INDEX);
void FCD_02571_TypeConversionsFree1__SetByte(MX_UINT8 FCL_INDEX, MX_UINT8 FCL_VALUE);
MX_UINT8 FCD_02571_TypeConversionsFree1__GetByte(MX_UINT8 FCL_INDEX);
void FCD_02571_TypeConversionsFree1__SetFloat(MX_FLOAT FCL_VALUE);

/*========================================================================*\
   Use :cal_uart
       :Deklarationen zur Makrofunktion
\*========================================================================*/
#define MX_UART_UseTX_1 (1)
#define MX_UART_TX_TRIS_1 trisa
#define MX_UART_REF1 
#define MX_UART_RTS_PIN_1 (3)
#define MX_UART_DBITS_1 (8)
#define MX_UART_RETURN_1 (1)
#define MX_UART_RX_PORT_1 portb
#define MX_UART_RTS_PORT_1 porta
#define MX_UART_ECHO_1 (0)
#define MX_UART_FLOWEN_1 (0)
#define MX_UART_CTS_PORT_1 porta
#define MX_UART_TX_PIN_1 (1)
#define MX_UART_RX_TRIS_1 trisb
#define MX_UART_BAUD_1 (31250)
#define MX_UART_RTS_TRIS_1 trisa
#define MX_UART_TX_PORT_1 porta
#define MX_UART_RX_PIN_1 (5)
#define MX_UART_UseRX_1 (1)
#define MX_UART_CTS_TRIS_1 trisa
#define MX_UART_CHANNEL_1 (1)
#define MX_UART_INT_1 (0)
#define MX_UART_CTS_PIN_1 (2)


/*=----------------------------------------------------------------------=*\
   Use :cal_uart
       :Ergänzende Definitionen
\*=----------------------------------------------------------------------=*/
#define MX_UART_1_REMAPPABLE
#define MX_UART_1_TX_RPOR RA1PPS
#define MX_UART_1_TX_UTX 16
#define MX_UART_1_RX_RPINR U1RXPPS
#define MX_UART_1_RX_RP 13

MX_UINT8 FCD_05481_cal_uart__ControlPin(MX_UINT8 FCL_PIN, MX_UINT8 FCL_STATE);
void FCD_05481_cal_uart__SendString(MX_CHAR *FCL_DATA, MX_UINT16 FCLsz_DATA);
void FCD_05481_cal_uart__Prv_TextConsole(MX_CHAR *FCL_STR, MX_UINT16 FCLsz_STR, MX_UINT8 FCL_COLOUR);
void FC_CAL_UART_UpdateBaud_1(MX_UINT8 FCL_NEW_BAUD);
MX_UINT8 FCD_05481_cal_uart__TestProperty(MX_UINT8 FCL_PROPERTY);
void FCD_05481_cal_uart__SendNumber(MX_SINT32 FCL_NUMBER);
void FCD_05481_cal_uart__Prv_SimShowWaveform(MX_UINT8 FCL_TXRX, MX_UINT16 FCL_DATA);
MX_SINT16 FC_CAL_UART_Receive_1(MX_UINT8 FCL_TIMEOUT);
void FC_CAL_UART_Send_1(MX_UINT16 FCL_CHAR);
void FCD_05481_cal_uart__SendByteArray(MX_UINT8 *FCL_DATA, MX_UINT16 FCLsz_DATA, MX_UINT16 FCL_NUMBYTES);
void FC_CAL_UART_Init_1();
void FC_CAL_UART_Delay_1();
void FC_CAL_UART_Uninit_1();
MX_UINT8 FCD_05481_cal_uart__ReceiveByteArray(MX_UINT8 *FCL_DATA, MX_UINT16 FCLsz_DATA, MX_UINT16 FCL_NUMBYTES, MX_UINT8 FCL_TIMEOUT);
MX_UINT8 FCD_05481_cal_uart__ReceiveString(MX_CHAR *FCL_STRINGDATA, MX_UINT16 FCLsz_STRINGDATA, MX_UINT16 FCL_NUMBYTES, MX_UINT8 FCL_TIMEOUT);
void FCD_05991_MIDI1__SendMIDI(MX_UINT8 FCL_STATUS, MX_UINT8 FCL_DATA1, MX_UINT8 FCL_DATA2);
void FCD_05991_MIDI1__SendPitchChange(MX_UINT8 FCL_CHANNEL, MX_UINT16 FCL_PITCH_CHANGE);
void FCD_05991_MIDI1__SendNoteOff(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_NOTE, MX_UINT8 FCL_VELOCITY);
void FCD_05991_MIDI1__SendControl(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_CONTROLLER, MX_UINT8 FCL_VALUE);
void FCD_05991_MIDI1__SendNoteOn(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_NOTE, MX_UINT8 FCL_VELOCITY);
MX_UINT8 FCD_05991_MIDI1__ReceiveMIDI(MX_UINT8 FCL_TIMEOUT);
void FCD_05991_MIDI1__SendPolyPressure(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_NOTE, MX_UINT8 FCL_PRESSURE);
MX_UINT8 FCD_05991_MIDI1__ReadData(MX_UINT8 FCL_IDX);
void FCD_05991_MIDI1__SendPatch(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_INSTRUMENT);
void FCD_05991_MIDI1__SendChannelPressure(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_PRESSURE);
void FCD_05991_MIDI1__Initialise();

/*========================================================================*\
   Use :cal_adc
       :Deklarationen zur Makrofunktion
\*========================================================================*/
#define MX_ADC_REF1 
#define MX_ADC_TYPE_40 
#define MX_ADC_BITS_12 
#define MX_ADC_CHANNEL_0 


/*=----------------------------------------------------------------------=*\
   Use :cal_adc
       :Ergänzende Definitionen
\*=----------------------------------------------------------------------=*/
#define FC_ADC_Enable_1 FC_CAL_ADC_Enable_1
#define FC_ADC_Disable_1 FC_CAL_ADC_Disable_1
#define FC_ADC_Sample_1 FC_CAL_ADC_Sample_1

void FC_ADC_Disable_1();
void FC_ADC_Enable_1(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_CONV_SPEED, MX_UINT8 FCL_VREF, MX_UINT8 FCL_T_CHARGE);
MX_UINT16 FC_ADC_Sample_1(MX_UINT8 FCL_SAMPLE_MODE);
MX_UINT16 FCD_0cc51_adc_base1__RawSampleInt();
MX_UINT8 FCD_0cc51_adc_base1__RawAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
void FCD_0cc51_adc_base1__GetString(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL);
MX_UINT8 FCD_0cc51_adc_base1__GetAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_SINT16 FCD_0cc51_adc_base1__RawAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_UINT16 FCD_0cc51_adc_base1__GetAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_FLOAT FCD_0cc51_adc_base1__GetVoltage();
void FCD_0cc51_adc_base1__RawEnable();
MX_UINT8 FCD_0cc51_adc_base1__RawSampleByte();
MX_UINT16 FCD_0cc51_adc_base1__GetInt();
void FCD_0cc51_adc_base1__RawDisable();
MX_UINT8 FCD_0cc51_adc_base1__GetByte();
MX_UINT32 FCD_0c431_MapFunction1__MapUlong(MX_UINT32 FCL_VALUE, MX_UINT32 FCL_INMIN, MX_UINT32 FCL_INMAX, MX_UINT32 FCL_OUTMIN, MX_UINT32 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_SINT16 FCD_0c431_MapFunction1__MapInt(MX_SINT16 FCL_VALUE, MX_SINT16 FCL_INMIN, MX_SINT16 FCL_INMAX, MX_SINT16 FCL_OUTMIN, MX_SINT16 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_FLOAT FCD_0c431_MapFunction1__MapFloat(MX_FLOAT FCL_VALUE, MX_FLOAT FCL_INMIN, MX_FLOAT FCL_INMAX, MX_FLOAT FCL_OUTMIN, MX_FLOAT FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_SINT32 FCD_0c431_MapFunction1__MapLong(MX_SINT32 FCL_VALUE, MX_SINT32 FCL_INMIN, MX_SINT32 FCL_INMAX, MX_SINT32 FCL_OUTMIN, MX_SINT32 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_UINT16 FCD_0c431_MapFunction1__MapUInt(MX_UINT16 FCL_VALUE, MX_UINT16 FCL_INMIN, MX_UINT16 FCL_INMAX, MX_UINT16 FCL_OUTMIN, MX_UINT16 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_UINT8 FCD_0c431_MapFunction1__MapByte(MX_UINT8 FCL_VALUE, MX_UINT8 FCL_INMIN, MX_UINT8 FCL_INMAX, MX_UINT8 FCL_OUTMIN, MX_UINT8 FCL_OUTMAX, MX_BOOL FCL_CLAMPMINMAX);
MX_BOOL FCD_0b4c1_IsSim1__Check();

/*========================================================================*\
   Use :cal_pwm
       :Deklarationen zur Makrofunktion
\*========================================================================*/
#define MX_PWM_PRESCALE1 (1)
#define MX_PWM_PIN_1 (5)
#define MX_PWM_TYPE_1 (0)
#define MX_PWM_PORT_1 PORTA
#define MX_PWM_TRIS_1 TRISA
#define MX_PWM_CHANNEL_1 (1)


/*=----------------------------------------------------------------------=*\
   Use :cal_pwm
       :Ergänzende Definitionen
\*=----------------------------------------------------------------------=*/
#define MX_PWM
#define MX_PWM_REF1

#define MX_PWM_FREQ_1  62500
#define MX_PWM_REMAPPABLE
#define MX_PWM_RPOR_1 RA5PPS
#define MX_PWM_RPOC_1 9
#define MX_PWM_TMR_1 2

void FC_CAL_PWM_ChangePeriod_1(MX_UINT16 FCL_PERIOD, MX_UINT16 FCL_PRESCALER);
void FC_CAL_PWM_Disable_1();
void FC_CAL_PWM_SetDuty8Bit_1(MX_UINT8 FCL_DUTY);
void FC_CAL_PWM_Enable_1();
void FC_CAL_PWM_ChangeFrequency_1(MX_UINT32 FCL_FREQUENCY);
void FC_CAL_PWM_SetDuty10Bit_1(MX_UINT16 FCL_DUTY);
void FC_CAL_PWM_SetDutyFloat_1(MX_FLOAT FCL_DUTY);
void FCD_0df41_PWM1__ChangePeriod(MX_UINT16 FCL_PERIOD, MX_SINT16 FCL_PRESCALER);
void FCD_0df41_PWM1__Disable();
void FCD_0df41_PWM1__SetDutyCycle(MX_UINT8 FCL_DUTY);
void FCD_0df41_PWM1__Enable();
void FCD_0df41_PWM1__SetFrequency(MX_UINT32 FCL_FREQUENCY);
void FCD_0df41_PWM1__SetDutyCycle10Bit(MX_UINT16 FCL_DUTY);

/*========================================================================*\
   Use :Mit Chip Adaption Layer
\*========================================================================*/
#include "C:\ProgramData\MatrixTSL\FlowcodeV10\CAL\includes.c"

