A
Angeline
Guest
Ja sam novi korisnik koristeći DSPIC30F3010.Ja sam težak korištenje ulaznih hvatanje modul za hvatanje razdoblje squarewave koristeći MPLAB IDE to učiniti moje programiranje.Ja sam koristeći ICD2 da biste vidjeli rezultat moje registra koji je IC7BUF.Ja sam ne dobivanje bilo kakve promjene u tampon, ali sam stavio LED kako bi provjerili da moj broj unijeti ulazni snimanje prekinuti i to mi pokazuje da.Nadam se da mogu dobiti neki savjet.
Šifra:
# Include <p30f3010.h>
# Include <math.h>
# Include <stdio.h># define LED LATDbits.LATD0/************* Globalne varijable i konstante *************/
unsigned int period = 0, captureresult1 = 0, captureresult2 = 0; / * Varijable koje se koriste za razdoblje obračuna * /void __attribute__ ((__interrupt__)) _IC7Interrupt (void);/**** FUNKCIJA prototipova ****/
void IC_SETUP (void);
void TIMER2_SETUP (void);/****** Glavno tijelo ******/
int main (void)
(
TRISD = 0; / * Podešavanje Port D kao izlaz * /
PORTD = 0; / * Vrati LED * /
PORTD = 0xff / * Light LED, testirati PIC je rad * /
TRISB = 0x003f / * Postavljanje PortB kao ulaz * /
ADPCFG = 0xffff / * Podešavanje analognog pinski kao digitalni ulaz * /TIMER2_SETUP () / * Pozivanje Timer Funkcija Setup * /
IC_SETUP () / * Pozivanje Unos Snimi postavke funkcija * /
while (1)
(
)return (0);
)
/ *** SETUP_IC ****/
void IC_SETUP (void)
(
IC7CONbits.ICM = 3; / * Hvatanje diže svaki rub * /
IC7CONbits.ICBNE = 0; / * Input capture buffer prazan * /
IC7CONbits.ICOV = 0; / * No prelijevanje ulazni hvatanje dogodila * /
IC7CONbits.ICI = 0; / * Prekid na svako hvatanje događaja * /
IC7CONbits.ICTMR = 1; / * TMR2 sadržaji su uhvaćeni na zarobljeni događaj * /
IC7CONbits.ICSIDL = 0; / * Input capture modul će nastaviti raditi u CPU Idle modu * /
IFS1bits.IC7IF = 0; / * Prekid bit je izbrisan * /
IEC1bits.IC7IE = 1 / * Postavljanje IC7 prekinuti omogućiti bit * /)/**** Prekid ZA IC7 ****/
void __attribute__ ((__interrupt__)) _IC7Interrupt (void)
(
volatile unsigned int * ptr;ptr = &IC7BUF; / * Initialise IC7BUF pokazivač * /
captureresult1 = * ptr;
captureresult2 = * ptr ;
LED = ~ LED;captureresult1 = IC7BUF;period = captureresult2-captureresult1;
/ * IFS1bits.IC7IF = 0; / * Prekid bit je izbrisan * /
)/ *** *** TIMER_SETUP /
void TIMER2_SETUP (void)
(
T2CONbits.TCS = 1; / * Upotreba Internal Clock (Fosc / 4) * /
T2CONbits.T32 = 1; / * TMRx i TMRy obliku 32-bitni timer * /
T2CONbits.TCKPS = 0; / * Upotreba 1:1 prescale vrijednost * /
T2CONbits.TGATE = 0; / * Odbrojavanje vrata Akumulacija Disabled * /
T2CONbits.TSIDL = 0; / * Nastavi u stanje mirovanja * /
T2CONbits.TON = 1; / * Pokreće Timer * /
)
)Hvala
Šifra:
# Include <p30f3010.h>
# Include <math.h>
# Include <stdio.h># define LED LATDbits.LATD0/************* Globalne varijable i konstante *************/
unsigned int period = 0, captureresult1 = 0, captureresult2 = 0; / * Varijable koje se koriste za razdoblje obračuna * /void __attribute__ ((__interrupt__)) _IC7Interrupt (void);/**** FUNKCIJA prototipova ****/
void IC_SETUP (void);
void TIMER2_SETUP (void);/****** Glavno tijelo ******/
int main (void)
(
TRISD = 0; / * Podešavanje Port D kao izlaz * /
PORTD = 0; / * Vrati LED * /
PORTD = 0xff / * Light LED, testirati PIC je rad * /
TRISB = 0x003f / * Postavljanje PortB kao ulaz * /
ADPCFG = 0xffff / * Podešavanje analognog pinski kao digitalni ulaz * /TIMER2_SETUP () / * Pozivanje Timer Funkcija Setup * /
IC_SETUP () / * Pozivanje Unos Snimi postavke funkcija * /
while (1)
(
)return (0);
)
/ *** SETUP_IC ****/
void IC_SETUP (void)
(
IC7CONbits.ICM = 3; / * Hvatanje diže svaki rub * /
IC7CONbits.ICBNE = 0; / * Input capture buffer prazan * /
IC7CONbits.ICOV = 0; / * No prelijevanje ulazni hvatanje dogodila * /
IC7CONbits.ICI = 0; / * Prekid na svako hvatanje događaja * /
IC7CONbits.ICTMR = 1; / * TMR2 sadržaji su uhvaćeni na zarobljeni događaj * /
IC7CONbits.ICSIDL = 0; / * Input capture modul će nastaviti raditi u CPU Idle modu * /
IFS1bits.IC7IF = 0; / * Prekid bit je izbrisan * /
IEC1bits.IC7IE = 1 / * Postavljanje IC7 prekinuti omogućiti bit * /)/**** Prekid ZA IC7 ****/
void __attribute__ ((__interrupt__)) _IC7Interrupt (void)
(
volatile unsigned int * ptr;ptr = &IC7BUF; / * Initialise IC7BUF pokazivač * /
captureresult1 = * ptr;
captureresult2 = * ptr ;
LED = ~ LED;captureresult1 = IC7BUF;period = captureresult2-captureresult1;
/ * IFS1bits.IC7IF = 0; / * Prekid bit je izbrisan * /
)/ *** *** TIMER_SETUP /
void TIMER2_SETUP (void)
(
T2CONbits.TCS = 1; / * Upotreba Internal Clock (Fosc / 4) * /
T2CONbits.T32 = 1; / * TMRx i TMRy obliku 32-bitni timer * /
T2CONbits.TCKPS = 0; / * Upotreba 1:1 prescale vrijednost * /
T2CONbits.TGATE = 0; / * Odbrojavanje vrata Akumulacija Disabled * /
T2CONbits.TSIDL = 0; / * Nastavi u stanje mirovanja * /
T2CONbits.TON = 1; / * Pokreće Timer * /
)
)Hvala