//************************************************************************************
//**  
//**  Source name:   C:\Users\Uwe\Documents\Matrix\OIT\CDCTest .fcfx
//**  Title:         
//**  Description:   
//**  Device:        PIC32.32MZ.32MZ2048EFH144
//**  
//**  Generated by:  Flowcode v11.0.0.8
//**  Date:          Wednesday, October 29, 2025 18:17:57
//**  Users:         1
//**  Registriert für: SpeedPIC32 (24146314)
//**  Lizenzschlüssel:MP62C5
//**  
//**  
//**  https://www.flowcode.co.uk
//**  
//************************************************************************************


#define MX_PIC32

#define MX_CAL_PIC32

#define MX_CLK_SPEED 200000000

#define FCP_NULL Unconnected_Port

#define MX_PIC32_MZ
#define MX_ALT_WATCHDOG
#define MX_MZ_MODE
#define MX_SPI_MZ_FAMILY
#include <xc.h>
#include <math.h>
#include <stdlib.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <p32xxxx.h>
#include <sys/attribs.h>
//Configuration Start
#pragma config FMIIEN = 0
#pragma config FETHIO = 1
#pragma config PGL1WAY = 1
#pragma config PMDL1WAY = 1
#pragma config IOL1WAY = 1
#pragma config FUSBIDIO = 1
#pragma config FPLLIDIV = 5
#pragma config FPLLRNG = 3
#pragma config FPLLICLK = 0
#pragma config FPLLMULT = 99
#pragma config FPLLODIV = 1
#pragma config UPLLFSEL = 1
#pragma config FNOSC = 1
#pragma config DMTINTV = 0
#pragma config FSOSCEN = 0
#pragma config IESO = 0
#pragma config POSCMOD = 0
#pragma config OSCIOFNC = 1
#pragma config FCKSM = 0
#pragma config WDTPS = 20
#pragma config WDTSPGM = 0
#pragma config WINDIS = 1
#pragma config FWDTEN = 0
#pragma config FWDTWINSZ = 3
#pragma config DMTCNT = 0
#pragma config FDMTEN = 0
#pragma config DEBUG = 3
#pragma config JTAGEN = 0
#pragma config ICESEL = 2
#pragma config TRCEN = 0
#pragma config BOOTISA = 1
#pragma config FECCCON = 3
#pragma config FSLEEP = 0
#pragma config DBGPER = 0
#pragma config SMCLR = 1
#pragma config SOSCGAIN = 0
#pragma config SOSCBOOST = 1
#pragma config POSCGAIN = 0
#pragma config POSCBOOST = 1
#pragma config EJTAGBEN = 0
#pragma config CP = 1
//Configuration End

/*========================================================================*\
   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 :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 0x26d5

/*========================================================================*\
   Use :User Project
       :Deklarationen zu Variablen
       :Makro-Implementierungen
\*========================================================================*/
#define FCVsz_VOLT 20
MX_GLOBAL MX_UINT8 FCV_BYTE3;
MX_GLOBAL MX_UINT8 FCV_BYTE2;
MX_GLOBAL MX_CHAR FCV_VOLT[FCVsz_VOLT];
MX_GLOBAL MX_UINT8 FCV_BYTE1;
MX_GLOBAL MX_UINT8 FCV_RUECK;



/*========================================================================*\
   Use :Main
\*========================================================================*/
int main()
{
	#ifdef INTOSCHELPER
		INTOSCHELPERCODE
	#endif
ANSELA = 0x0000;
ANSELB = 0x0000;
ANSELC = 0x0000;
ANSELD = 0x0000;
ANSELE = 0x0000;
ANSELF = 0x0000;
ANSELG = 0x0000;
ANSELH = 0x0000;
ANSELJ = 0x0000;

SYSKEY = 0xAA996655;
SYSKEY = 0x556699AA;
PB2DIV = 0x8000;
PB3DIV = 0x8000;
SYSKEY = 0x33333333;



	mainendloop: goto mainendloop;
	return 0;
}



/*========================================================================*\
   Use :Unterbrechung
\*========================================================================*/

  

  #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




