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);
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);