arduino-audio-tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
PWMDriverAVR Class Reference

Experimental: Audio output to PWM pins for the AVR. The AVR supports only up to 2 channels. More...

#include <PWMAudioAVR.h>

Inheritance diagram for PWMDriverAVR:
DriverPWMBase

Public Member Functions

PWMConfigaudioInfo ()
 
virtual int availableForWrite ()
 
bool begin (PWMConfig cfg)
 
virtual PWMConfig defaultConfig ()
 
virtual int effectiveOutputSampleRate ()
 Provides the effective sample rate.
 
virtual void end ()
 
uint32_t framesPerSecond ()
 
bool isTimerStarted ()
 
void logConfig ()
 
virtual int maxChannels ()
 
virtual void pwmWrite (int channel, int value)
 
void setBuffer (BaseBuffer< uint8_t > *buffer)
 
void setupPin (int pin)
 
void setupPWM ()
 Setup LED PWM.
 
void setupTimer ()
 
void startTimer ()
 
uint32_t underflowsPerSecond ()
 
void updateStatistics ()
 
virtual size_t write (const uint8_t *data, size_t len)
 

Protected Member Functions

virtual int decimation ()
 Decimation factor to reduce the sample rate.
 
void deleteBuffer ()
 
virtual bool isDecimateActive ()
 
virtual int maxOutputValue ()
 
virtual int maxSampleRate ()
 Provides the max working sample rate.
 
virtual int nextValue ()
 determines the next scaled value
 
void playNextFrame ()
 writes the next frame to the output pins
 

Protected Attributes

AudioInfo actual_info
 
PWMConfig audio_config
 
BaseBuffer< uint8_t > * buffer = nullptr
 
Decimate decimate
 
int decimation_factor = 0
 
uint32_t frame_count = 0
 
uint32_t frame_size = 0
 
uint32_t frames_per_second = 0
 
bool is_blocking_write = true
 
bool is_timer_started = false
 
int pins [2] = {3, 11}
 
uint32_t time_1_sec
 
uint32_t underflow_count = 0
 
uint32_t underflow_per_second = 0
 

Friends

void defaultPWMAudioOutputCallback ()
 

Detailed Description

Experimental: Audio output to PWM pins for the AVR. The AVR supports only up to 2 channels.

Author
Phil Schatzmann

Member Function Documentation

◆ decimation()

virtual int decimation ( )
inlineprotectedvirtualinherited

Decimation factor to reduce the sample rate.

Reimplemented in PWMDriverRenesas.

◆ end()

virtual void end ( )
inlinevirtual

Reimplemented from DriverPWMBase.

◆ isDecimateActive()

virtual bool isDecimateActive ( )
inlineprotectedvirtualinherited

The requested sampling rate is too hight: we only process half of the samples so we can half the sampling rate

◆ maxChannels()

virtual int maxChannels ( )
inlinevirtual

Implements DriverPWMBase.

◆ maxOutputValue()

virtual int maxOutputValue ( )
inlineprotectedvirtual

Implements DriverPWMBase.

◆ maxSampleRate()

virtual int maxSampleRate ( )
inlineprotectedvirtualinherited

Provides the max working sample rate.

Reimplemented in PWMDriverRenesas.

◆ pwmWrite()

virtual void pwmWrite ( int  channel,
int  value 
)
inlinevirtual

Implements DriverPWMBase.

◆ setBuffer()

void setBuffer ( BaseBuffer< uint8_t > *  buffer)
inlineinherited

You can assign your own custom buffer impelementation: must be allocated on the heap and will be cleaned up by this class

◆ setupPWM()

void setupPWM ( )
inlinevirtual

Setup LED PWM.

Implements DriverPWMBase.

◆ setupTimer()

void setupTimer ( )
inlinevirtual

Implements DriverPWMBase.

◆ startTimer()

void startTimer ( )
inlinevirtual

Implements DriverPWMBase.

Friends And Related Symbol Documentation

◆ defaultPWMAudioOutputCallback

void defaultPWMAudioOutputCallback ( )
friend

separate method that can be defined as friend so that we can access protected information


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