پاسخ : تولید موج سینوسی با AVR
البته برای بدست آوردم موج سینوسی باید خروجی رو از یه فیلتر پایین گذر با فرکانس قطع 400 عبور بدین
نوشته اصلی توسط ZAHR4

/* In the name of God
* spwm50HZmega16.c
*
* Created: 11/15/2015 11:28:28 PM
* Author: Amin Taheri
*/
#include <io.h>
#include <mega16.h>
#include <delay.h>
#define xtal 8000000
char sinewave[]=
{0,0,1,1,2,4,5,7,9,12,15,18,21,24,28,32,36,41,45,50,55,60,
65,71,76,82,88,94,100,106,112,118,124,130,136,142,148,154,
160,166,172,178,183,189,194,199,204,209,213,218,222,226,230,
233,236,239,242,245,247,249,250,252,253,253,254,254,254,253,
253,252,250,249,247,245,242,239,236,233,230,226,222,218,213,
209,204,199,194,189,183,178,172,166,160,154,148,142,136,130,
124,118,112,106,100,94,88,82,76,71,65,60,55,50,45,41,36,32,28,
24,21,18,15,12,9,7,5,4,2,1,1,0,0,
};
char i=0;
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
OCR1A=sinewave[i];
i++;
if (i==129)
i=0;
}
void main(void)
{
DDRD=0xFF;
TCCR1A=0x81;
TCCR1B=0x0A;
TIMSK=0x10;
#asm("sei");
while (1)
{
// Please write your application code here
}
}
دیدگاه