zatmenie
В программе написанной Вами много лишнего. Это затрудняет чтение кода.
Есть ошибки.
CODE:for (OCR0A=0x0A; OCR0A<0xF0; OCR0A++);
{
if(OCR0A<0xF0)
{
TCCR0B=0x03;
delay_ms(50);
}
else TCCR0B=0x02; // Никогда не выполнится. См. пояснения.
}
Выполнить эту строчку не даст цикл. Он завершится когда OCR0A станет больше или равно 0xF0. Следовательно этот цикл не является бесконечным.
Вот эквивалент написанного Вами. Призван пояснить мои слова и помочь разобраться.
OCR0A = 0x0A;
while( OCR0A < 0xF0 )
{
if( OCR0A < 0xF0 )
{
TCCR0B = 0x03;
delay_ms(50);
}
else
{
TCCR0B = 0x02; // Никогда не выполнится.
}
OCR0A = OCR0A + 1;
}
Получение звука с помощью ШИМ скорее терминологическое извращение. Для получения звука может использоваться ряд режимов работы таймера/счетчика. В том числе и тех, которые используются для создания ШИМ. Звуковые колебания можно получить без ШИМ и даже без использования таймера/счетчика.(Отредактировано автором: 25 Декабря, 2010 - 17:40:56) |