Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
int aSin[128]={
127,134,140,146,152,158,164,170,176,182,187,193,198,203,208,213,217,222,226,230,233,
236,240,242,245,247,249,251,252,253,254,254,254,254,254,253,252,251,249,247,245,242,
240,236,233,230,226,222,217,213,208,203,198,193,187,182,176,170,164,158,152,146,140,
134,127,121,115,109,103,97,91,85,79,73,68,62,57,52,47,42,38,33,29,25,22,19,15,13,10,
8,6,4,3,2,1,1,0,1,1,2,3,4,6,8,10,13,15,19,22,25,29,33,38,42,47,52,57,62,68,73,79,85,
91,97,103,109,115,121
};
int i;
ISR(TIMER1_COMPA_vect)
{
OCR2=aSin[i];
i++;
if (i>127) i=0;
}
int main(void)
{
PORTB=0x00;
DDRB = (1<<PB1) |(1<<PB2)| (1<<PB3);
TCCR1B = (0<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10);
OCR1A=512;
TCCR2=(1<<WGM20)|(1<<COM21)|(0<<COM20)|(1<<WGM21)|(0<<CS22)|(0<<CS21)|(1<<CS20);
TIMSK=(1<<OCIE1A);
sei();
for (;;)
{
}
return 0;
}
Я только вижу один выход перекинуть на Т0 регулировку частоты фаз. (TIMER0_OVF_vect). Или есть еще какие то решения ?
.................................................................................................................



