agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
adc.h File Reference
#include <avr/io.h>
#include <avr/interrupt.h>
#include <zrtos/vfs_plugin.h>
#include <zrtos/types.h>
#include <zrtos/cast.h>
#include <zrtos/binary.h>
Include dependency graph for adc.h:

Go to the source code of this file.

Data Structures

struct  zrtos_vfs_module_avr_adc_t
 

Macros

#define ZRTOS_VFS_MODULE_AVR_ADC__CFG_REFERENCE_VOLT   (5.0)
 

Typedefs

typedef struct zrtos_vfs_module_avr_adc_t zrtos_vfs_module_avr_adc_t
 

Enumerations

enum  zrtos_vfs_module_avr_adc_prescaler_t {
  ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__2 = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__4 = ZRTOS_BINARY__00000010,
  ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__8 = ZRTOS_BINARY__00000011,
  ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__16 = ZRTOS_BINARY__00000100,
  ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__32 = ZRTOS_BINARY__00000101,
  ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__64 = ZRTOS_BINARY__00000110,
  ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__128 = ZRTOS_BINARY__00000111
}
 
enum  zrtos_vfs_module_avr_adc_vref_t {
  ZRTOS_VFS_MODULE_AVR_ADC_VREF__EXTERN = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_AVR_ADC_VREF__INTERN = ZRTOS_BINARY__01000000,
  ZRTOS_VFS_MODULE_AVR_ADC_VREF__MISC1 = ZRTOS_BINARY__10000000,
  ZRTOS_VFS_MODULE_AVR_ADC_VREF__MISC2 = ZRTOS_BINARY__11000000
}
 

Functions

float zrtos_vfs_module_avr_adc__to_volt (uint16_t val, float vref)
 
 ISR (ADC_vect)
 
zrtos_error_t zrtos_vfs_module_avr_adc__on_mount (zrtos_vfs_dentry_t *thiz)
 
zrtos_error_t zrtos_vfs_module_avr_adc__on_umount (zrtos_vfs_dentry_t *thiz)
 
zrtos_error_t zrtos_vfs_module_avr_adc__on_read (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_adc, ZRTOS_VFS_PLUGIN__0_ON_OPEN_DEFAULT() ZRTOS_VFS_PLUGIN__1_ON_CLOSE_DEFAULT() ZRTOS_VFS_PLUGIN__2_ON_MOUNT(zrtos_vfs_module_avr_adc__on_mount) ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(zrtos_vfs_module_avr_adc__on_umount) ZRTOS_VFS_PLUGIN__4_ON_READ(zrtos_vfs_module_avr_adc__on_read) ZRTOS_VFS_PLUGIN__5_ON_WRITE_DEFAULT() ZRTOS_VFS_PLUGIN__6_ON_CAN_READ_DEFAULT() ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE(zrtos_vfs_plugin__default_can_write_read_only) ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT() ZRTOS_VFS_PLUGIN__9_ON_IOCTL_DEFAULT())
 

Variables

zrtos_vfs_module_avr_adc_t zrtos_vfs_module_avr_adc__data
 

Macro Definition Documentation

◆ ZRTOS_VFS_MODULE_AVR_ADC__CFG_REFERENCE_VOLT

#define ZRTOS_VFS_MODULE_AVR_ADC__CFG_REFERENCE_VOLT   (5.0)

Definition at line 52 of file adc.h.

Typedef Documentation

◆ zrtos_vfs_module_avr_adc_t

Enumeration Type Documentation

◆ zrtos_vfs_module_avr_adc_prescaler_t

Enumerator
ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__2 
ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__4 
ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__8 
ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__16 
ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__32 
ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__64 
ZRTOS_VFS_MODULE_AVR_ADC_PRESCALER__128 

Definition at line 21 of file adc.h.

21  {
#define ZRTOS_BINARY__00000101
Definition: binary.h:52
#define ZRTOS_BINARY__00000111
Definition: binary.h:54
#define ZRTOS_BINARY__00000011
Definition: binary.h:50
#define ZRTOS_BINARY__00000010
Definition: binary.h:49
#define ZRTOS_BINARY__00000100
Definition: binary.h:51
#define ZRTOS_BINARY__00000000
Definition: binary.h:47
#define ZRTOS_BINARY__00000110
Definition: binary.h:53
zrtos_vfs_module_avr_adc_prescaler_t
Definition: adc.h:21

◆ zrtos_vfs_module_avr_adc_vref_t

Enumerator
ZRTOS_VFS_MODULE_AVR_ADC_VREF__EXTERN 
ZRTOS_VFS_MODULE_AVR_ADC_VREF__INTERN 
ZRTOS_VFS_MODULE_AVR_ADC_VREF__MISC1 
ZRTOS_VFS_MODULE_AVR_ADC_VREF__MISC2 

Definition at line 31 of file adc.h.

Function Documentation

◆ ISR()

ISR ( ADC_vect  )

Definition at line 67 of file adc.h.

67  {
68  static uint8_t channel = 0;
69  uint16_t val = ADCL;
70  val |= (ADCH<<8);
71 
72  zrtos_vfs_module_avr_adc__data.data[channel] = val;
73 
74  channel++;
76  channel = 0;
77  }
78 
79 #ifdef MUX5
80  if (channel > 7) {
81  ADCSRB |= _BV(MUX5);
82  ADMUX = (ADMUX & ~(0x1F)) | ((channel-8) & 0x1F);
83  } else {
84  ADCSRB &= ~(_BV(MUX5));
85  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
86  }
87 #else
88  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
89 #endif
90 
91  ADCSRA |= _BV(ADSC);
92 }
#define ZRTOS_VFS_MODULE_AVR_ADC__CFG_MAX_CHANNEL
Definition: cfg.h:27
uint16_t data[ZRTOS_VFS_MODULE_AVR_ADC__CFG_MAX_CHANNEL]
Definition: adc.h:58
zrtos_vfs_module_avr_adc_t zrtos_vfs_module_avr_adc__data
Definition: adc.h:61
static uint8_t
Definition: mcp2515.h:159

◆ zrtos_vfs_module_avr_adc__on_mount()

zrtos_error_t zrtos_vfs_module_avr_adc__on_mount ( zrtos_vfs_dentry_t thiz)

Definition at line 94 of file adc.h.

94  {
96 #ifdef MUX5
97  ADCSRB &= ~(_BV(MUX5));
98 #endif
99  ADCSRA = _BV(ADEN)
100  | _BV(ADSC)
101  | _BV(ADIE)
103  ;
104  return ZRTOS_ERROR__SUCCESS;
105 }
#define ZRTOS_VFS_MODULE_AVR_ADC__CFG_VREF
Definition: cfg.h:30
#define ZRTOS_VFS_MODULE_AVR_ADC__CFG_PRESCALER
Definition: cfg.h:28
Successful program execution status.
Definition: error.h:22
Here is the caller graph for this function:

◆ zrtos_vfs_module_avr_adc__on_read()

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

Definition at line 112 of file adc.h.

119  {
121  size_t start_offset = (size_t)offset;
122  size_t channel = start_offset/sizeof(float);
123 
124  if(len != sizeof(float)
125  ||(start_offset % sizeof(float)) != 0){
126  ret = ZRTOS_ERROR__INVAL;
127  }else if(channel < ZRTOS_VFS_MODULE_AVR_ADC__CFG_MAX_CHANNEL){
131  );
132 
133  zrtos_mem__cpy(buf,&val,sizeof(float));
134 
135  ret = ZRTOS_ERROR__SUCCESS;
136  }
137 
138  return ret;
139 }
#define ZRTOS_VFS_MODULE_AVR_ADC__CFG_MAX_CHANNEL
Definition: cfg.h:27
uint16_t data[ZRTOS_VFS_MODULE_AVR_ADC__CFG_MAX_CHANNEL]
Definition: adc.h:58
uint16_t size_t
Definition: types.h:22
void zrtos_mem__cpy(void *dest, void *src, size_t length)
Definition: mem.h:105
Successful program execution status.
Definition: error.h:22
Bad address.
Definition: error.h:38
Invalid argument.
Definition: error.h:46
#define ZRTOS_VFS_MODULE_AVR_ADC__CFG_REFERENCE_VOLT
Definition: adc.h:52
zrtos_vfs_module_avr_adc_t zrtos_vfs_module_avr_adc__data
Definition: adc.h:61
float zrtos_vfs_module_avr_adc__to_volt(uint16_t val, float vref)
Definition: adc.h:63
zrtos_error_t
Definition: error.h:20
Here is the call graph for this function:

◆ zrtos_vfs_module_avr_adc__on_umount()

zrtos_error_t zrtos_vfs_module_avr_adc__on_umount ( zrtos_vfs_dentry_t thiz)

Definition at line 107 of file adc.h.

107  {
108  ADCSRA = 0;
109  return ZRTOS_ERROR__SUCCESS;
110 }
Successful program execution status.
Definition: error.h:22
Here is the caller graph for this function:

◆ zrtos_vfs_module_avr_adc__to_volt()

float zrtos_vfs_module_avr_adc__to_volt ( uint16_t  val,
float  vref 
)

Definition at line 63 of file adc.h.

63  {
64  return (((float)val) * vref) / 1024.0;
65 }
Here is the caller graph for this function:

◆ ZRTOS_VFS_PLUGIN__INIT()

Variable Documentation

◆ zrtos_vfs_module_avr_adc__data

zrtos_vfs_module_avr_adc_t zrtos_vfs_module_avr_adc__data

Definition at line 61 of file adc.h.