EE445M RTOS
Taken at the University of Texas Spring 2015
adc Class Reference

#include <adcpp.hpp>

Inheritance diagram for adc:
Inheritance graph
Collaboration diagram for adc:
Collaboration graph

Public Member Functions

 adc ()
 
 adc (memory_address_t adc_base, uint8_t adc_trigger_source, uint8_t adc_sequencer)
 
void configure_sequence (uint32_t sequencer_configuration)
 
void configure_timer_interrupt (uint32_t timer_base, uint32_t timer_subtimer)
 
void configure_timer_interrupt (timer *t)
 
virtual void start (void)
 
virtual void stop (void)
 
virtual uint32_t ack (void)
 
void sample (void)
 
uint32_t get_sample (uint8_t i)
 
- Public Member Functions inherited from interruptable
 interruptable ()
 

Public Attributes

memory_address_t base
 
uint8_t sequencer
 
uint8_t channel_count
 
uint32_t configuration
 
uint8_t trigger_source
 
uint32_t sequencer_data [max_num_sequencer_steps]
 

Static Private Attributes

static const uint8_t default_priority = 0
 
static const uint8_t max_num_sequencer_steps = 8
 

Detailed Description

Definition at line 18 of file adcpp.hpp.

Constructor & Destructor Documentation

adc::adc ( )

Initialize adc.

Definition at line 13 of file adcpp.cpp.

13 {}
adc::adc ( memory_address_t  adc_base,
uint8_t  adc_trigger_source,
uint8_t  adc_sequencer 
)

Definition at line 15 of file adcpp.cpp.

References base, channel_count, default_priority, sequencer, and trigger_source.

16  {
17 
18  base = adc_base;
19  trigger_source = adc_trigger_source;
20  sequencer = adc_sequencer;
21 
22  /* TODO: determine where the other ADC ports are located */
23  switch(adc_base) {
24  case ADC0_BASE:
25  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
26  SysCtlGPIOAHBEnable(SYSCTL_PERIPH_GPIOE);
27  GPIOPinTypeADC(GPIO_PORTE_AHB_BASE,
28  GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_0);
29  SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
30  SysCtlPeripheralReset(SYSCTL_PERIPH_ADC0);
31  break;
32  default:
33  while(1) {}
34  }
35  /* we don't have to set the reference for the internal ADC, but we
36  might if we have an external one. */
37  ADCReferenceSet(base, ADC_REF_INT);
38 
39  ADCSequenceConfigure(base, sequencer, trigger_source, default_priority);
40 
41  channel_count = 0;
42 }
static const uint8_t default_priority
Definition: adcpp.hpp:20
uint8_t sequencer
Definition: adcpp.hpp:25
memory_address_t base
Definition: adcpp.hpp:24
uint8_t trigger_source
Definition: adcpp.hpp:28
uint8_t channel_count
Definition: adcpp.hpp:26

Member Function Documentation

uint32_t adc::ack ( void  )
virtual

Implements interruptable.

Definition at line 95 of file adcpp.cpp.

References base, and sequencer.

Referenced by ADC0Seq0_Handler().

95  {
96 
97  ADCIntClear(base, sequencer);
98  return 0xDEADBEEF;
99 }
uint8_t sequencer
Definition: adcpp.hpp:25
memory_address_t base
Definition: adcpp.hpp:24

Here is the caller graph for this function:

void adc::configure_sequence ( uint32_t  sequencer_configuration)

Configure an adc channel

Definition at line 55 of file adcpp.cpp.

References base, channel_count, and sequencer.

Referenced by main().

55  {
56 
57  /* From TI: Configure step 0 on sequence 3. Sample channel 0
58  (ADC_CTL_CH0) in single-ended mode (default) and configure the
59  interrupt flag (ADC_CTL_IE) to be set when the sample is done.
60  Tell the ADC logic that this is the last conversion on sequence
61  3 (ADC_CTL_END). Sequence 3 has only one programmable step.
62  Sequence 1 and 2 have 4 steps, and sequence 0 has 8
63  programmable steps. Since we are only doing a single
64  conversion using sequence 3 we will only configure step 0. For
65  more information on the ADC sequences and steps, reference the
66  datasheet. */
67  ADCSequenceStepConfigure(base, sequencer, channel_count,
68  sequencer_configuration);
69  ++channel_count;
70 }
uint8_t sequencer
Definition: adcpp.hpp:25
memory_address_t base
Definition: adcpp.hpp:24
uint8_t channel_count
Definition: adcpp.hpp:26

Here is the caller graph for this function:

void adc::configure_timer_interrupt ( uint32_t  timer_base,
uint32_t  timer_subtimer 
)

Definition at line 49 of file adcpp.cpp.

Referenced by main().

49  {
50 
51  TimerControlTrigger(timer_base, timer_subtimer, true);
52 }

Here is the caller graph for this function:

void adc::configure_timer_interrupt ( timer t)

Definition at line 44 of file adcpp.cpp.

References timer::get_base(), and timer::get_subtimer().

44  {
45 
46  TimerControlTrigger(t->get_base(), t->get_subtimer(), true);
47 }
const uint32_t get_base()
Definition: timerpp.cpp:109
const subtimer_t get_subtimer()
Definition: timerpp.cpp:105

Here is the call graph for this function:

uint32_t adc::get_sample ( uint8_t  i)

Definition at line 91 of file adcpp.cpp.

References sequencer_data.

Referenced by ir::sample().

91  {
92  return sequencer_data[i];
93 }
uint32_t sequencer_data[max_num_sequencer_steps]
Definition: adcpp.hpp:29

Here is the caller graph for this function:

void adc::sample ( void  )

Definition at line 86 of file adcpp.cpp.

References base, sequencer, and sequencer_data.

Referenced by ADC0Seq0_Handler().

86  {
87 
88  ADCSequenceDataGet(base, sequencer, sequencer_data);
89 }
uint32_t sequencer_data[max_num_sequencer_steps]
Definition: adcpp.hpp:29
uint8_t sequencer
Definition: adcpp.hpp:25
memory_address_t base
Definition: adcpp.hpp:24

Here is the caller graph for this function:

void adc::start ( void  )
virtual

Implements interruptable.

Definition at line 72 of file adcpp.cpp.

References base, and sequencer.

Referenced by main().

72  {
73 
74  IntEnable(INT_ADC0SS0 + sequencer);
75  ADCIntEnable(base, sequencer);
76  ADCSequenceEnable(base, sequencer);
77 }
uint8_t sequencer
Definition: adcpp.hpp:25
memory_address_t base
Definition: adcpp.hpp:24

Here is the caller graph for this function:

void adc::stop ( void  )
virtual

Implements interruptable.

Definition at line 79 of file adcpp.cpp.

References base, and sequencer.

79  {
80 
81  IntDisable(INT_ADC0SS0 + sequencer);
82  ADCIntDisable(base, sequencer);
83  ADCSequenceDisable(base, sequencer);
84 }
uint8_t sequencer
Definition: adcpp.hpp:25
memory_address_t base
Definition: adcpp.hpp:24

Member Data Documentation

memory_address_t adc::base

Definition at line 24 of file adcpp.hpp.

Referenced by ack(), adc(), configure_sequence(), sample(), start(), and stop().

uint8_t adc::channel_count

Definition at line 26 of file adcpp.hpp.

Referenced by adc(), and configure_sequence().

uint32_t adc::configuration

Definition at line 27 of file adcpp.hpp.

const uint8_t adc::default_priority = 0
staticprivate

Definition at line 20 of file adcpp.hpp.

Referenced by adc().

const uint8_t adc::max_num_sequencer_steps = 8
staticprivate

Definition at line 21 of file adcpp.hpp.

uint8_t adc::sequencer

Definition at line 25 of file adcpp.hpp.

Referenced by ack(), adc(), configure_sequence(), sample(), start(), and stop().

uint32_t adc::sequencer_data[max_num_sequencer_steps]

Definition at line 29 of file adcpp.hpp.

Referenced by get_sample(), and sample().

uint8_t adc::trigger_source

Definition at line 28 of file adcpp.hpp.

Referenced by adc().


The documentation for this class was generated from the following files: