Цитата(KaMa3eR @ Jan 29 2010, 20:25)

оч нужно сгородить ген
ему уже до лампы
или не..
???
На этом форуме принят более литературный вариант русского языка. Старайтесь придерживаться его, иначе вам просто не будут отвечать.
Код
#include "avr/io.h"
#include "avr/pgmspace.h"
#include "avr/interrrupts.h"
uint8_t const PROGMEM Table[65] = // Таблица значений синуса от 0 до Пи/2 включительно. Диапазон значений от 0x80 до 0xFF
{
.....
};
uint16_t Phase; // 8.8 fixed point
uint16_t Phase_delta; // 8.8 fixed point
static uint8_t get_sinus()
{
Table_index = (Phase >> 8) & 0x3F;
if(Phase & (1<<14))
Table_index = 64 - Table_index;
uint8_t Result = pgm_read_byte(&Table[Table_index]);
if(Phase & (1<<15))
Result = 0x80 - Result;
Phase += Phase_delta;
return Result;
}
ISR(TIMER2_COMP_vect)
{
OCR2 = get_sinus();
}
int main()
{
// Fast PWM, T2CLK = F_CPU/32
TCCR2 = (0<<FOC2)|(1<<WGM20)|(1<<COM21)|(0<<COM20)|(1<<WGM21)|(0<<CS22)|(1<<CS21)|(1<<CS20);
TIMSK = (1<<OCIE2);
Phase_delta = 1234;
sei();
for(;;)
{
}
}
Это идея реализации. Как рассчитать приращение фазы и какой предделитель таймера вам лучше подойдет - разберитесь сами.