From bbf89d81fa225fedc5ab1190ebfa8c775612178c Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 2 Aug 2009 11:43:16 +0000 Subject: [PATCH] Make both LowLevel and ClassDriver AudioOutput demos always output to board LEDs, regardless of output mode (removed AUDIO_OUT_LEDS compile time option from the demo). This allows for positive feedback to the user of audio activity regardless of output mode. --- .../ClassDriver/AudioOutput/AudioOutput.c | 20 +++++++++---------- .../ClassDriver/AudioOutput/AudioOutput.txt | 15 +++++--------- .../Device/LowLevel/AudioOutput/AudioOutput.c | 20 +++++++++---------- .../LowLevel/AudioOutput/AudioOutput.txt | 15 +++++--------- 4 files changed, 28 insertions(+), 42 deletions(-) diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c index 2caf6faa6d..9a8804a45e 100644 --- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c +++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c @@ -103,10 +103,11 @@ void ProcessNextSample(void) int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8); int8_t RightSample_8Bit = (RightSample_16Bit >> 8); -#if !defined(AUDIO_OUT_STEREO) /* Mix the two channels together to produce a mono, 8-bit sample */ int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1); -#endif + + /* Get absolute value of mixed sample value */ + uint8_t MixedSample_8Bit_Abs = abs(MixedSample_8Bit); #if defined(AUDIO_OUT_MONO) /* Load the sample into the PWM timer channel */ @@ -118,26 +119,23 @@ void ProcessNextSample(void) #elif defined(AUDIO_OUT_PORTC) /* Load the 8-bit mixed sample into PORTC */ PORTC = MixedSample_8Bit; -#else - uint8_t LEDMask = LEDS_NO_LEDS; +#endif - /* Make mixed sample value positive (absolute) */ - MixedSample_8Bit = abs(MixedSample_8Bit); + uint8_t LEDMask = LEDS_NO_LEDS; - if (MixedSample_8Bit > 2) + if (MixedSample_8Bit_Abs > 2) LEDMask |= LEDS_LED1; - if (MixedSample_8Bit > 4) + if (MixedSample_8Bit_Abs > 4) LEDMask |= LEDS_LED2; - if (MixedSample_8Bit > 8) + if (MixedSample_8Bit_Abs > 8) LEDMask |= LEDS_LED3; - if (MixedSample_8Bit > 16) + if (MixedSample_8Bit_Abs > 16) LEDMask |= LEDS_LED4; LEDs_SetAllLEDs(LEDMask); -#endif } } diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.txt b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.txt index ffae9ed576..96d241c57d 100644 --- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.txt +++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.txt @@ -53,11 +53,11 @@ * required). * * On start-up the system will automatically enumerate and function - * as a USB speaker. Incoming audio will output in 8-bit PWM onto - * the timer output (timer 3 for the AT90USBXXX6/7 USB AVRs, timer 1 for - * the AT90USBXXX2 controller AVRs) compare channel A for AUDIO_OUT_MONO - * mode, on channels A and B for AUDIO_OUT_STEREO and on the board LEDs - * for AUDIO_OUT_LEDS mode. Decouple audio outputs with a capacitor and + * as a USB speaker. Outgoing audio will output in 8-bit PWM onto + * the timer 3 output compare channel A for AUDIO_OUT_MONO mode, on + * timer 3 channels A and B for AUDIO_OUT_STEREO and on PORTC as a signed + * mono sample for AUDIO_OUT_PORTC. Audio output will also be indicated on + * the board LEDs in all modes. Decouple audio outputs with a capacitor and * attach to a speaker to hear the audio. * * Under Windows, if a driver request dialogue pops up, select the option @@ -84,11 +84,6 @@ * When defined, this outputs the audio samples in mono to the timer output pin of the microcontroller. * * - * AUDIO_OUT_LEDS - * Makefile CDEFS - * When defined, this outputs the audio samples in stereo to the board LEDs. - * - * * AUDIO_OUT_PORTC * Makefile CDEFS * When defined, this outputs the audio samples in mono to port C of the microcontroller, for connection to an diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c index 352d07482a..7dde84bb33 100644 --- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c +++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c @@ -210,10 +210,11 @@ void USB_Audio_Task(void) int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8); int8_t RightSample_8Bit = (RightSample_16Bit >> 8); -#if !defined(AUDIO_OUT_STEREO) /* Mix the two channels together to produce a mono, 8-bit sample */ int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1); -#endif + + /* Get absolute value of mixed sample value */ + uint8_t MixedSample_8Bit_Abs = abs(MixedSample_8Bit); #if defined(AUDIO_OUT_MONO) /* Load the sample into the PWM timer channel */ @@ -225,25 +226,22 @@ void USB_Audio_Task(void) #elif defined(AUDIO_OUT_PORTC) /* Load the 8-bit mixed sample into PORTC */ PORTC = MixedSample_8Bit; -#else - uint8_t LEDMask = LEDS_NO_LEDS; +#endif - /* Make mixed sample value positive (absolute) */ - MixedSample_8Bit = abs(MixedSample_8Bit); + uint8_t LEDMask = LEDS_NO_LEDS; - if (MixedSample_8Bit > 2) + if (MixedSample_8Bit_Abs > 2) LEDMask |= LEDS_LED1; - if (MixedSample_8Bit > 4) + if (MixedSample_8Bit_Abs > 4) LEDMask |= LEDS_LED2; - if (MixedSample_8Bit > 8) + if (MixedSample_8Bit_Abs > 8) LEDMask |= LEDS_LED3; - if (MixedSample_8Bit > 16) + if (MixedSample_8Bit_Abs > 16) LEDMask |= LEDS_LED4; LEDs_SetAllLEDs(LEDMask); -#endif } } diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt b/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt index ffae9ed576..96d241c57d 100644 --- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt +++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt @@ -53,11 +53,11 @@ * required). * * On start-up the system will automatically enumerate and function - * as a USB speaker. Incoming audio will output in 8-bit PWM onto - * the timer output (timer 3 for the AT90USBXXX6/7 USB AVRs, timer 1 for - * the AT90USBXXX2 controller AVRs) compare channel A for AUDIO_OUT_MONO - * mode, on channels A and B for AUDIO_OUT_STEREO and on the board LEDs - * for AUDIO_OUT_LEDS mode. Decouple audio outputs with a capacitor and + * as a USB speaker. Outgoing audio will output in 8-bit PWM onto + * the timer 3 output compare channel A for AUDIO_OUT_MONO mode, on + * timer 3 channels A and B for AUDIO_OUT_STEREO and on PORTC as a signed + * mono sample for AUDIO_OUT_PORTC. Audio output will also be indicated on + * the board LEDs in all modes. Decouple audio outputs with a capacitor and * attach to a speaker to hear the audio. * * Under Windows, if a driver request dialogue pops up, select the option @@ -84,11 +84,6 @@ * When defined, this outputs the audio samples in mono to the timer output pin of the microcontroller. * * - * AUDIO_OUT_LEDS - * Makefile CDEFS - * When defined, this outputs the audio samples in stereo to the board LEDs. - * - * * AUDIO_OUT_PORTC * Makefile CDEFS * When defined, this outputs the audio samples in mono to port C of the microcontroller, for connection to an