/********************************************************************************
    FileName:		IO_Board.h
    Dependencies:	See #includes
    Processor:		dsPIC33CK512MP608 
    Hardware:		
    Complier:		XC16, XC-DSC 3.21
    Author:		Larry Knight 2025

    Software License Agreement:
        This software is licensed under the Apache License Agreement

    Description:
        
    File Description:

    Change History:
 
********************************************************************************/


#include <stdbool.h>

#ifndef IO_BOARD_H
#define	IO_BOARD_H
#define LED0 PORTDbits.RD12
#define LED1 PORTEbits.RE6
#define LED2 PORTDbits.RD10
#define LED3 PORTEbits.RE7
#define LED4 PORTEbits.RE15
#define LED5 PORTEbits.RE14
#define LED6 PORTEbits.RE13
#define LED7 PORTEbits.RE2
#define ON	1
#define OFF	0
#define OSC_FREQ 24000000

typedef union
{
    struct
    {
        unsigned bit0 : 1;
        unsigned bit1 : 1;
        unsigned bit2 : 1;
        unsigned bit3 : 1;
        unsigned bit4 : 1;
        unsigned bit5 : 1;
        unsigned bit6 : 1;
        unsigned bit7 : 1;
    };

    uint8_t LED_Port_value;

} LEDPortUnion;

extern float step_size;
extern uint16_t sine_table[1024];
extern uint8_t m_data;
extern uint16_t m_address;
extern volatile uint8_t sram_busy;
extern LEDPortUnion MyLEDPort;
extern float samp_rate;
extern uint16_t frequency;
extern float system_freq;
extern uint16_t horiz;
extern uint16_t vert;
extern uint16_t result[1000];
extern uint16_t currentArrayPosition;

void SetLEDPort(LEDPortUnion data);
void PMP_Init(void);
void IO_Board_Interrupts_Init(void);
void IO_Board_70V05_WR(uint16_t m_address, uint8_t m_data);
void IO_Board_70V05_RD(uint16_t m_address);
void IO_Board_Init(void);
void IO_Board_Pot_WR(uint16_t dCode);
void DAC_Init(void);
void PWM4_Init(void);
void OPAMP1_Init(void);
void Timer1_Init(void);
void ADC_Init(void);
void GetADC(void);

#endif	/* IO_BOARD_H */