agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
uart0.h File Reference
Include dependency graph for uart0.h:

Go to the source code of this file.

Macros

#define ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS   UART0_STATUS
 
#define ZRTOS_VFS_MODULE_AVR_UART_UART0__DATA   UART0_DATA
 

Functions

 ISR (UART0_RECEIVE_INTERRUPT)
 
 ISR (UART0_TRANSMIT_INTERRUPT, ISR_NOBLOCK)
 
zrtos_error_t zrtos_vfs_module_avr_uart0__on_mount (zrtos_vfs_dentry_t *thiz)
 
zrtos_error_t zrtos_vfs_module_avr_uart0__on_umount (zrtos_vfs_dentry_t *thiz)
 
zrtos_error_t zrtos_vfs_module_avr_uart0__on_write (zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *out)
 
 ZRTOS_VFS_PLUGIN__INIT (avr_uart0, ZRTOS_VFS_PLUGIN__0_ON_OPEN_DEFAULT() ZRTOS_VFS_PLUGIN__1_ON_CLOSE_DEFAULT() ZRTOS_VFS_PLUGIN__2_ON_MOUNT(zrtos_vfs_module_avr_uart0__on_mount) ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(zrtos_vfs_module_avr_uart0__on_umount) ZRTOS_VFS_PLUGIN__4_ON_READ(zrtos_vfs_module_uart__on_read) ZRTOS_VFS_PLUGIN__5_ON_WRITE(zrtos_vfs_module_avr_uart0__on_write) ZRTOS_VFS_PLUGIN__6_ON_CAN_READ(zrtos_vfs_module_uart__on_can_read) ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE(zrtos_vfs_module_uart__on_can_write) ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT() ZRTOS_VFS_PLUGIN__9_ON_IOCTL(zrtos_vfs_module_uart__on_ioctl))
 

Variables

zrtos_vfs_module_uart_inode_tzrtos_vfs_module_avr_uart0
 

Macro Definition Documentation

◆ ZRTOS_VFS_MODULE_AVR_UART_UART0__DATA

#define ZRTOS_VFS_MODULE_AVR_UART_UART0__DATA   UART0_DATA

◆ ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS

#define ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS   UART0_STATUS

Function Documentation

◆ ISR() [1/2]

ISR ( UART0_RECEIVE_INTERRUPT  )

Definition at line 19 of file uart0.h.

19  {
20 #if defined(AVR1_USART0)
21 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS USART0_RXDATAH
22 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__DATA USART0.RXDATAL
23 #else
24 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS UART0_STATUS
25 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__DATA UART0_DATA
26 #endif
27 
28 #if defined(AT90_UART)
29 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__ERROR\
30  (ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS & (_BV(FE)|_BV(DOR)|_BV(UPE)))
31 #elif defined(ATMEGA_USART)
32 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__ERROR\
33  (ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS & (_BV(FE)|_BV(DOR)|_BV(UPE)))
34 #elif defined(ATMEGA_USART0)
35 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__ERROR\
36  (ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS & (_BV(FE0)|_BV(DOR0)|_BV(UPE0)))
37 #elif defined(ATMEGA_UART)
38 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__ERROR\
39  (ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS & (_BV(FE)|_BV(DOR)|_BV(UPE)))
40 #elif defined(AVR1_USART0)
41 # define ZRTOS_VFS_MODULE_AVR_UART_UART0__ERROR\
42  (ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS & (USART_BUFOVF_bm | USART_FERR_bm | USART_PERR_bm))
43 #endif
44 
48  ,(
49  ZRTOS_VFS_MODULE_AVR_UART_UART0__ERROR == 0
52  )
53  );
54 
55 #undef ZRTOS_VFS_MODULE_AVR_UART_UART0__STATUS
56 #undef ZRTOS_VFS_MODULE_AVR_UART_UART0__DATA
57 #undef ZRTOS_VFS_MODULE_AVR_UART_UART0__ERROR
58 }
#define ZRTOS_VFS_MODULE_AVR_UART_UART0__DATA
void zrtos_vfs_module_avr_uart__on_receive_interrupt(zrtos_vfs_module_uart_inode_t *thiz, uint8_t data, zrtos_error_t err)
Successful program execution status.
Definition: error.h:22
I/O error.
Definition: error.h:29
zrtos_vfs_module_uart_inode_t * zrtos_vfs_module_avr_uart0
Definition: uart0.h:17
Here is the call graph for this function:

◆ ISR() [2/2]

ISR ( UART0_TRANSMIT_INTERRUPT  ,
ISR_NOBLOCK   
)

Definition at line 60 of file uart0.h.

60  {
61  uint8_t tmp;
64  ,&tmp
65  )){
66 #if defined(AVR1_USART0)
67  USART0_TXDATAL = tmp;
68 #else
69  UART0_DATA = tmp;
70 #endif
71  }else{
72 #if defined(AVR1_USART0)
73  USART0_CTRLA &= ~USART_DREIE_bm;
74 #else
75  UART0_CONTROL &= ~_BV(UART0_UDRIE);
76 #endif
77  }
78 }
bool zrtos_vfs_module_avr_uart__on_transmit_interrupt(zrtos_vfs_module_uart_inode_t *thiz, uint8_t *data)
static uint8_t
Definition: mcp2515.h:159
zrtos_vfs_module_uart_inode_t * zrtos_vfs_module_avr_uart0
Definition: uart0.h:17
Here is the call graph for this function:

◆ zrtos_vfs_module_avr_uart0__on_mount()

zrtos_error_t zrtos_vfs_module_avr_uart0__on_mount ( zrtos_vfs_dentry_t thiz)

Definition at line 80 of file uart0.h.

80  {
81  uint16_t baudrate;
82 
86  thiz
87  )
88  );
89 
92  );
93 
94 #if defined(AT90_UART)
95  /* set baud rate */
96  UBRR = (uint8_t) baudrate;
97 
98  /* enable UART receiver and transmitter and receive complete interrupt */
99  UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
100 
101 #elif defined(ATMEGA_USART)
102  /* Set baud rate */
104  UART0_STATUS = _BV(U2X); //Enable 2x speed
105  baudrate &= ~0x8000;
106  }else{
107  UART0_STATUS &= ~_BV(U2X);
108  }
109  UBRRH = (uint8_t) (baudrate>>8);
110  UBRRL = (uint8_t) baudrate;
111 
112  /* Enable USART receiver and transmitter and receive complete interrupt */
113  UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
114 
115  /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
116 #ifdef URSEL
117  UCSRC = _BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0);
118 #else
119  UCSRC = _BV(UCSZ1)|_BV(UCSZ0);
120 #endif
121 
122 #elif defined(ATMEGA_USART0)
123  /* Set baud rate */
125  UART0_STATUS = _BV(U2X0); //Enable 2x speed
126  baudrate &= ~0x8000;
127  }else{
128  UART0_STATUS &= ~_BV(U2X0);
129  }
130  UBRR0H = (uint8_t)(baudrate>>8);
131  UBRR0L = (uint8_t) baudrate;
132 
133  /* Enable USART receiver and transmitter and receive complete interrupt */
134  UART0_CONTROL = _BV(RXCIE0)|_BV(RXEN0)|_BV(TXEN0);
135 
136  /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
137 #ifdef URSEL0
138  UCSR0C = _BV(URSEL0)|_BV(UCSZ01)|_BV(UCSZ00);
139 #else
140  UCSR0C = _BV(UCSZ01)|_BV(UCSZ00);
141 #endif
142 
143 #elif defined(ATMEGA_UART)
144  /* set baud rate */
146  UART0_STATUS = _BV(U2X); //Enable 2x speed
147  baudrate &= ~0x8000;
148  }else{
149  UART0_STATUS &= ~_BV(U2X);
150  }
151  UBRRHI = (uint8_t) (baudrate>>8);
152  UBRR = (uint8_t) baudrate;
153 
154  /* Enable UART receiver and transmitter and receive complete interrupt */
155  UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
156 
157 #elif defined(AVR1_USART0)
158  // set the baud rate
159  USART0.BAUD = USART0_BAUD_RATE(baudrate);
160 
161  USART0.CTRLA = USART_RXCIE_bm;
162  USART0.CTRLB = USART_TXEN_bm | USART_RXEN_bm | USART_RXMODE_NORMAL_gc;
163  // Default configuration of CTRLC is 8N1 in asynchronous mode
164 #endif
165 
166  return ZRTOS_ERROR__SUCCESS;
167 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
zrtos_vfs_module_uart_baudrate_t baudrate
Definition: uart/uart.h:207
#define ZRTOS_VFS_MODULE_AVR_UART__IS_DOUBLE_SPEED(baudrate)
Successful program execution status.
Definition: error.h:22
void * zrtos_vfs_dentry__get_inode_data(zrtos_vfs_dentry_t *thiz)
Definition: vfs_dentry.h:196
uint16_t zrtos_vfs_module_avr_uart__baud_select(zrtos_vfs_module_uart_baudrate_t baudrate)
static uint8_t
Definition: mcp2515.h:159
zrtos_vfs_module_uart_inode_t * zrtos_vfs_module_avr_uart0
Definition: uart0.h:17
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_avr_uart0__on_umount()

zrtos_error_t zrtos_vfs_module_avr_uart0__on_umount ( zrtos_vfs_dentry_t thiz)

Definition at line 169 of file uart0.h.

169  {
170 #if defined(AVR1_USART0)
171  USART0_CTRLA &= ~USART_DREIE_bm;
172 #else
173  UART0_CONTROL &= ~_BV(UART0_UDRIE);
174 #endif
175  return ZRTOS_ERROR__SUCCESS;
176 }
Successful program execution status.
Definition: error.h:22
Here is the caller graph for this function:

◆ zrtos_vfs_module_avr_uart0__on_write()

zrtos_error_t zrtos_vfs_module_avr_uart0__on_write ( zrtos_vfs_file_t thiz,
char *  path,
void *  buf,
size_t  len,
zrtos_vfs_offset_t  offset,
size_t out 
)

Definition at line 178 of file uart0.h.

185  {
187  thiz
188  ,path
189  ,buf
190  ,len
191  ,offset
192  ,out
193  );
194  if(zrtos_error__is_success(ret)){
195 #if defined(AVR1_USART0)
196  USART0_CTRLA |= USART_DREIE_bm;
197 #else
198  UART0_CONTROL |= _BV(UART0_UDRIE);
199 #endif
200  }
201  return ret;
202 }
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
zrtos_error_t zrtos_vfs_module_uart__on_write(zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *out)
Definition: uart/uart.h:317
zrtos_error_t
Definition: error.h:20
Here is the call graph for this function:

◆ ZRTOS_VFS_PLUGIN__INIT()

Variable Documentation

◆ zrtos_vfs_module_avr_uart0

zrtos_vfs_module_uart_inode_t* zrtos_vfs_module_avr_uart0

Definition at line 17 of file uart0.h.