diff --git a/solar_panel.X/mcc_generated_files/eusart1.c b/solar_panel.X/mcc_generated_files/eusart1.c new file mode 100644 index 0000000..01e4133 --- /dev/null +++ b/solar_panel.X/mcc_generated_files/eusart1.c @@ -0,0 +1,239 @@ +/** + EUSART1 Generated Driver File + + @Company + Microchip Technology Inc. + + @File Name + eusart1.c + + @Summary + This is the generated driver implementation file for the EUSART1 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs + + @Description + This source file provides APIs for EUSART1. + Generation Information : + Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8 + Device : PIC18F97J60 + Driver Version : 2.1.1 + The generated drivers are tested against the following: + Compiler : XC8 2.36 and above + MPLAB : MPLAB X 6.00 +*/ + +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +/** + Section: Included Files +*/ +#include "eusart1.h" + +/** + Section: Macro Declarations +*/ + +#define EUSART1_TX_BUFFER_SIZE 8 +#define EUSART1_RX_BUFFER_SIZE 8 + +/** + Section: Global Variables +*/ + +volatile uint8_t eusart1RxHead = 0; +volatile uint8_t eusart1RxTail = 0; +volatile uint8_t eusart1RxBuffer[EUSART1_RX_BUFFER_SIZE]; +volatile eusart1_status_t eusart1RxStatusBuffer[EUSART1_RX_BUFFER_SIZE]; +volatile uint8_t eusart1RxCount; +volatile eusart1_status_t eusart1RxLastError; + +/** + Section: EUSART1 APIs +*/ +void (*EUSART1_FramingErrorHandler)(void); +void (*EUSART1_OverrunErrorHandler)(void); +void (*EUSART1_ErrorHandler)(void); + +void EUSART1_DefaultFramingErrorHandler(void); +void EUSART1_DefaultOverrunErrorHandler(void); +void EUSART1_DefaultErrorHandler(void); + +void EUSART1_Initialize(void) +{ + // disable interrupts before changing states + PIE1bits.RC1IE = 0; + EUSART1_SetRxInterruptHandler(EUSART1_Receive_ISR); + // Set the EUSART1 module to the options selected in the user interface. + + // ABDOVF no_overflow; SCKP async_noninverted_sync_fallingedge; BRG16 16bit_generator; WUE disabled; ABDEN disabled; RXDTP not_inverted; + BAUDCON1 = 0x08; + + // SPEN enabled; RX9 9-bit; CREN enabled; ADDEN disabled; SREN disabled; + RCSTA1 = 0xD0; + + // TX9 9-bit; TX9D 0; SENDB sync_break_complete; TXEN enabled; SYNC synchronous; BRGH hi_speed; CSRC master_mode; + TXSTA1 = 0xF4; + + // + SPBRG1 = 0x8A; + + // + SPBRGH1 = 0x02; + + + EUSART1_SetFramingErrorHandler(EUSART1_DefaultFramingErrorHandler); + EUSART1_SetOverrunErrorHandler(EUSART1_DefaultOverrunErrorHandler); + EUSART1_SetErrorHandler(EUSART1_DefaultErrorHandler); + + eusart1RxLastError.status = 0; + + + eusart1RxHead = 0; + eusart1RxTail = 0; + eusart1RxCount = 0; + + // enable receive interrupt + PIE1bits.RC1IE = 1; +} + +bool EUSART1_is_tx_ready(void) +{ + return (bool)(PIR1bits.TX1IF && TXSTA1bits.TXEN); +} + +bool EUSART1_is_rx_ready(void) +{ + return (eusart1RxCount ? true : false); +} + +bool EUSART1_is_tx_done(void) +{ + return TXSTA1bits.TRMT; +} + +eusart1_status_t EUSART1_get_last_status(void){ + return eusart1RxLastError; +} + +uint8_t EUSART1_Read(void) +{ + uint8_t readValue = 0; + RCSTA1bits.SREN = 1; + + while(0 == eusart1RxCount) + { + } + + eusart1RxLastError = eusart1RxStatusBuffer[eusart1RxTail]; + + readValue = eusart1RxBuffer[eusart1RxTail++]; + if(sizeof(eusart1RxBuffer) <= eusart1RxTail) + { + eusart1RxTail = 0; + } + PIE1bits.RC1IE = 0; + eusart1RxCount--; + PIE1bits.RC1IE = 1; + + return readValue; +} + +void EUSART1_Write(uint8_t txData) +{ + RCSTA1bits.SREN = 0; + RCSTA1bits.CREN = 0; + while(0 == PIR1bits.TX1IF) + { + } + + TXREG1 = txData; // Write the data byte to the USART. +} + +void EUSART1_Receive_ISR(void) +{ + + eusart1RxStatusBuffer[eusart1RxHead].status = 0; + + if(RCSTA1bits.FERR){ + eusart1RxStatusBuffer[eusart1RxHead].ferr = 1; + EUSART1_FramingErrorHandler(); + } + + if(RCSTA1bits.OERR){ + eusart1RxStatusBuffer[eusart1RxHead].oerr = 1; + EUSART1_OverrunErrorHandler(); + } + + if(eusart1RxStatusBuffer[eusart1RxHead].status){ + EUSART1_ErrorHandler(); + } else { + EUSART1_RxDataHandler(); + } + + // or set custom function using eusart1_SetRxInterruptHandler() +} + +void EUSART1_RxDataHandler(void){ + // use this default receive interrupt handler code + eusart1RxBuffer[eusart1RxHead++] = RCREG1; + if(sizeof(eusart1RxBuffer) <= eusart1RxHead) + { + eusart1RxHead = 0; + } + eusart1RxCount++; + +} + +void EUSART1_DefaultFramingErrorHandler(void){} + +void EUSART1_DefaultOverrunErrorHandler(void){ + // EUSART1 error - restart + + RCSTA1bits.CREN = 0; + RCSTA1bits.CREN = 1; + +} + +void EUSART1_DefaultErrorHandler(void){ + EUSART1_RxDataHandler(); +} + +void EUSART1_SetFramingErrorHandler(void (* interruptHandler)(void)){ + EUSART1_FramingErrorHandler = interruptHandler; +} + +void EUSART1_SetOverrunErrorHandler(void (* interruptHandler)(void)){ + EUSART1_OverrunErrorHandler = interruptHandler; +} + +void EUSART1_SetErrorHandler(void (* interruptHandler)(void)){ + EUSART1_ErrorHandler = interruptHandler; +} + + +void EUSART1_SetRxInterruptHandler(void (* interruptHandler)(void)){ + EUSART1_RxDefaultInterruptHandler = interruptHandler; +} +/** + End of File +*/ diff --git a/solar_panel.X/mcc_generated_files/eusart1.h b/solar_panel.X/mcc_generated_files/eusart1.h new file mode 100644 index 0000000..79b6300 --- /dev/null +++ b/solar_panel.X/mcc_generated_files/eusart1.h @@ -0,0 +1,477 @@ +/** + EUSART1 Generated Driver API Header File + + @Company + Microchip Technology Inc. + + @File Name + eusart1.h + + @Summary + This is the generated header file for the EUSART1 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs + + @Description + This header file provides APIs for driver for EUSART1. + Generation Information : + Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8 + Device : PIC18F97J60 + Driver Version : 2.1.1 + The generated drivers are tested against the following: + Compiler : XC8 2.36 and above + MPLAB : MPLAB X 6.00 +*/ + +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef EUSART1_H +#define EUSART1_H + +/** + Section: Included Files +*/ + +#include +#include +#include + +#ifdef __cplusplus // Provide C++ Compatibility + + extern "C" { + +#endif + + +/** + Section: Macro Declarations +*/ + +#define EUSART1_DataReady (EUSART1_is_rx_ready()) + +/** + Section: Data Type Definitions +*/ + +typedef union { + struct { + unsigned perr : 1; + unsigned ferr : 1; + unsigned oerr : 1; + unsigned reserved : 5; + }; + uint8_t status; +}eusart1_status_t; + +/** + Section: Global variables + */ +extern volatile uint8_t eusart1TxBufferRemaining; +extern volatile uint8_t eusart1RxCount; + +/** + Section: EUSART1 APIs +*/ + +void (*EUSART1_RxDefaultInterruptHandler)(void); + +/** + @Summary + Initialization routine that takes inputs from the EUSART1 GUI. + + @Description + This routine initializes the EUSART1 driver. + This routine must be called before any other EUSART1 routine is called. + + @Preconditions + None + + @Param + None + + @Returns + None + + @Comment + +*/ +void EUSART1_Initialize(void); + +/** + @Summary + Checks if the EUSART1 transmitter is ready to transmit data + + @Description + This routine checks if EUSART1 transmitter is ready + to accept and transmit data byte + + @Preconditions + EUSART1_Initialize() function should have been called + before calling this function. + EUSART1 transmitter should be enabled before calling + this function + + @Param + None + + @Returns + Status of EUSART1 transmitter + TRUE: EUSART1 transmitter is ready + FALSE: EUSART1 transmitter is not ready + + @Example + + void main(void) + { + volatile uint8_t rxData; + + // Initialize the device + SYSTEM_Initialize(); + + while(1) + { + // Logic to echo received data + if(EUSART1_is_rx_ready()) + { + rxData = UART1_Read(); + if(EUSART1_is_tx_ready()) + { + EUSART1Write(rxData); + } + } + } + } + +*/ +bool EUSART1_is_tx_ready(void); + +/** + @Summary + Checks if the EUSART1 receiver ready for reading + + @Description + This routine checks if EUSART1 receiver has received data + and ready to be read + + @Preconditions + EUSART1_Initialize() function should be called + before calling this function + EUSART1 receiver should be enabled before calling this + function + + @Param + None + + @Returns + Status of EUSART1 receiver + TRUE: EUSART1 receiver is ready for reading + FALSE: EUSART1 receiver is not ready for reading + + @Example + + void main(void) + { + volatile uint8_t rxData; + + // Initialize the device + SYSTEM_Initialize(); + + while(1) + { + // Logic to echo received data + if(EUSART1_is_rx_ready()) + { + rxData = UART1_Read(); + if(EUSART1_is_tx_ready()) + { + EUSART1_Write(rxData); + } + } + } + } + +*/ +bool EUSART1_is_rx_ready(void); + +/** + @Summary + Checks if EUSART1 data is transmitted + + @Description + This function return the status of transmit shift register + + @Preconditions + EUSART1_Initialize() function should be called + before calling this function + EUSART1 transmitter should be enabled and EUSART1_Write + should be called before calling this function + + @Param + None + + @Returns + Status of EUSART1 receiver + TRUE: Data completely shifted out if the USART shift register + FALSE: Data is not completely shifted out of the shift register + + @Example + + void main(void) + { + volatile uint8_t rxData; + + // Initialize the device + SYSTEM_Initialize(); + + while(1) + { + if(EUSART1_is_tx_ready()) + { + LED_0_SetHigh(); + EUSART1Write(rxData); + } + if(EUSART1_is_tx_done() + { + LED_0_SetLow(); + } + } + } + +*/ +bool EUSART1_is_tx_done(void); + +/** + @Summary + Gets the error status of the last read byte. + + @Description + This routine gets the error status of the last read byte. + + @Preconditions + EUSART1_Initialize() function should have been called + before calling this function. The returned value is only + updated after a read is called. + + @Param + None + + @Returns + the status of the last read byte + + @Example + + void main(void) + { + volatile uint8_t rxData; + volatile eusart1_status_t rxStatus; + + // Initialize the device + SYSTEM_Initialize(); + + // Enable the Global Interrupts + INTERRUPT_GlobalInterruptEnable(); + + while(1) + { + // Logic to echo received data + if(EUSART1_is_rx_ready()) + { + rxData = EUSART1_Read(); + rxStatus = EUSART1_get_last_status(); + if(rxStatus.ferr){ + LED_0_SetHigh(); + } + } + } + } + + */ +eusart1_status_t EUSART1_get_last_status(void); + +/** + @Summary + Read a byte of data from the EUSART1. + + @Description + This routine reads a byte of data from the EUSART1. + + @Preconditions + EUSART1_Initialize() function should have been called + before calling this function. The transfer status should be checked to see + if the receiver is not empty before calling this function. + + @Param + None + + @Returns + A data byte received by the driver. +*/ +uint8_t EUSART1_Read(void); + + /** + @Summary + Writes a byte of data to the EUSART1. + + @Description + This routine writes a byte of data to the EUSART1. + + @Preconditions + EUSART1_Initialize() function should have been called + before calling this function. The transfer status should be checked to see + if transmitter is not busy before calling this function. + + @Param + txData - Data byte to write to the EUSART1 + + @Returns + None +*/ +void EUSART1_Write(uint8_t txData); + + +/** + @Summary + Maintains the driver's receiver state machine and implements its ISR + + @Description + This routine is used to maintain the driver's internal receiver state + machine.This interrupt service routine is called when the state of the + receiver needs to be maintained in a non polled manner. + + @Preconditions + EUSART1_Initialize() function should have been called + for the ISR to execute correctly. + + @Param + None + + @Returns + None +*/ +void EUSART1_Receive_ISR(void); + +/** + @Summary + Maintains the driver's receiver state machine + + @Description + This routine is called by the receive state routine and is used to maintain + the driver's internal receiver state machine. It should be called by a custom + ISR to maintain normal behavior + + @Preconditions + EUSART1_Initialize() function should have been called + for the ISR to execute correctly. + + @Param + None + + @Returns + None +*/ +void EUSART1_RxDataHandler(void); + +/** + @Summary + Set EUSART1 Framing Error Handler + + @Description + This API sets the function to be called upon EUSART1 framing error + + @Preconditions + Initialize the EUSART1 before calling this API + + @Param + Address of function to be set as framing error handler + + @Returns + None +*/ +void EUSART1_SetFramingErrorHandler(void (* interruptHandler)(void)); + +/** + @Summary + Set EUSART1 Overrun Error Handler + + @Description + This API sets the function to be called upon EUSART1 overrun error + + @Preconditions + Initialize the EUSART1 module before calling this API + + @Param + Address of function to be set as overrun error handler + + @Returns + None +*/ +void EUSART1_SetOverrunErrorHandler(void (* interruptHandler)(void)); + +/** + @Summary + Set EUSART1 Error Handler + + @Description + This API sets the function to be called upon EUSART1 error + + @Preconditions + Initialize the EUSART1 module before calling this API + + @Param + Address of function to be set as error handler + + @Returns + None +*/ +void EUSART1_SetErrorHandler(void (* interruptHandler)(void)); + + +/** + @Summary + Sets the receive handler function to be called by the interrupt service + + @Description + Calling this function will set a new custom function that will be + called when the receive interrupt needs servicing. + + @Preconditions + EUSART1_Initialize() function should have been called + for the ISR to execute correctly. + + @Param + A pointer to the new function + + @Returns + None +*/ +void EUSART1_SetRxInterruptHandler(void (* interruptHandler)(void)); + +#ifdef __cplusplus // Provide C++ Compatibility + + } + +#endif + +#endif // EUSART1_H +/** + End of File +*/ diff --git a/solar_panel.X/mcc_generated_files/interrupt_manager.c b/solar_panel.X/mcc_generated_files/interrupt_manager.c new file mode 100644 index 0000000..dcd3f6b --- /dev/null +++ b/solar_panel.X/mcc_generated_files/interrupt_manager.c @@ -0,0 +1,83 @@ +/** + Generated Interrupt Manager Source File + + @Company: + Microchip Technology Inc. + + @File Name: + interrupt_manager.c + + @Summary: + This is the Interrupt Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs + + @Description: + This header file provides implementations for global interrupt handling. + For individual peripheral handlers please see the peripheral driver for + all modules selected in the GUI. + Generation Information : + Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8 + Device : PIC18F97J60 + Driver Version : 2.04 + The generated drivers are tested against the following: + Compiler : XC8 2.36 and above or later + MPLAB : MPLAB X 6.00 +*/ + +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#include "interrupt_manager.h" +#include "mcc.h" + +void INTERRUPT_Initialize (void) +{ + // Disable Interrupt Priority Vectors (16CXXX Compatibility Mode) + RCONbits.IPEN = 0; +} + +void __interrupt() INTERRUPT_InterruptManager (void) +{ + // interrupt handler + if(INTCONbits.TMR0IE == 1 && INTCONbits.TMR0IF == 1) + { + TMR0_ISR(); + } + else if(INTCONbits.PEIE == 1) + { + if(PIE1bits.RC1IE == 1 && PIR1bits.RC1IF == 1) + { + EUSART1_RxDefaultInterruptHandler(); + } + else + { + //Unhandled Interrupt + } + } + else + { + //Unhandled Interrupt + } +} +/** + End of File +*/ diff --git a/solar_panel.X/mcc_generated_files/interrupt_manager.h b/solar_panel.X/mcc_generated_files/interrupt_manager.h new file mode 100644 index 0000000..62274b4 --- /dev/null +++ b/solar_panel.X/mcc_generated_files/interrupt_manager.h @@ -0,0 +1,115 @@ +/** + Generated Interrupt Manager Header File + + @Company: + Microchip Technology Inc. + + @File Name: + interrupt_manager.h + + @Summary: + This is the Interrupt Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs + + @Description: + This header file provides implementations for global interrupt handling. + For individual peripheral handlers please see the peripheral driver for + all modules selected in the GUI. + Generation Information : + Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8 + Device : PIC18F97J60 + Driver Version : 2.03 + The generated drivers are tested against the following: + Compiler : XC8 2.36 and above or later + MPLAB : MPLAB X 6.00 +*/ + +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef INTERRUPT_MANAGER_H +#define INTERRUPT_MANAGER_H + + +/** + * @Param + none + * @Returns + none + * @Description + This macro will enable global interrupts. + * @Example + INTERRUPT_GlobalInterruptEnable(); + */ +#define INTERRUPT_GlobalInterruptEnable() (INTCONbits.GIE = 1) + +/** + * @Param + none + * @Returns + none + * @Description + This macro will disable global interrupts. + * @Example + INTERRUPT_GlobalInterruptDisable(); + */ +#define INTERRUPT_GlobalInterruptDisable() (INTCONbits.GIE = 0) +/** + * @Param + none + * @Returns + none + * @Description + This macro will enable peripheral interrupts. + * @Example + INTERRUPT_PeripheralInterruptEnable(); + */ +#define INTERRUPT_PeripheralInterruptEnable() (INTCONbits.PEIE = 1) + +/** + * @Param + none + * @Returns + none + * @Description + This macro will disable peripheral interrupts. + * @Example + INTERRUPT_PeripheralInterruptDisable(); + */ +#define INTERRUPT_PeripheralInterruptDisable() (INTCONbits.PEIE = 0) + +/** + * @Param + none + * @Returns + none + * @Description + Initializes PIC18 peripheral interrupt priorities; enables/disables priority vectors + * @Example + INTERRUPT_Initialize(); + */ +void INTERRUPT_Initialize (void); + +#endif // INTERRUPT_MANAGER_H +/** + End of File +*/ diff --git a/solar_panel.X/mcc_generated_files/mcc.c b/solar_panel.X/mcc_generated_files/mcc.c index 00f5e92..e33f30d 100644 --- a/solar_panel.X/mcc_generated_files/mcc.c +++ b/solar_panel.X/mcc_generated_files/mcc.c @@ -50,11 +50,14 @@ void SYSTEM_Initialize(void) { + INTERRUPT_Initialize(); PIN_MANAGER_Initialize(); OSCILLATOR_Initialize(); + ADC_Initialize(); EPWM1_Initialize(); TMR2_Initialize(); - ADC_Initialize(); + TMR0_Initialize(); + EUSART1_Initialize(); } void OSCILLATOR_Initialize(void) diff --git a/solar_panel.X/mcc_generated_files/mcc.h b/solar_panel.X/mcc_generated_files/mcc.h index 3e771aa..01e4f94 100644 --- a/solar_panel.X/mcc_generated_files/mcc.h +++ b/solar_panel.X/mcc_generated_files/mcc.h @@ -52,9 +52,12 @@ #include #include #include +#include "interrupt_manager.h" #include "epwm1.h" #include "tmr2.h" #include "adc.h" +#include "tmr0.h" +#include "eusart1.h" diff --git a/solar_panel.X/mcc_generated_files/tmr0.c b/solar_panel.X/mcc_generated_files/tmr0.c new file mode 100644 index 0000000..ad3ca68 --- /dev/null +++ b/solar_panel.X/mcc_generated_files/tmr0.c @@ -0,0 +1,167 @@ +/** + TMR0 Generated Driver File + + @Company + Microchip Technology Inc. + + @File Name + tmr0.c + + @Summary + This is the generated driver implementation file for the TMR0 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs + + @Description + This source file provides APIs for TMR0. + Generation Information : + Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8 + Device : PIC18F97J60 + Driver Version : 2.01 + The generated drivers are tested against the following: + Compiler : XC8 2.36 and above + MPLAB : MPLAB X 6.00 +*/ + +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +/** + Section: Included Files +*/ + +#include +#include "tmr0.h" + +/** + Section: Global Variables Definitions +*/ + +void (*TMR0_InterruptHandler)(void); + +volatile uint16_t timer0ReloadVal; + +/** + Section: TMR0 APIs +*/ + + +void TMR0_Initialize(void) +{ + // Set TMR0 to the options selected in the User Interface + + //Enable 16bit timer mode before assigning value to TMR0H + T0CONbits.T08BIT = 0; + + // TMR0H 255; + TMR0H = 0xFF; + + // TMR0L 252; + TMR0L = 0xFC; + + + // Load TMR0 value to the 16-bit reload variable + timer0ReloadVal = (uint16_t)((TMR0H << 8) | TMR0L); + + // Clear Interrupt flag before enabling the interrupt + INTCONbits.TMR0IF = 0; + + // Enabling TMR0 interrupt. + INTCONbits.TMR0IE = 1; + + // Set Default Interrupt Handler + TMR0_SetInterruptHandler(TMR0_DefaultInterruptHandler); + + // T0PS 1:2; T08BIT 16-bit; T0SE Increment_hi_lo; T0CS T0CKI; TMR0ON enabled; PSA not_assigned; + T0CON = 0xB8; +} + +void TMR0_StartTimer(void) +{ + // Start the Timer by writing to TMR0ON bit + T0CONbits.TMR0ON = 1; +} + +void TMR0_StopTimer(void) +{ + // Stop the Timer by writing to TMR0ON bit + T0CONbits.TMR0ON = 0; +} + +uint16_t TMR0_ReadTimer(void) +{ + uint16_t readVal; + uint8_t readValLow; + uint8_t readValHigh; + + readValLow = TMR0L; + readValHigh = TMR0H; + readVal = ((uint16_t)readValHigh << 8) + readValLow; + + return readVal; +} + +void TMR0_WriteTimer(uint16_t timerVal) +{ + // Write to the Timer0 register + TMR0H = timerVal >> 8; + TMR0L = (uint8_t) timerVal; +} + +void TMR0_Reload(void) +{ + // Write to the Timer0 register + TMR0H = timer0ReloadVal >> 8; + TMR0L = (uint8_t) timer0ReloadVal; +} + +void TMR0_ISR(void) +{ + + // clear the TMR0 interrupt flag + INTCONbits.TMR0IF = 0; + + // reload TMR0 + // Write to the Timer0 register + TMR0H = timer0ReloadVal >> 8; + TMR0L = (uint8_t) timer0ReloadVal; + + if(TMR0_InterruptHandler) + { + TMR0_InterruptHandler(); + } + + // add your TMR0 interrupt custom code +} + + +void TMR0_SetInterruptHandler(void (* InterruptHandler)(void)){ + TMR0_InterruptHandler = InterruptHandler; +} + +void TMR0_DefaultInterruptHandler(void){ + // add your TMR0 interrupt custom code + // or set custom function using TMR0_SetInterruptHandler() +} + +/** + End of File +*/ \ No newline at end of file diff --git a/solar_panel.X/mcc_generated_files/tmr0.h b/solar_panel.X/mcc_generated_files/tmr0.h new file mode 100644 index 0000000..38df85d --- /dev/null +++ b/solar_panel.X/mcc_generated_files/tmr0.h @@ -0,0 +1,356 @@ +/** + TMR0 Generated Driver API Header File + + @Company + Microchip Technology Inc. + + @File Name + tmr0.h + + @Summary + This is the generated header file for the TMR0 driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs + + @Description + This header file provides APIs for TMR0. + Generation Information : + Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8 + Device : PIC18F97J60 + Driver Version : 2.01 + The generated drivers are tested against the following: + Compiler : XC8 2.36 and above + MPLAB : MPLAB X 6.00 +*/ + +/* + (c) 2018 Microchip Technology Inc. and its subsidiaries. + + Subject to your compliance with these terms, you may use Microchip software and any + derivatives exclusively with Microchip products. It is your responsibility to comply with third party + license terms applicable to your use of third party software (including open source software) that + may accompany Microchip software. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS + FOR A PARTICULAR PURPOSE. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP + HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO + THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL + CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT + OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS + SOFTWARE. +*/ + +#ifndef TMR0_H +#define TMR0_H + +/** + Section: Included Files +*/ + +#include +#include + +#ifdef __cplusplus // Provide C++ Compatibility + + extern "C" { + +#endif + + + +/** + Section: TMR0 APIs +*/ + +/** + @Summary + Initializes the TMR0. + + @Description + This function initializes the TMR0 Registers. + This function must be called before any other TMR0 function is called. + + @Preconditions + None + + @Param + None + + @Returns + None + + @Comment + + + @Example + + main() + { + // Initialize TMR0 module + TMR0_Initialize(); + + // Do something else... + } + +*/ +void TMR0_Initialize(void); + +/** + @Summary + This function starts the TMR0. + + @Description + This function starts the TMR0 operation. + This function must be called after the initialization of TMR0. + + @Preconditions + Initialize the TMR0 before calling this function. + + @Param + None + + @Returns + None + + @Example + + // Initialize TMR0 module + + // Start TMR0 + TMR0_StartTimer(); + + // Do something else... + +*/ +void TMR0_StartTimer(void); + +/** + @Summary + This function stops the TMR0. + + @Description + This function stops the TMR0 operation. + This function must be called after the start of TMR0. + + @Preconditions + Initialize the TMR0 before calling this function. + + @Param + None + + @Returns + None + + @Example + + // Initialize TMR0 module + + // Start TMR0 + TMR0_StartTimer(); + + // Do something else... + + // Stop TMR0; + TMR0_StopTimer(); + +*/ +void TMR0_StopTimer(void); + + +/** + @Summary + Reads the 16 bits TMR0 register value. + + @Description + This function reads the 16 bits TMR0 register value and return it. + + @Preconditions + Initialize the TMR0 before calling this function. + + @Param + None + + @Returns + This function returns the 16 bits value of TMR0 register. + + @Example + + // Initialize TMR0 module + + // Start TMR0 + TMR0_StartTimer(); + + // Read the current value of TMR0 + if(0 == TMR0_ReadTimer()) + { + // Do something else... + + // Reload the TMR value + TMR0_Reload(); + } + +*/ +uint16_t TMR0_ReadTimer(void); + +/** + @Summary + Writes the 16 bits value to TMR0 register. + + @Description + This function writes the 16 bits value to TMR0 register. + This function must be called after the initialization of TMR0. + + @Preconditions + Initialize the TMR0 before calling this function. + + @Param + timerVal - Value to write into TMR0 register. + + @Returns + None + + @Example + + #define PERIOD 0x8000 + #define ZERO 0x0000 + + while(1) + { + //Read the TMR0 register + if(ZERO == TMR0_ReadTimer()) + { + // Do something else... + + // Write the TMR0 register + TMR0_WriteTimer(PERIOD); + } + + // Do something else... + } + +*/ +void TMR0_WriteTimer(uint16_t timerVal); + +/** + @Summary + Reload the 16 bits value to TMR0 register. + + @Description + This function reloads the 16 bit value to TMR0 register. + This function must be called to write initial value into TMR0 register. + + @Preconditions + Initialize the TMR0 before calling this function. + + @Param + None + + @Returns + None + + @Example + + while(1) + { + if(TMR0IF) + { + // Do something else... + + // clear the TMR0 interrupt flag + TMR0IF = 0; + + // Reload the initial value of TMR0 + TMR0_Reload(); + } + } + +*/ +void TMR0_Reload(void); + +/** + @Summary + Timer Interrupt Service Routine + + @Description + Timer Interrupt Service Routine is called by the Interrupt Manager. + + @Preconditions + Initialize the TMR0 module with interrupt before calling this isr. + + @Param + None + + @Returns + None + */ +void TMR0_ISR(void); + + +/** + @Summary + Set Timer Interrupt Handler + + @Description + This sets the function to be called during the ISR + + @Preconditions + Initialize the TMR0 module with interrupt before calling this. + + @Param + Address of function to be set + + @Returns + None +*/ + void TMR0_SetInterruptHandler(void (* InterruptHandler)(void)); + +/** + @Summary + Timer Interrupt Handler + + @Description + This is a function pointer to the function that will be called during the ISR + + @Preconditions + Initialize the TMR0 module with interrupt before calling this isr. + + @Param + None + + @Returns + None +*/ +extern void (*TMR0_InterruptHandler)(void); + +/** + @Summary + Default Timer Interrupt Handler + + @Description + This is the default Interrupt Handler function + + @Preconditions + Initialize the TMR0 module with interrupt before calling this isr. + + @Param + None + + @Returns + None +*/ +void TMR0_DefaultInterruptHandler(void); + +#ifdef __cplusplus // Provide C++ Compatibility + + } + +#endif + +#endif // TMR0_H +/** + End of File +*/ \ No newline at end of file diff --git a/solar_panel.X/nbproject/Makefile-default.mk b/solar_panel.X/nbproject/Makefile-default.mk index c9750c4..3315f44 100644 --- a/solar_panel.X/nbproject/Makefile-default.mk +++ b/solar_panel.X/nbproject/Makefile-default.mk @@ -57,17 +57,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} # Source Files Quoted if spaced -SOURCEFILES_QUOTED_IF_SPACED=lcd/lcd.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/pin_manager.c mcc_generated_files/adc.c main.c crc.c measure.c modbus.c mcc_generated_files/epwm1.c mcc_generated_files/tmr2.c +SOURCEFILES_QUOTED_IF_SPACED=lcd/lcd.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/pin_manager.c mcc_generated_files/adc.c main.c crc.c measure.c modbus.c mcc_generated_files/epwm1.c mcc_generated_files/tmr2.c mcc_generated_files/eusart1.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c # Object Files Quoted if spaced -OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/lcd/lcd.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/adc.p1 ${OBJECTDIR}/main.p1 ${OBJECTDIR}/crc.p1 ${OBJECTDIR}/measure.p1 ${OBJECTDIR}/modbus.p1 ${OBJECTDIR}/mcc_generated_files/epwm1.p1 ${OBJECTDIR}/mcc_generated_files/tmr2.p1 -POSSIBLE_DEPFILES=${OBJECTDIR}/lcd/lcd.p1.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d ${OBJECTDIR}/mcc_generated_files/adc.p1.d ${OBJECTDIR}/main.p1.d ${OBJECTDIR}/crc.p1.d ${OBJECTDIR}/measure.p1.d ${OBJECTDIR}/modbus.p1.d ${OBJECTDIR}/mcc_generated_files/epwm1.p1.d ${OBJECTDIR}/mcc_generated_files/tmr2.p1.d +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/lcd/lcd.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/adc.p1 ${OBJECTDIR}/main.p1 ${OBJECTDIR}/crc.p1 ${OBJECTDIR}/measure.p1 ${OBJECTDIR}/modbus.p1 ${OBJECTDIR}/mcc_generated_files/epwm1.p1 ${OBJECTDIR}/mcc_generated_files/tmr2.p1 ${OBJECTDIR}/mcc_generated_files/eusart1.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 +POSSIBLE_DEPFILES=${OBJECTDIR}/lcd/lcd.p1.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d ${OBJECTDIR}/mcc_generated_files/adc.p1.d ${OBJECTDIR}/main.p1.d ${OBJECTDIR}/crc.p1.d ${OBJECTDIR}/measure.p1.d ${OBJECTDIR}/modbus.p1.d ${OBJECTDIR}/mcc_generated_files/epwm1.p1.d ${OBJECTDIR}/mcc_generated_files/tmr2.p1.d ${OBJECTDIR}/mcc_generated_files/eusart1.p1.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d # Object Files -OBJECTFILES=${OBJECTDIR}/lcd/lcd.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/adc.p1 ${OBJECTDIR}/main.p1 ${OBJECTDIR}/crc.p1 ${OBJECTDIR}/measure.p1 ${OBJECTDIR}/modbus.p1 ${OBJECTDIR}/mcc_generated_files/epwm1.p1 ${OBJECTDIR}/mcc_generated_files/tmr2.p1 +OBJECTFILES=${OBJECTDIR}/lcd/lcd.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/adc.p1 ${OBJECTDIR}/main.p1 ${OBJECTDIR}/crc.p1 ${OBJECTDIR}/measure.p1 ${OBJECTDIR}/modbus.p1 ${OBJECTDIR}/mcc_generated_files/epwm1.p1 ${OBJECTDIR}/mcc_generated_files/tmr2.p1 ${OBJECTDIR}/mcc_generated_files/eusart1.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 # Source Files -SOURCEFILES=lcd/lcd.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/pin_manager.c mcc_generated_files/adc.c main.c crc.c measure.c modbus.c mcc_generated_files/epwm1.c mcc_generated_files/tmr2.c +SOURCEFILES=lcd/lcd.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/pin_manager.c mcc_generated_files/adc.c main.c crc.c measure.c modbus.c mcc_generated_files/epwm1.c mcc_generated_files/tmr2.c mcc_generated_files/eusart1.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c @@ -182,6 +182,30 @@ ${OBJECTDIR}/mcc_generated_files/tmr2.p1: mcc_generated_files/tmr2.c nbproject/ @-${MV} ${OBJECTDIR}/mcc_generated_files/tmr2.d ${OBJECTDIR}/mcc_generated_files/tmr2.p1.d @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr2.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ +${OBJECTDIR}/mcc_generated_files/eusart1.p1: mcc_generated_files/eusart1.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/eusart1.p1.d + @${RM} ${OBJECTDIR}/mcc_generated_files/eusart1.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=snap -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/eusart1.p1 mcc_generated_files/eusart1.c + @-${MV} ${OBJECTDIR}/mcc_generated_files/eusart1.d ${OBJECTDIR}/mcc_generated_files/eusart1.p1.d + @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/eusart1.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1: mcc_generated_files/interrupt_manager.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d + @${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=snap -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c + @-${MV} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d + @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/mcc_generated_files/tmr0.p1: mcc_generated_files/tmr0.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d + @${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=snap -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c + @-${MV} ${OBJECTDIR}/mcc_generated_files/tmr0.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d + @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + else ${OBJECTDIR}/lcd/lcd.p1: lcd/lcd.c nbproject/Makefile-${CND_CONF}.mk @${MKDIR} "${OBJECTDIR}/lcd" @@ -271,6 +295,30 @@ ${OBJECTDIR}/mcc_generated_files/tmr2.p1: mcc_generated_files/tmr2.c nbproject/ @-${MV} ${OBJECTDIR}/mcc_generated_files/tmr2.d ${OBJECTDIR}/mcc_generated_files/tmr2.p1.d @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr2.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ +${OBJECTDIR}/mcc_generated_files/eusart1.p1: mcc_generated_files/eusart1.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/eusart1.p1.d + @${RM} ${OBJECTDIR}/mcc_generated_files/eusart1.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/eusart1.p1 mcc_generated_files/eusart1.c + @-${MV} ${OBJECTDIR}/mcc_generated_files/eusart1.d ${OBJECTDIR}/mcc_generated_files/eusart1.p1.d + @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/eusart1.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1: mcc_generated_files/interrupt_manager.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d + @${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c + @-${MV} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d + @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/mcc_generated_files/tmr0.p1: mcc_generated_files/tmr0.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/mcc_generated_files" + @${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d + @${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c + @-${MV} ${OBJECTDIR}/mcc_generated_files/tmr0.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d + @${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + endif # ------------------------------------------------------------------------------------ diff --git a/solar_panel.X/nbproject/Makefile-genesis.properties b/solar_panel.X/nbproject/Makefile-genesis.properties index 8b9d6e6..da78265 100644 --- a/solar_panel.X/nbproject/Makefile-genesis.properties +++ b/solar_panel.X/nbproject/Makefile-genesis.properties @@ -1,11 +1,11 @@ # -#Fri Mar 03 13:24:37 CET 2023 +#Fri Mar 03 14:42:22 CET 2023 default.languagetoolchain.version=2.40 default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.00\\packs\\Microchip\\PIC18F-J_DFP\\1.5.44 conf.ids=default default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc8\\v2.40\\bin host.id=3awj-afwq-rl -configurations-xml=080b6b0e67e3ef40b76cf6528cd7e334 +configurations-xml=19a2811a74f6d1b3cc6f3802bb8369cf default.com-microchip-mplab-mdbcore-snap-SnapToolImpl.md5=eaa336cefb7fc46db8b50b7b2b6e54ca com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=6e02ca5e9f5042ffd365b42ab82d3a9b user-defined-mime-resolver-xml=none diff --git a/solar_panel.X/nbproject/configurations.xml b/solar_panel.X/nbproject/configurations.xml index 4e9670e..f432be8 100644 --- a/solar_panel.X/nbproject/configurations.xml +++ b/solar_panel.X/nbproject/configurations.xml @@ -16,6 +16,9 @@ mcc_generated_files/adc.h mcc_generated_files/epwm1.h mcc_generated_files/tmr2.h + mcc_generated_files/interrupt_manager.h + mcc_generated_files/tmr0.h + mcc_generated_files/eusart1.h crc.h measure.h @@ -40,6 +43,9 @@ mcc_generated_files/adc.c mcc_generated_files/epwm1.c mcc_generated_files/tmr2.c + mcc_generated_files/eusart1.c + mcc_generated_files/interrupt_manager.c + mcc_generated_files/tmr0.c main.c crc.c diff --git a/solar_panel.X/solar_panel.mc3 b/solar_panel.X/solar_panel.mc3 index 7f6f718..c4cb3de 100644 --- a/solar_panel.X/solar_panel.mc3 +++ b/solar_panel.X/solar_panel.mc3 @@ -9,6 +9,10 @@ ECCP1 class com.microchip.mcc.mcu8.modules.eccp.ECCP + + EUSART1 + class com.microchip.mcc.mcu8.modules.eusart.EUSART + INTERNAL OSCILLATOR class com.microchip.mcc.mcu8.systemManager.osc_v3.Osc @@ -29,6 +33,10 @@ System Module class com.microchip.mcc.mcu8.systemManager.SystemManager + + TMR0 + class com.microchip.mcc.mcu8.modules.tmr0_v1.TMR0 + TMR2 class com.microchip.mcc.mcu8.modules.tmr2_v3.TMR2 @@ -750,6 +758,378 @@ automatic_restart + + + enabled + + + + disabled + + + + RxDefaultInterruptHandler + + + + TxDefaultInterruptHandler + + + + 8 + + + + 8 + + + + 9600 + + + + Error: 0.006 % + + + + easysetup + + + + out + + + + enabled + + + + 25000000 + + + + eusart_interrupt + + + + disabled + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 8 + + + + 208 + + + + 2 + + + + 138 + + + + 0 + + + + 244 + + + + disabled + + + + no_overflow + + + + 16bit_generator + + + + not_inverted + + + + idle + + + + async_noninverted_sync_fallingedge + + + + disabled + + + + enabled + + + + disabled + + + + -1 + + + + 1 + + + + disabled + + + + enabled + + + + no_error + + + + no_error + + + + 9-bit + + + + 0 + + + + enabled + + + + disabled + + + + disabled + + + + disabled + + + + -1 + + + + 1 + + + + hi_speed + + + + master_mode + + + + sync_break_complete + + + + synchronous + + + + TSR_empty + + + + 9-bit + + + + 0 + + + + enabled + @@ -5214,6 +5594,194 @@ OFF + + + 0 + + + + ISR + + + + 0.00003 + + + + 25000000 + + + + 100000 + + + + 0.65535 + + + + 0.00001 + + + + enabled + + + + 1 + + + + 100000 + + + + 0.000035 + + + + enabled + + + + 0 + + + + enabled + + + + 6 + + + + 3 + + + + 0 + + + + 7 + + + + 4 + + + + 1 + + + + 5 + + + + 2 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 184 + + + + 255 + + + + 252 + + + + 1:2 + + + + not_assigned + + + + 16-bit + + + + enabled + + + + T0CKI + + + + Increment_hi_lo + + + + 255 + + + + 252 + + + + enabled + + + + disabled + + + + -1 + + + + 1 + 0 @@ -5402,12 +5970,24 @@ mcc_generated_files\mcc.h - 163eeab73ba2645b62407134fd74f192252b4a78fc740ce8959eebb831a39c2e + 52b447a5dc446f42c76e7a13f2403349cfdc20fc87fe880892a4f08ac41ec7ec mcc_generated_files\device_config.h e658a4cb6ac1c79b2a52ab2754ebce26d229cbe4bd8464122f3272d1e76e5881 + + mcc_generated_files\interrupt_manager.h + 5c311e57ab563c3fadc6e5c40b1e425436e9366c40e5772f46f393a9f8ed9d39 + + + mcc_generated_files\eusart1.h + c6209c27bd9de6f3041c2f8d1df1cccce2b09bdf4b5098ae0b333a7f92205022 + + + mcc_generated_files\tmr0.h + 60487f4faa42d9fec7389ebc68c7a0a01ec6343892ddd4f936b3e776d62a07b0 + main.c 30e3e0e5956e494fcd566f1509f2f2bbc404d25265a77934114af7c9d1fcdbd7 @@ -5436,6 +6016,10 @@ mcc_generated_files\epwm1.h e1dacec839b43c4ec99f1710c3a7872ce32d2ea6dfe3856eb466e690b7ea75c9 + + mcc_generated_files\tmr0.c + 6ee4809b94f1e2488f05488f97e0cdc3e8db39b9f132a99c2d2daf3b13befbf7 + mcc_generated_files\pin_manager.c f23627897b323c5e312c50538e92449a15673b1b943138129b8c0214ac47a4d4 @@ -5450,7 +6034,15 @@ mcc_generated_files\mcc.c - eda682c043199d8627daf3584afc45a08bb3bb8526554f70c327ca6e3b587544 + 32ff3e2dadb25f5b8ccb3d70520f2b25f98e471a9bccb87758edd960e922e48c + + + mcc_generated_files\interrupt_manager.c + 9bec65c4415d6a1861d1d33f5aecfcf2c426de3ac2962449aec821b45c527ef2 + + + mcc_generated_files\eusart1.c + 627becf328c45a7c7ebff85e99496289e162e55eef7d703ea105fffd0439dd76 \ No newline at end of file