i don't understand why it's not commit in MPLAB
This commit is contained in:
		
							
								
								
									
										239
									
								
								solar_panel.X/mcc_generated_files/eusart1.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								solar_panel.X/mcc_generated_files/eusart1.c
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
| */ | ||||
							
								
								
									
										477
									
								
								solar_panel.X/mcc_generated_files/eusart1.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										477
									
								
								solar_panel.X/mcc_generated_files/eusart1.h
									
									
									
									
									
										Normal file
									
								
							| @@ -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 <xc.h> | ||||
| #include <stdbool.h> | ||||
| #include <stdint.h> | ||||
|  | ||||
| #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 | ||||
|     <code> | ||||
|     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); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
|     <code> | ||||
|     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); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
|     <code> | ||||
|     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(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
| 	<code> | ||||
|     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(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     </code> | ||||
|  */ | ||||
| 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 | ||||
| */ | ||||
							
								
								
									
										83
									
								
								solar_panel.X/mcc_generated_files/interrupt_manager.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								solar_panel.X/mcc_generated_files/interrupt_manager.c
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
| */ | ||||
							
								
								
									
										115
									
								
								solar_panel.X/mcc_generated_files/interrupt_manager.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								solar_panel.X/mcc_generated_files/interrupt_manager.h
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
| */ | ||||
| @@ -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) | ||||
|   | ||||
| @@ -52,9 +52,12 @@ | ||||
| #include <stdint.h> | ||||
| #include <stdbool.h> | ||||
| #include <conio.h> | ||||
| #include "interrupt_manager.h" | ||||
| #include "epwm1.h" | ||||
| #include "tmr2.h" | ||||
| #include "adc.h" | ||||
| #include "tmr0.h" | ||||
| #include "eusart1.h" | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										167
									
								
								solar_panel.X/mcc_generated_files/tmr0.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								solar_panel.X/mcc_generated_files/tmr0.c
									
									
									
									
									
										Normal file
									
								
							| @@ -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 <xc.h> | ||||
| #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 | ||||
| */ | ||||
							
								
								
									
										356
									
								
								solar_panel.X/mcc_generated_files/tmr0.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										356
									
								
								solar_panel.X/mcc_generated_files/tmr0.h
									
									
									
									
									
										Normal file
									
								
							| @@ -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 <stdint.h> | ||||
| #include <stdbool.h> | ||||
|  | ||||
| #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 | ||||
|     <code> | ||||
|     main() | ||||
|     { | ||||
|         // Initialize TMR0 module | ||||
|         TMR0_Initialize(); | ||||
|  | ||||
|         // Do something else... | ||||
|     } | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
|     <code> | ||||
|     // Initialize TMR0 module | ||||
|  | ||||
|     // Start TMR0 | ||||
|     TMR0_StartTimer(); | ||||
|  | ||||
|     // Do something else... | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
|     <code> | ||||
|     // Initialize TMR0 module | ||||
|  | ||||
|     // Start TMR0 | ||||
|     TMR0_StartTimer(); | ||||
|  | ||||
|     // Do something else... | ||||
|  | ||||
|     // Stop TMR0; | ||||
|     TMR0_StopTimer(); | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
|     <code> | ||||
|     // 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(); | ||||
|     } | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
|     <code> | ||||
|     #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... | ||||
|     } | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
|     <code> | ||||
|     while(1) | ||||
|     { | ||||
|         if(TMR0IF) | ||||
|         { | ||||
|             // Do something else... | ||||
|  | ||||
|             // clear the TMR0 interrupt flag | ||||
|             TMR0IF = 0; | ||||
|  | ||||
|             // Reload the initial value of TMR0 | ||||
|             TMR0_Reload(); | ||||
|         } | ||||
|     } | ||||
|     </code> | ||||
| */ | ||||
| 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 | ||||
| */ | ||||
		Reference in New Issue
	
	Block a user