Make LowLevel AudioOutput demo work in the same way as the ClassDriver AudioOutput demo for LEDs output.

pull/1469/head
Dean Camera 16 years ago
parent 61ff4824a9
commit 23c1653efe

@ -210,10 +210,10 @@ void USB_Audio_Task(void)
int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8); int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8);
int8_t RightSample_8Bit = (RightSample_16Bit >> 8); int8_t RightSample_8Bit = (RightSample_16Bit >> 8);
#if defined(AUDIO_OUT_MONO)
/* Mix the two channels together to produce a mono, 8-bit sample */ /* 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); int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);
#if defined(AUDIO_OUT_MONO)
/* Load the sample into the PWM timer channel */ /* Load the sample into the PWM timer channel */
OCR3A = ((uint8_t)MixedSample_8Bit ^ (1 << 7)); OCR3A = ((uint8_t)MixedSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_STEREO) #elif defined(AUDIO_OUT_STEREO)
@ -221,37 +221,26 @@ void USB_Audio_Task(void)
OCR3A = ((uint8_t)LeftSample_8Bit ^ (1 << 7)); OCR3A = ((uint8_t)LeftSample_8Bit ^ (1 << 7));
OCR3B = ((uint8_t)RightSample_8Bit ^ (1 << 7)); OCR3B = ((uint8_t)RightSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_PORTC) #elif defined(AUDIO_OUT_PORTC)
/* Mix the two channels together to produce a mono, 8-bit sample */ /* Load the 8-bit mixed sample into PORTC */
int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);
PORTC = MixedSample_8Bit; PORTC = MixedSample_8Bit;
#else #else
uint8_t LEDMask = LEDS_NO_LEDS; uint8_t LEDMask = LEDS_NO_LEDS;
/* Make left channel positive (absolute) */ /* Make mixed sample value positive (absolute) */
if (LeftSample_8Bit < 0) MixedSample_8Bit = abs(MixedSample_8Bit);
LeftSample_8Bit = -LeftSample_8Bit;
/* Make right channel positive (absolute) */ if (MixedSample_8Bit > ((128 / 8) * 1))
if (RightSample_8Bit < 0) LEDMask |= LEDS_LED1;
RightSample_8Bit = -RightSample_8Bit;
/* Set first LED based on sample value */ if (MixedSample_8Bit > ((128 / 8) * 2))
if (LeftSample_8Bit < ((128 / 8) * 1))
LEDMask |= LEDS_LED2; LEDMask |= LEDS_LED2;
else if (LeftSample_8Bit < ((128 / 8) * 3))
LEDMask |= (LEDS_LED1 | LEDS_LED2);
else
LEDMask |= LEDS_LED1;
/* Set second LED based on sample value */ if (MixedSample_8Bit > ((128 / 8) * 3))
if (RightSample_8Bit < ((128 / 8) * 1))
LEDMask |= LEDS_LED4;
else if (RightSample_8Bit < ((128 / 8) * 3))
LEDMask |= (LEDS_LED3 | LEDS_LED4);
else
LEDMask |= LEDS_LED3; LEDMask |= LEDS_LED3;
if (MixedSample_8Bit > ((128 / 8) * 4))
LEDMask |= LEDS_LED4;
LEDs_SetAllLEDs(LEDMask); LEDs_SetAllLEDs(LEDMask);
#endif #endif
} }

Loading…
Cancel
Save