Имеется схема Wav плеера (PCM 16KHz, 8 bit, Mono.) на МК Atmega328. Вывод звука осуществляется через ШИМ (вывод OCR1A) и ФНЧ на УНЧ. Питание через адаптер 5 В. 1,5 А. (5 вольт на УНЧ, 3.3 на МК)
Схема ФНЧ:

Схема УНЧ (Вход P не используется.):
Код: Выделить всё
ISR(TIMER1_OVF_vect)
{
if (sp % 2 == 0) // 31250 / 2 = ~16000 Герц
{
OCR1A = readNextByte() ;
fileSize--;
}
sp++;
}
.......
//8000000/256 = 31250 Герц
TCCR1A = 0x81;
TCCR1B = 0x09;
TCNT1 = 0x00;
OCR1A = 0x00;
//----------------------------------------
// Убрать щелчек
uint8_t start = flash.readNextByte();
fileSize--;
//---------------------------------------
//При добавлении этого кода начинает сильно мигать подсветка дисплея.
while (OCR1A < start)
{
_delay_us(100);
OCR1A++;
}
//----------------------------------------
TIMSK1 |= (1<<TOIE1); // разрешаем прерывание по переполнению таймера
while(fileSize > 0) asm("nop");
TIMSK1 &= ~(1<<TOIE1);
//---------------------------------------
//При добавлении этого кода начинает сильно мигать подсветка дисплея.
while (OCR1A > 0)
{
OCR1A--;
_delay_us(100);
}
//---------------------------------------
Код: Выделить всё
// Убрать щелчек
uint8_t start = readNextByte(); //перввый байт WAV файла
fileSize--;
while (OCR1A < start)
{
_delay_us(100);
OCR1A++;
}
