DSPIC33F Advance PWM fonctionnality (bude stra všechny moje body)

S

sec

Guest
Ahoj všichni,Já pracuji s DSPIC33FJ16GS502 na chvíli.Chtěl bych PWM pro spuštění konverze ADC, ale bez úspěchu.Každý, kdo vědí, jak to udělat?Hledal jsem po celém Speciální akce spoušť a specializovanou spoušť, ale bez úspěchu.Vím, že moje ADC přerušení funkce je v pořádku, protože je spuštěn na začátku programu, a pokud nemám reset na vlajku pod kterou smyčky ven a ADC přerušení

Kód://***************** ADC ********************ADCONbits.ASYNCSAMP = 1; / / neustále ODBĚRU

ADCONbits.FORM = 0; / / celé číslo OUTPUT

ADCONbits.SLOWCLK = 0; / / ADC je hodiny v primární PLL (FVCO)

ADCONbits.SEQSAMP = 1;

ADCONbits.ADCS = 0; / / FADC / 1

ADCONbits.EIE = 1; / / Přerušení je generováno po první konverzi je dokončen

_SWTRG0 = 1;

ADPCFG = 0b1111111111111101; / / Všechny digitální, ale AN1

ADCPC0bits.TRGSRC0 = 0b00100; / / 00100 = PWM generátoru 1 primární spouštěcí vybraných an0 a AN1

ADCPC0bits.IRQEN0 = 1; / / Zapne IRQ generace, pokud je požadována konverze kanálů AN1 a AN0 je dokončen

IPC3bits.ADIP = 7; / / nastavit společné ADC Interrupt Priority Level (úroveň 1)

IFS0bits.ADIF = 0; / / Clear ADC Pair 0 Interrupt Flag

IEC0bits.ADIE = 1; / / Zapne ADC Pair 0 Interrupt

/ / IFS6bits.ADCP1IF = 0;

/ / IEC6bits.ADCP1IE = 1;

/ / IPC27bits.ADCP1IP = 7; / / 7 je nejvyšší prioritou

SRbits.IPL = 0;//**************** PWM

/ / PWMH a PWML jsou aktivní-vysoké a řízen PWM modul push-pull

/ / Duty-cyklus registr PDC1 a aktualizací aktivního MDC / PDCx / SDCx registry jsou okamžité/ / Další kód ...

/ / Zkuste spustit ADC

/ / Hodnota v tomto registru představuje zajat PWM době základní hodnoty při náběžné hrany je

/ / Zjistí aktuální-limit vstup.

TRGCON1 = 0;

SEVTCMP = 0X000F; / / Pokus věci zde

TRIG1 = 250; / / Po dobu utkání spouště by mělo dojít

STRIG1 = 0X000F;TRGCON1bits.TRGDIV = 0; / / trigger každý trigger akce

TRGCON1bits.TRGSTRT = 0; / / wait 0 PWM cyklů vytvářet spoušť

TRGCON1bits.DTM = 0;/ / Další kód

ADCONbits.ADON = 1; / / Zapne ADCwhile (1);
 
Myslíš, že jsem našel řešení, ale nejsem šťastný z toho.Se zdá, že TRIGx generovat PWM spoušť (PWMCON1bits.TRGSTAT) ne začátek přeměny ...I musí být něco chybí!

Stále hledáme pomoci zde!
poděkovat

O něco později ....

Našel něco intresting, ADC je aktualizován, ale není generovat přerušení

Kód:neplatné __attribute__ ((přerušení, auto_psv)) _PWM1Interrupt (void)

(

if (PWMCON1bits.TRGSTAT == 1)

(int an0, AN1;

dvoulůžkový chyba = 0;

/ / An0 = ADCBUF0; / / Přečtěte si AN0 konverze výsledek

AN1 = ADCBUF1; / / Přečtěte si AN1 konverze výsledek

/ / _ADCP1IF = 0;

Chyba = Vout-((3,2 * an1/1024) * RD);

V = V (error/50);

PDC1 = DutyCycleDouble (1 - (Vin / V ));//, 0.000,0.5);)

_PWM1IF = 0;

)
 

Welcome to EDABoard.com

Sponsor

Back
Top