1 | #include "usart_driver.h"
|
2 | #include "clksys_driver.h"
|
3 | #include "avr_compiler.h"
|
4 |
|
5 | /*! Define that selects the Usart used in example. */
|
6 | #define USARTT USARTE0
|
7 | #define USARTR USARTC0
|
8 |
|
9 | /*! USART data struct used in example. */
|
10 | USART_data_t USART_data;
|
11 |
|
12 | int main(void)
|
13 | {
|
14 | //set 16mhz external programmable clock
|
15 | CLKSYS_XOSC_Config( OSC_FRQRANGE_12TO16_gc,
|
16 | false,
|
17 | OSC_XOSCSEL_EXTCLK_gc );
|
18 | CLKSYS_Enable( OSC_XOSCEN_bm );
|
19 | do {} while ( CLKSYS_IsReady( OSC_XOSCRDY_bm ) == 0 );
|
20 | CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_XOSC_gc );
|
21 |
|
22 | /* PIN3 (TXD0) as output. */
|
23 | PORTE.DIRSET = PIN3_bm;
|
24 | /* PC2 (RXD0) as input. */
|
25 | PORTC.DIRCLR = PIN2_bm;
|
26 |
|
27 |
|
28 | /* Use USARTC0 and initialize buffers. */
|
29 | USART_InterruptDriver_Initialize(&USART_data, &USARTR,&USARTT, USART_DREINTLVL_LO_gc);
|
30 |
|
31 | /* USARTC0, 8 Data bits, No Parity, 1 Stop bit. */
|
32 | USART_Format_Set(&USARTR, USART_CHSIZE_8BIT_gc, USART_PMODE_DISABLED_gc, false);
|
33 | /* USARTE0, 8 Data bits, No Parity, 1 Stop bit. */
|
34 | USART_Format_Set(&USARTT, USART_CHSIZE_8BIT_gc, USART_PMODE_DISABLED_gc, false);
|
35 |
|
36 | /* Enable RXC interrupt. */
|
37 | USART_RxdInterruptLevel_Set(&USARTR, USART_RXCINTLVL_LO_gc);
|
38 |
|
39 | //921600 baud
|
40 | USART_Baudrate_Set(&USARTR, 11 , -7);
|
41 | //11500 baud
|
42 | USART_Baudrate_Set(&USARTT, 983 , -7);
|
43 |
|
44 | /* Enable both RX and TX. */
|
45 | USART_Rx_Enable(&USARTR);
|
46 | USART_Tx_Enable(&USARTT);
|
47 | /* Enable PMIC interrupt level low. */
|
48 | PMIC.CTRL |= PMIC_LOLVLEX_bm;
|
49 | sei();
|
50 | while(true) {
|
51 | }
|
52 | }
|
53 | ISR(USARTC0_RXC_vect)
|
54 | {
|
55 | while (!(USARTE0.STATUS & USART_DREIF_bm));
|
56 | USARTE0.DATA=0x4a;
|
57 | }
|