//************************************************************************************
//**  
//**  Source name:   C:\Users\Uwe\Documents\Matrix\18F2550USB1.fcfx
//**  Title:         
//**  Description:   
//**  Device:        PIC.18F.18F2550
//**  
//**  Generated by:  Flowcode v11.0.0.8
//**  Date:          Wednesday, October 29, 2025 18:26:52
//**  Users:         1
//**  Registriert für: SpeedPIC32 (24146314)
//**  Lizenzschlüssel:MP62C5
//**  
//**  
//**  https://www.flowcode.co.uk
//**  
//************************************************************************************


#define MX_PIC

#define MX_CAL_PIC

#define MX_CLK_SPEED 48000000

#define FCP_NULL Unconnected_Port

//Missing TRISE workaround
unsigned char TRISE;
#include <xc.h>
#include <math.h>
//Chip Configuration Settings
__PROG_CONFIG(0x1, 0xFEFC);
__PROG_CONFIG(0x2, 0xFEFF);
__PROG_CONFIG(0x3, 0xF9FF);
__PROG_CONFIG(0x4, 0xFF9B);
__PROG_CONFIG(0x5, 0xFFFF);
__PROG_CONFIG(0x6, 0xFFFF);
__PROG_CONFIG(0x7, 0xFFFF);

/*========================================================================*\
   Use :Mit Typdefinitionen
\*========================================================================*/
#include "C:\ProgramData\MatrixTSL\FlowcodeV11\CAL\internals.c"





/*========================================================================*\
   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 :USB_Serial1
       :Deklarationen zur Makrofunktion
\*========================================================================*/
#define dev_name 40,3,'F',0,'l',0,'o',0,'w',0,'c',0,'o',0,'d',0,'e',0,' ',0,'U',0,'S',0,'B',0,' ',0,'S',0,'e',0,'r',0,'i',0,'a',0,'l',0
#define dev_name_count 40
#define dev_name_DS 'F','l','o','w','c','o','d','e',' ','U','S','B',' ','S','e','r','i','a','l'
#define dev_name_count_DS 19
#define MX_USB_TYPE1
#define MX_USB_SERIAL_ENUM_TOUT_1 10
#define RX_BUF_SZ (64)
#define MX_VID 4799
#define MX_USB_SERIAL_ENUM_RETURN_1 0
#define MX_USB_SERIAL_ENUM_TOUTEN_1 0
#define TX_BUF_SZ (64)
#define major_version 1
#define MX_PID 61456
#define dev_manufacturer 46,3,'M',0,'a',0,'t',0,'r',0,'i',0,'x',0,' ',0,'M',0,'u',0,'l',0,'t',0,'i',0,'m',0,'e',0,'d',0,'i',0,'a',0,' ',0,'L',0,'t',0,'d',0,'.',0
#define dev_manufacturer_count 46
#define dev_manufacturer_DS 'M','a','t','r','i','x',' ','M','u','l','t','i','m','e','d','i','a',' ','L','t','d','.'
#define dev_manufacturer_count_DS 22
#define minor_version 0


/*=----------------------------------------------------------------------=*\
   Use :USB_Serial1
       :Ergänzende Definitionen
\*=----------------------------------------------------------------------=*/
#define MX_VERSION ((major_version << 8) | minor_version)
#define MX_USB_SERIAL_REF1

MX_UINT8 FC_CAL_USB_Serial_SendString_1(MX_CHAR *FCL_DATA, MX_UINT16 FCLsz_DATA);
MX_UINT8 FCD_056e1_USB_Serial1__SendNumber(MX_SINT16 FCL_NUMBER);
void FC_CAL_USB_Serial_ReadString_1(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL, MX_UINT8 FCL_TIMEOUT_MS, MX_UINT8 FCL_LENGTH);
MX_UINT8 FC_CAL_USB_Serial_SendByte_1(MX_UINT8 FCL_DATA);
MX_UINT8 FC_CAL_USB_Serial_SendByteArray_1(MX_UINT8 *FCL_DATA, MX_UINT16 FCLsz_DATA, MX_UINT8 FCL_NUMBYTES);
MX_UINT16 FC_CAL_USB_Serial_ReadByte_1(MX_UINT8 FCL_TIMEOUT_MS);
MX_UINT8 FC_CAL_USB_Serial_Initialise_1();

/*========================================================================*\
   Use :Mit Chip Adaption Layer
\*========================================================================*/
#include "C:\ProgramData\MatrixTSL\FlowcodeV11\CAL\includes.c"


/*========================================================================*\
   Use :TypeConversionsFree1
       :GUID: 
       :Location: 
       :Version:  (0x0)
       :Timestamp: 
       :Deklarationen zu Variablen
       :Makro-Implementierungen
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Sets a single 16-bit INT value.
       :Index is in little endian, 0 is the LSW and 1 is the MSW
       :
       :Parameter f??r Makro SetInt:
       :  Index : Range: 0-1
       :  Value : Range: 0-65535
\*=----------------------------------------------------------------------=*/
void FCD_02571_TypeConversionsFree1__SetInt(MX_UINT8 FCL_INDEX, MX_UINT16 FCL_VALUE)
{

  if (FCL_INDEX < 2)
  {  

    // C Code
    MX_Conv_Var.AsInt[FCL_INDEX] = FCL_VALUE;

  // } else {

  }

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a single 32-bit LONG value
       :
       :Parameter f??r Makro SetLong:
       :  Value : Range: 0-4294967295
\*=----------------------------------------------------------------------=*/
void FCD_02571_TypeConversionsFree1__SetLong(MX_UINT32 FCL_VALUE)
{

  // C Code
  MX_Conv_Var.AsLong = FCL_VALUE;

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single 32-bit FLOAT value
       :
       :R??ckgaben : MX_FLOAT
\*=----------------------------------------------------------------------=*/
MX_FLOAT FCD_02571_TypeConversionsFree1__GetFloat()
{
  //Lokale Variablen-Definitionen
  MX_FLOAT FCR_RETVAL;


  // C Code
  FCR_RETVAL = MX_Conv_Var.AsFloat;

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single 32-bit LONG value
       :
       :R??ckgaben : MX_UINT32
\*=----------------------------------------------------------------------=*/
MX_UINT32 FCD_02571_TypeConversionsFree1__GetLong()
{
  //Lokale Variablen-Definitionen
  MX_UINT32 FCR_RETVAL;


  // C Code
  FCR_RETVAL = MX_Conv_Var.AsLong;

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single 16-bit INT value
       :Index is in little endian, 0 is the LSW and 1 is the MSW
       :
       :Parameter f??r Makro GetInt:
       :  Index : Range: 0-1
       :
       :R??ckgaben : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_02571_TypeConversionsFree1__GetInt(MX_UINT8 FCL_INDEX)
{
  //Lokale Variablen-Definitionen
  MX_UINT16 FCR_RETVAL;


  if (FCL_INDEX < 2)
  {  

    // C Code
    FCR_RETVAL = MX_Conv_Var.AsInt[FCL_INDEX];

  } else {

    FCR_RETVAL = 0;

  }

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a single 8-bit BYTE value
       :Index is in little endian, 0 is the LSB and 3 is the MSB
       :
       :Parameter f??r Makro SetByte:
       :  Index : Range: 0-3
       :  Value : Range: 0-255
\*=----------------------------------------------------------------------=*/
void FCD_02571_TypeConversionsFree1__SetByte(MX_UINT8 FCL_INDEX, MX_UINT8 FCL_VALUE)
{

  if (FCL_INDEX < 4)
  {  

    // C Code
    MX_Conv_Var.AsByte[FCL_INDEX] = FCL_VALUE;

  // } else {

  }

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single 8-bit BYTE value.
       :Index is in little endian, 0 is the LSB and 3 is the MSB
       :
       :Parameter f??r Makro GetByte:
       :  Index : Range: 0-3
       :
       :R??ckgaben : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_02571_TypeConversionsFree1__GetByte(MX_UINT8 FCL_INDEX)
{
  //Lokale Variablen-Definitionen
  MX_UINT8 FCR_RETVAL;


  if (FCL_INDEX < 4)
  {  

    // C Code
    FCR_RETVAL = MX_Conv_Var.AsByte[FCL_INDEX];

  } else {

    FCR_RETVAL = 0;

  }

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a single 32-bit FLOAT value
       :
       :Parameter f??r Makro SetFloat:
       :  Value : Range: 0-4294967295
\*=----------------------------------------------------------------------=*/
void FCD_02571_TypeConversionsFree1__SetFloat(MX_FLOAT FCL_VALUE)
{

  // C Code
  MX_Conv_Var.AsFloat = FCL_VALUE;

}

#define FCA_USB_SERIAL1 0x56e1
#define FCV_USB_SERIAL1 0x000d

/*========================================================================*\
   Use :USB_Serial1
       :GUID: 3e28ac22-2855-410a-9660-0b0a4731e545
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV11\Components\USB_Serial.fcpx
       :Version: 8.0 (0x10071e)
       :Timestamp: 11\07\2025
       :Deklarationen zu Variablen
       :Makro-Implementierungen
\*========================================================================*/
MX_GLOBAL MX_UINT8 FCV_056e1_USB_Serial1__SIM_INIT = (0x0);
MX_GLOBAL MX_UINT32 FCV_056e1_USB_Serial1__CONSOLE_HANDLE;

/*=----------------------------------------------------------------------=*\
   Use :Sends the specified numeric value as an ASCII string to the host.
       :
       :Parameter f??r Makro SendNumber:
       :  Number : Range -32768 to 32767
       :
       :R??ckgaben : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_056e1_USB_Serial1__SendNumber(MX_SINT16 FCL_NUMBER)
{
  //Lokale Variablen-Definitionen
  #define FCLsz_STR 8
  MX_CHAR FCL_STR[FCLsz_STR];
  MX_UINT8 FCR_RETVAL;


  FCI_TOSTRING(FCL_NUMBER, FCL_STR,8);

  FCR_RETVAL = FC_CAL_USB_Serial_SendString_1(FCL_STR, FCLsz_STR);

  return (FCR_RETVAL);

  //Lokale Variablen-Definitionen
  #undef FCLsz_STR
}


/*========================================================================*\
   Use :User Project
       :Deklarationen zu Variablen
       :Makro-Implementierungen
\*========================================================================*/
#define FCV_FALSE (0)
#define FCV_TRUE (1)
MX_GLOBAL MX_UINT8 FCV_USBOK;



/*========================================================================*\
   Use :Main
\*========================================================================*/
void main()
{
	#ifdef INTOSCHELPER
		INTOSCHELPERCODE
	#endif
ADCON0=0x00;
ADCON1 = 0x0F;
UCFG = 0x08;
cr_bit(PIE2, USBIE);




  // Aufruf Komponenten-Makro
  FCV_USBOK = FC_CAL_USB_Serial_Initialise_1();

  // Aufruf Komponenten-Makro
  FC_CAL_USB_Serial_SendString_1("test", 5);

	mainendloop: goto mainendloop;
}



/*========================================================================*\
   Use :Unterbrechung
\*========================================================================*/
void MX_INTERRUPT_MACRO(void)
{

  

  #ifdef MX_CAL_PIC 
    USBDeviceTasks(); 
  #endif 


  #ifdef MX_CAL_PIC32

  #ifdef MX_PIC32_MZ
  void __ISR(_USB_VECTOR, ipl4AUTO) _IntHandlerUSBInstance0(void) {;
      DRV_USBHS_Tasks_ISR(sysObj.drvUSBObject);
  }

  void __ISR ( _USB_DMA_VECTOR,ipl4AUTO) _IntHandlerUSBInstance0_USBDMA ( void ) {;
      DRV_USBHS_Tasks_ISR_USBDMA(sysObj.drvUSBObject);
  }
  #endif

  #ifdef MX_PIC32_MX
  void __ISR(_USB_1_VECTOR, ipl4AUTO) _IntHandlerUSBInstance0(void) {;
      DRV_USBFS_Tasks_ISR(sysObj.drvUSBObject);
  }
  #endif

  #endif

}




