При продвижении дальше возникли следующие трудности:
Кроме загорания светодиода, пытаюсь вывести звук на PB1/OC1A, который должен появиться при загорании любого светодиода.
Звук получается только при лог.1 на PD2 (на PD1 и PD0 не реагирует).
Причем генерация звука идет прерывистая. Я так понимаю, звук прерывается на время обработки прерывания.
- Код: Выделить всё • Развернуть
if ((adc_data[2]-(adc_data[1]-adc_data[0])-adc_data[0])<218) {
PORTD.0=1;
TCCR1A=0x40; // включение звука
}
else {
PORTD.0=0;
TCCR1A=0x00;
};
if ((adc_data[1]-adc_data[0])<218) {
PORTD.1=1;
TCCR1A=0x40; // включение звука
}
else {
PORTD.1=0;
TCCR1A=0x00;
};
if (adc_data[0]<218) {
PORTD.2=1;
TCCR1A=0x40; // включение звука
}
else {
PORTD.2=0;
TCCR1A=0x00;
};
Таймер так сконфигурирован:
- Код: Выделить всё • Развернуть
TCCR1A=0x00; // регистр управления таймером1 на выводе OC1A = 0 (звук выключен)
TCCR1B=0x0D; // 00001101 режим работы CTC и коэф. предделения 1024 f= 7,813 kHz
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x07; // регистр сравнения (еще деление на 7)
OCR1BH=0x00;
OCR1BL=0x00;