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 | ||||
| */ | ||||
		Reference in New Issue
	
	Block a user