/** * \file * * \brief USART init driver. * (c) 2020 Microchip Technology Inc. and its subsidiaries. Subject to your compliance with these terms,you may use this 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. * */ /** * \defgroup doc_driver_usart_init USART Init * \ingroup doc_driver_usart * * \section doc_driver_usart_rev Revision History * - v0.0.0.1 Initial Commit * *@{ */ #include #include "clock_config.h" /** * \brief Initialize usart interface * * \return Initialization status. */ int8_t USART_0_init() { USART0.BAUD = (uint16_t)USART0_BAUD_RATE(250000); /* set baud rate register */ USART0.CTRLA = 0 << USART_ABEIE_bp /* Auto-baud Error Interrupt Enable: disabled */ | 0 << USART_DREIE_bp /* Data Register Empty Interrupt Enable: disabled */ | 0 << USART_LBME_bp /* Loop-back Mode Enable: disabled */ | USART_RS485_OFF_gc /* RS485 Mode disabled */ | 1 << USART_RXCIE_bp /* Receive Complete Interrupt Enable: enabled */ | 0 << USART_RXSIE_bp /* Receiver Start Frame Interrupt Enable: disabled */ | 1 << USART_TXCIE_bp; /* Transmit Complete Interrupt Enable: enabled */ USART0.CTRLB = 0 << USART_MPCM_bp /* Multi-processor Communication Mode: disabled */ | 0 << USART_ODME_bp /* Open Drain Mode Enable: disabled */ | 1 << USART_RXEN_bp /* Receiver Enable: enabled */ | USART_RXMODE_NORMAL_gc /* Normal mode */ | 0 << USART_SFDEN_bp /* Start Frame Detection Enable: disabled */ | 1 << USART_TXEN_bp; /* Transmitter Enable: enabled */ USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc /* Asynchronous Mode */ | USART_CHSIZE_8BIT_gc /* Character size: 8 bit */ | USART_PMODE_DISABLED_gc /* No Parity */ | USART_SBMODE_1BIT_gc; /* 1 stop bit */ USART0.DBGCTRL = 1 << USART_DBGRUN_bp; /* Debug Run: enabled */ // USART0.EVCTRL = 0 << USART_IREI_bp; /* IrDA Event Input Enable: disabled */ // USART0.RXPLCTRL = 0x0 << USART_RXPL_gp; /* Receiver Pulse Lenght: 0x0 */ // USART0.TXPLCTRL = 0x0 << USART_TXPL_gp; /* Transmit pulse length: 0x0 */ return 0; }