projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Minor documentation improvements. Remove AS4 project generator script as it is buggy...
[pub/USBasp.git]
/
Demos
/
Host
/
LowLevel
/
AudioOutputHost
/
AudioOutputHost.c
diff --git
a/Demos/Host/LowLevel/AudioOutputHost/AudioOutputHost.c
b/Demos/Host/LowLevel/AudioOutputHost/AudioOutputHost.c
index
704ddea
..
6a1a49f
100644
(file)
--- a/
Demos/Host/LowLevel/AudioOutputHost/AudioOutputHost.c
+++ b/
Demos/Host/LowLevel/AudioOutputHost/AudioOutputHost.c
@@
-1,13
+1,13
@@
/*
LUFA Library
/*
LUFA Library
- Copyright (C) Dean Camera, 201
1
.
+ Copyright (C) Dean Camera, 201
2
.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 201
1
Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 201
2
Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
@@
-46,7
+46,7
@@
int main(void)
puts_P(PSTR(ESC_FG_CYAN "Audio Output Host Demo running.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
puts_P(PSTR(ESC_FG_CYAN "Audio Output Host Demo running.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-
sei
();
+
GlobalInterruptEnable
();
for (;;)
{
for (;;)
{
@@
-68,12
+68,15
@@
void SetupHardware(void)
Serial_Init(9600, false);
Buttons_Init();
ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_32);
Serial_Init(9600, false);
Buttons_Init();
ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_32);
- ADC_SetupChannel(MIC_IN_ADC_CHANNEL);
+ ADC_SetupChannel(MIC_IN_ADC_CHANNEL);
LEDs_Init();
USB_Init();
/* Create a stdio stream for the serial port for stdin and stdout */
Serial_CreateStream(NULL);
LEDs_Init();
USB_Init();
/* Create a stdio stream for the serial port for stdin and stdout */
Serial_CreateStream(NULL);
+
+ /* Start the ADC conversion in free running mode */
+ ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | ADC_GET_CHANNEL_MASK(MIC_IN_ADC_CHANNEL));
}
/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
}
/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
@@
-126,7
+129,7
@@
void EVENT_USB_Host_DeviceEnumerationComplete(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
return;
}
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
return;
}
-
+
if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,
StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)
{
if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,
StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)
{
@@
-146,7
+149,7
@@
void EVENT_USB_Host_DeviceEnumerationComplete(void)
.wIndex = StreamingEndpointAddress,
.wLength = sizeof(USB_Audio_SampleFreq_t),
};
.wIndex = StreamingEndpointAddress,
.wLength = sizeof(USB_Audio_SampleFreq_t),
};
-
+
USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
/* Select the control pipe for the request transfer */
USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
/* Select the control pipe for the request transfer */
@@
-155,6
+158,9
@@
void EVENT_USB_Host_DeviceEnumerationComplete(void)
/* Set the sample rate on the streaming interface endpoint */
if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)
{
/* Set the sample rate on the streaming interface endpoint */
if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)
{
+ printf_P(PSTR(ESC_FG_RED "Could not set requested Audio sample rate.\r\n"
+ " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
+
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
USB_Host_SetDeviceConfiguration(0);
return;
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
USB_Host_SetDeviceConfiguration(0);
return;
@@
-164,8
+170,8
@@
void EVENT_USB_Host_DeviceEnumerationComplete(void)
TIMSK0 = (1 << OCIE0A);
OCR0A = ((F_CPU / 8 / 48000) - 1);
TCCR0A = (1 << WGM01); // CTC mode
TIMSK0 = (1 << OCIE0A);
OCR0A = ((F_CPU / 8 / 48000) - 1);
TCCR0A = (1 << WGM01); // CTC mode
- TCCR0B = (1 << CS01); // Fcpu/8 speed
-
+ TCCR0B = (1 << CS01); // Fcpu/8 speed
+
puts_P(PSTR("Speaker Enumerated.\r\n"));
LEDs_SetAllLEDs(LEDMASK_USB_READY);
}
puts_P(PSTR("Speaker Enumerated.\r\n"));
LEDs_SetAllLEDs(LEDMASK_USB_READY);
}
@@
-207,16
+213,16
@@
ISR(TIMER0_COMPA_vect, ISR_BLOCK)
/* Check if the current pipe can be written to (device ready for more data) */
if (Pipe_IsOUTReady())
{
/* Check if the current pipe can be written to (device ready for more data) */
if (Pipe_IsOUTReady())
{
- int16_t AudioSample;
-
+ int16_t AudioSample;
+
#if defined(USE_TEST_TONE)
static uint8_t SquareWaveSampleCount;
static int16_t CurrentWaveValue;
#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;
/* 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
/* Only generate audio if the board button is being pressed */
AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
#else
@@
-226,12
+232,12
@@
ISR(TIMER0_COMPA_vect, ISR_BLOCK)
#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);
#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
#endif
#endif
-
+
Pipe_Write_16_LE(AudioSample);
Pipe_Write_16_LE(AudioSample);
Pipe_Write_16_LE(AudioSample);
Pipe_Write_16_LE(AudioSample);
-
+
if (!(Pipe_IsReadWriteAllowed()))
Pipe_ClearOUT();
}
if (!(Pipe_IsReadWriteAllowed()))
Pipe_ClearOUT();
}
@@
-239,3
+245,4
@@
ISR(TIMER0_COMPA_vect, ISR_BLOCK)
Pipe_Freeze();
Pipe_SelectPipe(PrevPipe);
}
Pipe_Freeze();
Pipe_SelectPipe(PrevPipe);
}
+