aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-07-28 10:46:20 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-07-28 10:46:20 +0000
commit61ff4824a904d156e719ab2967b613cf095e908e (patch)
tree04b28268cfef56b2ae2ad72ea37e5dd1edb1331b
parent864196c884ef3602aee44f1a68aceb5819a07f21 (diff)
downloadlufa-61ff4824a904d156e719ab2967b613cf095e908e.tar.gz
lufa-61ff4824a904d156e719ab2967b613cf095e908e.tar.bz2
lufa-61ff4824a904d156e719ab2967b613cf095e908e.zip
Changed AudioOutput demos to explicitly use timer 3 - the smaller USB AVRs where timer 1 was needed instead did not have the endpoint size neccesary for good audio throughput anyway.
Fix Benito documentation indicating erronously that the project used the HID USB class instead of the CDC class.
-rw-r--r--Demos/Device/ClassDriver/AudioOutput/AudioOutput.c18
-rw-r--r--Demos/Device/ClassDriver/AudioOutput/AudioOutput.h49
-rw-r--r--Demos/Device/LowLevel/AudioInput/AudioInput.h6
-rw-r--r--Demos/Device/LowLevel/AudioOutput/AudioOutput.c14
-rw-r--r--Demos/Device/LowLevel/AudioOutput/AudioOutput.h47
-rw-r--r--Projects/Benito/Benito.c2
-rw-r--r--Projects/Benito/Benito.txt9
7 files changed, 26 insertions, 119 deletions
diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c
index 129fca5f1..bbcd2fd7c 100644
--- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c
+++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c
@@ -108,19 +108,19 @@ void ProcessNextSample(void)
#if defined(AUDIO_OUT_MONO)
/* Load the sample into the PWM timer channel */
- OCRxA = ((uint8_t)MixedSample_8Bit ^ (1 << 7));
+ OCR3A = ((uint8_t)MixedSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_STEREO)
/* Load the dual 8-bit samples into the PWM timer channels */
- OCRxA = ((uint8_t)LeftSample_8Bit ^ (1 << 7));
- OCRxB = ((uint8_t)RightSample_8Bit ^ (1 << 7));
+ OCR3A = ((uint8_t)LeftSample_8Bit ^ (1 << 7));
+ OCR3B = ((uint8_t)RightSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_PORTC)
+ /* Load the 8-bit mixed sample into PORTC */
PORTC = MixedSample_8Bit;
#else
uint8_t LEDMask = LEDS_NO_LEDS;
/* Make mixed sample value positive (absolute) */
- if (MixedSample_8Bit < 0)
- MixedSample_8Bit = -MixedSample_8Bit;
+ MixedSample_8Bit = abs(MixedSample_8Bit);
if (MixedSample_8Bit > ((128 / 8) * 1))
LEDMask |= LEDS_LED1;
@@ -162,9 +162,9 @@ void EVENT_USB_Connect(void)
#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
/* PWM speaker timer initialization */
- TCCRxA = ((1 << WGMx0) | (1 << COMxA1) | (1 << COMxA0)
- | (1 << COMxB1) | (1 << COMxB0)); // Set on match, clear on TOP
- TCCRxB = ((1 << WGMx2) | (1 << CSx0)); // Fast 8-Bit PWM, Fcpu speed
+ TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)
+ | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP
+ TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, Fcpu speed
#endif
}
@@ -178,7 +178,7 @@ void EVENT_USB_Disconnect(void)
#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
/* Stop the PWM generation timer */
- TCCRxB = 0;
+ TCCR3B = 0;
#endif
#if defined(AUDIO_OUT_MONO)
diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
index ecc4e6fae..ea897c954 100644
--- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
+++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
@@ -50,54 +50,7 @@
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/Audio.h>
- /* Macros: */
- #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
- #define TCCRxA TCCR3A
- #define TCCRxB TCCR3B
- #define OCRxA OCR3A
- #define OCRxB OCR3B
- #define WGMx0 WGM30
- #define WGMx2 WGM32
- #define COMxA1 COM3A1
- #define COMxA0 COM3A0
- #define COMxB1 COM3B1
- #define COMxB0 COM3B0
- #define CSx0 CS30
- #else
- /** Timer count register used for left channel PWM audio output (or mixed output in mono output mode) */
- #define TCCRxA TCCR1A
-
- /** Timer count register used for right channel PWM audio output */
- #define TCCRxB TCCR1B
-
- /** Timer compare register used for left channel PWM audio output (or mixed output in mono output mode) */
- #define OCRxA OCR1A
-
- /** Timer compare register used for right channel PWM audio output */
- #define OCRxB OCR1B
-
- /** Timer control register mask used to select PWM mode */
- #define WGMx0 WGM10
-
- /** Timer control register mask used to select PWM mode */
- #define WGMx2 WGM12
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxA1 COM1A1
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxA0 COM1A0
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxB1 COM1B1
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxB0 COM1B0
-
- /** Timer control register mask used to start the timer at Fcpu clock rate */
- #define CSx0 CS10
- #endif
-
+ /* Macros: */
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
diff --git a/Demos/Device/LowLevel/AudioInput/AudioInput.h b/Demos/Device/LowLevel/AudioInput/AudioInput.h
index 082b0555b..591d3f355 100644
--- a/Demos/Device/LowLevel/AudioInput/AudioInput.h
+++ b/Demos/Device/LowLevel/AudioInput/AudioInput.h
@@ -50,13 +50,13 @@
/* Macros: */
/** ADC channel number for the microphone input. */
- #define MIC_IN_ADC_CHANNEL 2
+ #define MIC_IN_ADC_CHANNEL 2
/** Maximum ADC sample value for the microphone input. */
- #define SAMPLE_MAX_RANGE 0xFFFF
+ #define SAMPLE_MAX_RANGE 0xFFFF
/** Maximum ADC range for the microphone input. */
- #define ADC_MAX_RANGE 0x3FF
+ #define ADC_MAX_RANGE 0x3FF
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c
index 89c4446bc..9b2bb3991 100644
--- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c
+++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c
@@ -96,9 +96,9 @@ void EVENT_USB_Connect(void)
#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
/* PWM speaker timer initialization */
- TCCRxA = ((1 << WGMx0) | (1 << COMxA1) | (1 << COMxA0)
- | (1 << COMxB1) | (1 << COMxB0)); // Set on match, clear on TOP
- TCCRxB = ((1 << WGMx2) | (1 << CSx0)); // Fast 8-Bit PWM, Fcpu speed
+ TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)
+ | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP
+ TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, Fcpu speed
#endif
}
@@ -110,7 +110,7 @@ void EVENT_USB_Disconnect(void)
/* Stop the timers */
TCCR0B = 0;
#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
- TCCRxB = 0;
+ TCCR3B = 0;
#endif
#if defined(AUDIO_OUT_MONO)
@@ -215,11 +215,11 @@ void USB_Audio_Task(void)
int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);
/* Load the sample into the PWM timer channel */
- OCRxA = ((uint8_t)MixedSample_8Bit ^ (1 << 7));
+ OCR3A = ((uint8_t)MixedSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_STEREO)
/* Load the dual 8-bit samples into the PWM timer channels */
- OCRxA = ((uint8_t)LeftSample_8Bit ^ (1 << 7));
- OCRxB = ((uint8_t)RightSample_8Bit ^ (1 << 7));
+ OCR3A = ((uint8_t)LeftSample_8Bit ^ (1 << 7));
+ OCR3B = ((uint8_t)RightSample_8Bit ^ (1 << 7));
#elif defined(AUDIO_OUT_PORTC)
/* 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);
diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.h b/Demos/Device/LowLevel/AudioOutput/AudioOutput.h
index 7970efe7e..8d7f16c5f 100644
--- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.h
+++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.h
@@ -48,53 +48,6 @@
#include <LUFA/Drivers/Board/LEDs.h>
/* Macros: */
- #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
- #define TCCRxA TCCR3A
- #define TCCRxB TCCR3B
- #define OCRxA OCR3A
- #define OCRxB OCR3B
- #define WGMx0 WGM30
- #define WGMx2 WGM32
- #define COMxA1 COM3A1
- #define COMxA0 COM3A0
- #define COMxB1 COM3B1
- #define COMxB0 COM3B0
- #define CSx0 CS30
- #else
- /** Timer count register used for left channel PWM audio output (or mixed output in mono output mode) */
- #define TCCRxA TCCR1A
-
- /** Timer count register used for right channel PWM audio output */
- #define TCCRxB TCCR1B
-
- /** Timer compare register used for left channel PWM audio output (or mixed output in mono output mode) */
- #define OCRxA OCR1A
-
- /** Timer compare register used for right channel PWM audio output */
- #define OCRxB OCR1B
-
- /** Timer control register mask used to select PWM mode */
- #define WGMx0 WGM10
-
- /** Timer control register mask used to select PWM mode */
- #define WGMx2 WGM12
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxA1 COM1A1
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxA0 COM1A0
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxB1 COM1B1
-
- /** Timer control register mask used to set, clear or toggle channel output pin on match */
- #define COMxB0 COM1B0
-
- /** Timer control register mask used to start the timer at Fcpu clock rate */
- #define CSx0 CS10
- #endif
-
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
diff --git a/Projects/Benito/Benito.c b/Projects/Benito/Benito.c
index 9e85fbd2f..26c566496 100644
--- a/Projects/Benito/Benito.c
+++ b/Projects/Benito/Benito.c
@@ -79,7 +79,7 @@ int main(void)
for (;;)
{
/* Echo bytes from the host to the target via the hardware USART */
- if (CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface))
+ if (CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface) > 0)
{
Serial_TxByte(CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface));
diff --git a/Projects/Benito/Benito.txt b/Projects/Benito/Benito.txt
index 857a28f8d..63f3ea815 100644
--- a/Projects/Benito/Benito.txt
+++ b/Projects/Benito/Benito.txt
@@ -31,19 +31,20 @@
* </tr>
* <tr>
* <td><b>USB Class:</b></td>
- * <td>Human Interface Device (HID)</td>
+ * <td>Communications Device Class (CDC)</td>
* </tr>
* <tr>
* <td><b>USB Subclass:</b></td>
- * <td>Keyboard</td>
+ * <td>Abstract Control Model (ACM)</td>
* </tr>
* <tr>
* <td><b>Relevant Standards:</b></td>
- * <td>USBIF HID Standard, USBIF HID Usage Tables</td>
+ * <td>USBIF CDC Class Standard</td>
+ * <td>Arduino Bootloader Specification</td>
* </tr>
* <tr>
* <td><b>Usable Speeds:</b></td>
- * <td>Low Speed Mode, Full Speed Mode</td>
+ * <td>Full Speed Mode</td>
* </tr>
* </table>
*