Evo da se nakon ovih objasnjenja da pocnemo to da i realizujemo. Evo kod mog programa kako sam ja to zamislio da treba da radi, uz ovaj kod cu ostaviti i semu kao i rezultate simulacije, pa bi svaka pomoc, sugestija, savet dobro dosli.
Hvala na dosadasnjem trudu.
Kontroler je PIC18F4431, kristal je 20MHz....
Code:
int niz[21]={ 2, 293, 558, 768, 903, 950, 904, 769, 559, 295, 2,-292,-557,-767,-903,-950,-904,-770,-561,-296,-3},i=0,j;
int niz_b[21]={ 552, 764, 901, 950, 906, 774, 566, 303, 10,-284,-550,-763,-900,-950,-907,-775,-567,-304,-11, 283, 549};
int niz_c[21]={ 898, 950, 909, 779, 572, 310, 18,-277,-544,-758,-898,-950,-909,-779,-574,-312,-19, 275, 542, 757, 897};
unsigned int pom,b,pom2,pom3,cc;
void interrupt(){
if(PTIF_bit){
j++;
if(j==6){
j=0;
if(niz[i]>0){
PDC0L=niz[i];
PDC0H=(niz[i] & 0b0011111100000000)>>8;
i++;
}else{
pom=952+niz[i];
PDC0L=pom;
PDC0H=(pom & 0b0011111100000000)>>8;
i++;
}
if(niz_b[b]>0){
PDC1L=niz_b[b];
PDC1H=(niz_b[b] & 0b0011111100000000)>>8;
b++;
}else{
pom2=952+niz_b[b];
PDC1L=pom2;
PDC1H=(pom2 & 0b0011111100000000)>>8;
b++;
}
if(niz_c[cc]>0){
PDC2L=niz_c[cc];
PDC2H=(niz_c[cc] & 0b0011111100000000)>>8;
cc++;
}else{
pom3=952+niz_c[cc];
PDC2L=pom3;
PDC2H=(pom3 & 0b0011111100000000)>>8;
cc++;
}
if(i==21) i=0;
if(b==21) b=0;
if(cc==21) cc=0;
}
PTIF_bit=0;
}
}
void main() {
INTCON=0b11000000;
INTCON2=0;
PIE3=0b00010000; // omogucen interrupt base timer-a
PWMCON0=0b01010000; // svi omoguceni za PWM i rade u paru
PTCON0=0b00000100; //pres 4 post 0
PTCON1=0;
PTPERH=(311&0b0000111100000000)>>8; //4kHz PWM
PTPERL=311;
DTCON=0b01000111;
TRISB=0;
PORTB=255;
Delay_ms(1000);
PORTB=0;
TRISD=0;
PORTD=0;
PTCON1.B7=1;
while(1){
}
}

Na slici 1. se vide 4 signala koja se vode na prve dve grane trofaznog invertora, prva dva signala se vode na prvu granu i rezultuju fazu a. Na slici 2 je uvelican prikaz i tu je ono sto me buni, vidi se da zuti signal prestavlja opadajucu prvu periodu sinusa, a plavi signal prestavlja invertovano to. Problem mi je kod znaka "?" gde mi zuti signal nema maksimalnu vrednost, duty nije priblizno 100%, zbog cega? Na slici 3. je uvelican prikaz slike 2...
[Ovu poruku je menjao zivadin_despot dana 26.08.2011. u 20:49 GMT+1]
[Ovu poruku je menjao zivadin_despot dana 26.08.2011. u 20:54 GMT+1]