Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Erik Strand
lufa
Commits
bd337ace
Commit
bd337ace
authored
Oct 20, 2010
by
Dean Camera
Browse files
Added default test tone generation mode to the Device mode AudioInput demos.
parent
06f222b3
Changes
10
Show whitespace changes
Inline
Side-by-side
Demos/Device/ClassDriver/AudioInput/AudioInput.c
View file @
bd337ace
...
...
@@ -82,9 +82,10 @@ void SetupHardware(void)
/* Hardware Initialization */
LEDs_Init
();
USB
_Init
();
Buttons
_Init
();
ADC_Init
(
ADC_FREE_RUNNING
|
ADC_PRESCALE_32
);
ADC_SetupChannel
(
MIC_IN_ADC_CHANNEL
);
USB_Init
();
/* Start the ADC conversion in free running mode */
ADC_StartReading
(
ADC_REFERENCE_AVCC
|
ADC_RIGHT_ADJUSTED
|
MIC_IN_ADC_MUX_MASK
);
...
...
@@ -101,13 +102,27 @@ void ProcessNextSample(void)
/* Clear the sample reload timer compare flag, ready for the next interval */
TIFR0
|=
(
1
<<
OCF0A
);
int16_t
AudioSample
;
#if defined(USE_TEST_TONE)
static
uint8_t
SquareWaveSampleCount
;
static
int16_t
CurrentWaveValue
;
/* In test tone mode, generate a square wave at 1/256 of the sample rate */
if
(
SquareWaveSampleCount
++
==
0xFF
)
CurrentWaveValue
^=
0x8000
;
/* Only generate audio if the board button is being pressed */
AudioSample
=
(
Buttons_GetStatus
()
&
BUTTONS_BUTTON1
)
?
CurrentWaveValue
:
0
;
#else
/* Audio sample is ADC value scaled to fit the entire range */
int16_t
AudioSample
=
((
SAMPLE_MAX_RANGE
/
ADC_MAX_RANGE
)
*
ADC_GetResult
());
AudioSample
=
((
SAMPLE_MAX_RANGE
/
ADC_MAX_RANGE
)
*
ADC_GetResult
());
#if defined(MICROPHONE_BIASED_TO_HALF_RAIL)
/* Microphone is biased to half rail voltage, subtract the bias from the sample value */
AudioSample
-=
(
SAMPLE_MAX_RANGE
/
2
);
#endif
#endif
Audio_Device_WriteSample16
(
&
Microphone_Audio_Interface
,
AudioSample
);
}
...
...
Demos/Device/ClassDriver/AudioInput/AudioInput.h
View file @
bd337ace
...
...
@@ -44,6 +44,7 @@
#include
<LUFA/Version.h>
#include
<LUFA/Drivers/Board/LEDs.h>
#include
<LUFA/Drivers/Board/Buttons.h>
#include
<LUFA/Drivers/Peripheral/ADC.h>
#include
<LUFA/Drivers/USB/USB.h>
#include
<LUFA/Drivers/USB/Class/Audio.h>
...
...
Demos/Device/ClassDriver/AudioInput/AudioInput.txt
View file @
bd337ace
...
...
@@ -50,11 +50,13 @@
* basic USB Audio 1.0 drivers in all modern OSes (i.e. no special drivers
* required).
*
* On start-up the system will automatically enumerate and function
* as a USB microphone. Incoming audio from the ADC channel 1 will
* be sampled and sent to the host computer.
* On start-up the system will automatically enumerate and function as a
* USB microphone. By default, the demo will produce a square wave test tone
* when the board button is pressed. If USE_TEST_TONE is not defined in the
* project makefile, incoming audio from the ADC channel 1 will be sampled
* and sent to the host computer instead.
*
*
To us
e, connect a microphone to the ADC channel
1
.
*
When in microphone mod
e, connect a microphone to the ADC channel
2
.
*
* Under Windows, if a driver request dialogue pops up, select the option
* to automatically install the appropriate drivers.
...
...
@@ -70,6 +72,12 @@
* <td><b>Description:</b></td>
* </tr>
* <tr>
* <td>USE_TEST_TONE</td>
* <td>Makefile LUFA_OPTS</td>
* <td>When defined, this alters the demo to produce a square wave test tone when the first board button is pressed
* instead of sampling the board microphone.</td>
* </tr>
* <tr>
* <td>MICROPHONE_BIASED_TO_HALF_RAIL</td>
* <td>Makefile LUFA_OPTS</td>
* <td>When defined, this alters the demo so that the half VCC bias of the microphone input is subtracted.</td>
...
...
Demos/Device/ClassDriver/AudioInput/makefile
View file @
bd337ace
...
...
@@ -123,6 +123,7 @@ LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
LUFA_OPTS
+=
-D
USE_STATIC_OPTIONS
=
"(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
LUFA_OPTS
+=
-D
MICROPHONE_BIASED_TO_HALF_RAIL
LUFA_OPTS
+=
-D
USE_TEST_TONE
# Create the LUFA source path variables by including the LUFA root makefile
...
...
Demos/Device/LowLevel/AudioInput/AudioInput.c
View file @
bd337ace
...
...
@@ -68,6 +68,7 @@ void SetupHardware(void)
/* Hardware Initialization */
LEDs_Init
();
Buttons_Init
();
ADC_Init
(
ADC_FREE_RUNNING
|
ADC_PRESCALE_32
);
ADC_SetupChannel
(
MIC_IN_ADC_CHANNEL
);
USB_Init
();
...
...
@@ -164,13 +165,27 @@ void USB_Audio_Task(void)
/* Clear the sample reload timer */
TIFR0
|=
(
1
<<
OCF0A
);
int16_t
AudioSample
;
#if defined(USE_TEST_TONE)
static
uint8_t
SquareWaveSampleCount
;
static
int16_t
CurrentWaveValue
;
/* In test tone mode, generate a square wave at 1/256 of the sample rate */
if
(
SquareWaveSampleCount
++
==
0xFF
)
CurrentWaveValue
^=
0x8000
;
/* Only generate audio if the board button is being pressed */
AudioSample
=
(
Buttons_GetStatus
()
&
BUTTONS_BUTTON1
)
?
CurrentWaveValue
:
0
;
#else
/* Audio sample is ADC value scaled to fit the entire range */
int16_t
AudioSample
=
((
SAMPLE_MAX_RANGE
/
ADC_MAX_RANGE
)
*
ADC_GetResult
());
AudioSample
=
((
SAMPLE_MAX_RANGE
/
ADC_MAX_RANGE
)
*
ADC_GetResult
());
#if defined(MICROPHONE_BIASED_TO_HALF_RAIL)
/* Microphone is biased to half rail voltage, subtract the bias from the sample value */
AudioSample
-=
(
SAMPLE_MAX_RANGE
/
2
);
#endif
#end if
/* Write the sample to the buffer */
Endpoint_Write_Word_LE
(
AudioSample
);
...
...
Demos/Device/LowLevel/AudioInput/AudioInput.h
View file @
bd337ace
...
...
@@ -47,6 +47,7 @@
#include
<LUFA/Version.h>
#include
<LUFA/Drivers/USB/USB.h>
#include
<LUFA/Drivers/Board/LEDs.h>
#include
<LUFA/Drivers/Board/Buttons.h>
#include
<LUFA/Drivers/Peripheral/ADC.h>
/* Macros: */
...
...
Demos/Device/LowLevel/AudioInput/AudioInput.txt
View file @
bd337ace
...
...
@@ -50,11 +50,13 @@
* basic USB Audio 1.0 drivers in all modern OSes (i.e. no special drivers
* required).
*
* On start-up the system will automatically enumerate and function
* as a USB microphone. Incoming audio from the ADC channel 1 will
* be sampled and sent to the host computer.
* On start-up the system will automatically enumerate and function as a
* USB microphone. By default, the demo will produce a square wave test tone
* when the board button is pressed. If USE_TEST_TONE is not defined in the
* project makefile, incoming audio from the ADC channel 1 will be sampled
* and sent to the host computer instead.
*
*
To us
e, connect a microphone to the ADC channel 2.
*
When in microphone mod
e, connect a microphone to the ADC channel 2.
*
* Under Windows, if a driver request dialogue pops up, select the option
* to automatically install the appropriate drivers.
...
...
@@ -70,6 +72,12 @@
* <td><b>Description:</b></td>
* </tr>
* <tr>
* <td>USE_TEST_TONE</td>
* <td>Makefile LUFA_OPTS</td>
* <td>When defined, this alters the demo to produce a square wave test tone when the first board button is pressed
* instead of sampling the board microphone.</td>
* </tr>
* <tr>
* <td>MICROPHONE_BIASED_TO_HALF_RAIL</td>
* <td>Makefile LUFA_OPTS</td>
* <td>When defined, this alters the demo so that the half VCC bias of the microphone input is subtracted.</td>
...
...
Demos/Device/LowLevel/AudioInput/makefile
View file @
bd337ace
...
...
@@ -123,6 +123,7 @@ LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
LUFA_OPTS
+=
-D
USE_STATIC_OPTIONS
=
"(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
LUFA_OPTS
+=
-D
MICROPHONE_BIASED_TO_HALF_RAIL
LUFA_OPTS
+=
-D
USE_TEST_TONE
# Create the LUFA source path variables by including the LUFA root makefile
...
...
LUFA/ManPages/ChangeLog.txt
View file @
bd337ace
...
...
@@ -27,6 +27,7 @@
* - Added board hardware driver support for the Blackcat USB JTAG board (thanks to the PSGroove team)
* - Added board hardware driver support for the Maximus board (thanks to the PSGroove team)
* - Added board hardware driver support for the Minimus board (thanks to the PSGroove team)
* - Added default test tone generation mode to the Device mode AudioInput demos
*
* <b>Changed:</b>
* - Removed complicated logic for the Endpoint_ConfigureEndpoint() function to use inlined or function called versions
...
...
LUFA/ManPages/FutureChanges.txt
View file @
bd337ace
...
...
@@ -7,7 +7,7 @@
/** \page Page_FutureChanges Future Changes
*
* Below is a list of future changes which are proposed for the LUFA library, but not yet started/complete.
* This gives an unordered list of future changes which
will
be available in future releases of the library.
* This gives an unordered list of future changes which
may
be available in future releases of the library.
* If you have an item to add to this list, please contact the library author via email, the LUFA mailing list,
* or post your suggestion as an enhancement request to the project bug tracker.
*
...
...
@@ -18,9 +18,10 @@
* -# Add ability to get number of bytes not written with pipe/endpoint write routines after an error
* -# Change makefiles to allow for absolute LUFA location to be used
* -# Re-add interrupt Pipe/Endpoint support
* -# Fix intermittent device mode enumeration errors
* -# Add HID report macros to make HID report editing easier
* -# Add endpoint/pipe bank kill macros
* -# Investigate dynamically created device descriptors
* -# Add new event for EVENT_USB_Device_ControlRequest() fired before the internal library request handlers
* - Documentation/Support
* -# Add detailed overviews of how each demo works
* -# Add board overviews
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment