#include <mega16.h>
#include "sintab.h"
#define uchar unsigned char
#define uint unsigned int
uchar indexU,indexV,indexW; //
// Timer 1 溢出中断BOTTOM
interrupt [TIM1_OVF] void timer1_ovf_isr(void) //改变A相、B相、C相的比较值
{
if (++indexU==234) indexU=0;
OCR2=SinTab[AmpU][indexU];
if (++indexV==234) indexV=0;
OCR1AL=SinTab[AmpV][indexV];
if (++indexW==234) indexW=0;
OCR1BL=SinTab[AmpW][indexW];
}
void start()
{
indexU=0;
indexV=78;
indexW=156;
PORTD=0x00;
DDRD=0xf0;
TCCR2=0x71;
//FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20
// 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
TCCR1A=0xf1; //COM1A1|COM1A0|COM1B1|COM1B0|FOC1A|FOC1|WGM11|WGM10|
// 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
TCCR1B=0x01; //ICNC1 | ICES1| – |WGM13 |WGM12|CS12| CS11| CS10|
// 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
TIMSK=0x04; //|OCIE2|TOIE2|TICIE1|OCIE1A|OCIE1B|TOIE1|OCIE0|TOIE0|
//| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
}
void main(void)
{
start();
#asm("sei") //开中断
while (1);
}
2007-04-17,19:56:42 资料 邮件 编辑 删除
【10楼】 chy31238
积分:6
派别:
等级:------
来自:
unsigned char flash SinTab[234]={
127, 130, 133, 136, 139, 142, 145, 148, 152, 155, 158, 160, 163, 166, 169, 172, 175, 178, 180, 183,
186, 188, 191, 194, 196, 199, 201, 203, 206, 208, 210, 212, 214, 216, 218, 220, 222, 223, 225, 227,
228, 230, 231, 232, 233, 235, 236, 237, 237, 238, 239, 240, 240, 241, 241, 241, 242, 242, 242, 242,
242, 242, 241, 241, 241, 240, 240, 239, 238, 237, 237, 236, 235, 233, 232, 231, 230, 228, 227, 225,
223, 222, 220, 218, 216, 214, 212, 210, 208, 206, 203, 201, 199, 196, 194, 191, 188, 186, 183, 180,
178, 175, 172, 169, 166, 163, 160, 158, 155, 152, 148, 145, 142, 139, 136, 133, 130, 127, 124, 121,
118, 115, 112, 109, 106, 102, 99, 96, 94, 91, 88, 85, 82, 79, 76, 74, 71, 68, 66, 63,
60, 58, 55, 53, 51, 48, 46, 44, 42, 40, 38, 36, 34, 32, 31, 29, 27, 26, 24, 23,
22, 21, 19, 18, 17, 17, 16, 15, 14, 14, 13, 13, 13, 12, 12, 12, 12, 12, 12, 13,
13, 13, 14, 14, 15, 16, 17, 17, 18, 19, 21, 22, 23, 24, 26, 27, 29, 31, 32, 34,
36, 38, 40, 42, 44, 46, 48, 51, 53, 55, 58, 60, 63, 66, 68, 71, 74, 76, 79, 82,
85, 88, 91, 94, 96, 99, 102, 106, 109, 112, 115, 118, 121, 124};
2007-04-17,19:59:30 资料 邮件 编辑 删除
【11楼】 chy31238
积分:6
派别:
等级:------
来自:
用上面的程序即可在PD4,PD5,PD7输出互差120度的三相SPWM |