From ecaf872177e771b6b7e331b47a5b68832b5dd126 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 14 Apr 2009 12:07:41 +0000 Subject: [PATCH] Corrected AudioInput and AudioOutput demos, to fix endpoint underflows due to rounding in the sample reload timer. --- Demos/Device/AudioInput/AudioInput.c | 2 +- Demos/Device/AudioOutput/AudioOutput.c | 2 +- LUFA/ChangeLog.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Demos/Device/AudioInput/AudioInput.c b/Demos/Device/AudioInput/AudioInput.c index b0c029573e..fca24c360e 100644 --- a/Demos/Device/AudioInput/AudioInput.c +++ b/Demos/Device/AudioInput/AudioInput.c @@ -95,7 +95,7 @@ EVENT_HANDLER(USB_Connect) UpdateStatus(Status_USBEnumerating); /* Sample reload timer initialization */ - OCR0A = (F_CPU / AUDIO_SAMPLE_FREQUENCY) - ((F_CPU % AUDIO_SAMPLE_FREQUENCY) == 0 ? 1 : 0); + OCR0A = (F_CPU / AUDIO_SAMPLE_FREQUENCY) - 1; TCCR0A = (1 << WGM01); // CTC mode TCCR0B = (1 << CS00); // Fcpu speed } diff --git a/Demos/Device/AudioOutput/AudioOutput.c b/Demos/Device/AudioOutput/AudioOutput.c index 0554361c67..ffeee418ee 100644 --- a/Demos/Device/AudioOutput/AudioOutput.c +++ b/Demos/Device/AudioOutput/AudioOutput.c @@ -90,7 +90,7 @@ EVENT_HANDLER(USB_Connect) UpdateStatus(Status_USBEnumerating); /* Sample reload timer initialization */ - OCR0A = (F_CPU / AUDIO_SAMPLE_FREQUENCY) - ((F_CPU % AUDIO_SAMPLE_FREQUENCY) == 0 ? 1 : 0); + OCR0A = (F_CPU / AUDIO_SAMPLE_FREQUENCY) - 1; TCCR0A = (1 << WGM01); // CTC mode TCCR0B = (1 << CS00); // Fcpu speed diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt index 80436f66a9..e85b35cf65 100644 --- a/LUFA/ChangeLog.txt +++ b/LUFA/ChangeLog.txt @@ -29,8 +29,8 @@ * - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen) * - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan) * - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint - * - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to account for situations where the division results - * in a value with no remainder, requiring one to be subtracted from the result (thanks to Robin Theunis) + * - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet, + * and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis) * - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type * pipes can be used with the function * - The USB Host management task now saves and restores the currently selected pipe before and after the task completes