agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
avr/uart/uart.h File Reference
#include <avr/io.h>
#include <avr/interrupt.h>
Include dependency graph for avr/uart/uart.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define UART_BAUD_SELECT(baudRate, xtalCpu)   (((xtalCpu)+8UL*(baudRate))/(16UL*(baudRate))-1UL)
 
#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate, xtalCpu)   ((((xtalCpu)+4UL*(baudRate))/(8UL*(baudRate))-1)|0x8000)
 
#define ZRTOS_VFS_MODULE_AVR_UART__IS_DOUBLE_SPEED(baudrate)   (0)
 

Functions

uint16_t zrtos_vfs_module_avr_uart__baud_select (zrtos_vfs_module_uart_baudrate_t baudrate)
 
void zrtos_vfs_module_avr_uart__on_receive_interrupt (zrtos_vfs_module_uart_inode_t *thiz, uint8_t data, zrtos_error_t err)
 
bool zrtos_vfs_module_avr_uart__on_transmit_interrupt (zrtos_vfs_module_uart_inode_t *thiz, uint8_t *data)
 

Macro Definition Documentation

◆ UART_BAUD_SELECT

#define UART_BAUD_SELECT (   baudRate,
  xtalCpu 
)    (((xtalCpu)+8UL*(baudRate))/(16UL*(baudRate))-1UL)

UART Baudrate Expression.

Parameters
xtalCpusystem clock in Mhz, e.g. 4000000L for 4Mhz
baudRatebaudrate in bps, e.g. 1200, 2400, 9600

Definition at line 263 of file avr/uart/uart.h.

◆ UART_BAUD_SELECT_DOUBLE_SPEED

#define UART_BAUD_SELECT_DOUBLE_SPEED (   baudRate,
  xtalCpu 
)    ((((xtalCpu)+4UL*(baudRate))/(8UL*(baudRate))-1)|0x8000)

UART Baudrate Expression for ATmega double speed mode.

Parameters
xtalCpusystem clock in Mhz, e.g. 4000000L for 4Mhz
baudRatebaudrate in bps, e.g. 1200, 2400, 9600

Definition at line 269 of file avr/uart/uart.h.

◆ ZRTOS_VFS_MODULE_AVR_UART__IS_DOUBLE_SPEED

#define ZRTOS_VFS_MODULE_AVR_UART__IS_DOUBLE_SPEED (   baudrate)    (0)

Definition at line 275 of file avr/uart/uart.h.

Function Documentation

◆ zrtos_vfs_module_avr_uart__baud_select()

uint16_t zrtos_vfs_module_avr_uart__baud_select ( zrtos_vfs_module_uart_baudrate_t  baudrate)

Definition at line 279 of file avr/uart/uart.h.

281  {
282 #ifdef ZRTOS_VFS_MODULE_UART__CFG_ENABLE_DOUBLE_SPEED
283  uint16_t ret;
284  if(baudrate & ZRTOS_VFS_MODULE_UART_BAUDRATE__DOUBLE_SPEED){
286  (baudrate & ZRTOS_VFS_MODULE_UART_BAUDRATE__MASK
287  );
288  ret = UART_BAUD_SELECT_DOUBLE_SPEED(baudrate,F_CPU);
289  }else{
290  ret = UART_BAUD_SELECT(baudrate,F_CPU);
291  }
292  return ret;
293 #else
294  return UART_BAUD_SELECT(baudrate,F_CPU);
295 #endif
296 }
#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate, xtalCpu)
UART Baudrate Expression for ATmega double speed mode.
#define UART_BAUD_SELECT(baudRate, xtalCpu)
UART Baudrate Expression.
zrtos_vfs_module_uart_baudrate_t
Definition: uart/uart.h:30
Here is the caller graph for this function:

◆ zrtos_vfs_module_avr_uart__on_receive_interrupt()

void zrtos_vfs_module_avr_uart__on_receive_interrupt ( zrtos_vfs_module_uart_inode_t thiz,
uint8_t  data,
zrtos_error_t  err 
)

Definition at line 298 of file avr/uart/uart.h.

302  {
304  thiz
305  );
306 
307  if(zrtos_error__is_error(err)
309  buffer
310  ,data
311  )))
312  || zrtos_error__is_error((err = thiz->on_recv(
313  thiz
314  )))
315  ){
317  &thiz->rx_error_count
318  ,err
319  );
320  }
321 }
zrtos_cbuffer_t * zrtos_vfs_module_uart_inode__get_cbuffer_in(zrtos_vfs_module_uart_inode_t *thiz)
Definition: uart/uart.h:244
zrtos_error_t zrtos_cbuffer__put(zrtos_cbuffer_t *thiz, uint8_t val)
Definition: cbuffer.h:269
zrtos_error_t zrtos_error_count__add(zrtos_error_count_t *thiz, zrtos_error_t err)
Definition: error_count.h:30
bool zrtos_error__is_error(zrtos_error_t thiz)
Definition: error.h:156
zrtos_error_count_t rx_error_count
Definition: uart/uart.h:205
zrtos_vfs_module_uart_callback_t on_recv
Definition: uart/uart.h:210
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_avr_uart__on_transmit_interrupt()

bool zrtos_vfs_module_avr_uart__on_transmit_interrupt ( zrtos_vfs_module_uart_inode_t thiz,
uint8_t data 
)

Definition at line 323 of file avr/uart/uart.h.

326  {
327  zrtos_error_t err;
329  thiz
330  );
331 
332  if(zrtos_error__is_success((err = thiz->on_send(
333  thiz
334  )))
335  ){
337  return true;
338  }
339  }else{
341  &thiz->tx_error_count
342  ,err
343  );
344  }
345 
346  return false;
347 }
zrtos_vfs_module_uart_callback_t on_send
Definition: uart/uart.h:209
zrtos_error_t zrtos_error_count__add(zrtos_error_count_t *thiz, zrtos_error_t err)
Definition: error_count.h:30
zrtos_error_t zrtos_cbuffer__get(zrtos_cbuffer_t *thiz, uint8_t *out)
Definition: cbuffer.h:327
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
zrtos_error_t
Definition: error.h:20
zrtos_error_count_t tx_error_count
Definition: uart/uart.h:206
zrtos_cbuffer_t * zrtos_vfs_module_uart_inode__get_cbuffer_out(zrtos_vfs_module_uart_inode_t *thiz)
Definition: uart/uart.h:250
Here is the call graph for this function:
Here is the caller graph for this function: