A
angeline
Guest
Аз съм нов потребител използвайки DSPIC30F3010.Аз съм се опитват да използват входа улавяне модул за улавяне на периода на squarewave използвайки MPLAB IDE към моите програмиране.Аз съм с помощта на ICD2 за да видите резултата от моите регистър, който е IC7BUF.Аз не съм получава никакви промени в буфер, обаче аз се сложи светодиодна за да сте сигурни, въведете кода си приноса улавяне прекъсват и тя показва ми да.Надявам се да получите някои съвети.
Код:
# Включват <p30f3010.h>
# Включват <math.h>
# Включват <stdio.h># определят LED LATDbits.LATD0/************* Глобални променливи и константи *************/
неподписан INT период = 0, captureresult1 = 0, captureresult2 = 0; / * Променливи, използвани за изчисляване периода * /недействителни __attribute__ ((__interrupt__)) _IC7Interrupt (нищожна);/**** ФУНКЦИЯ прототипи ****/
недействителни IC_SETUP (нищожна);
недействителни TIMER2_SETUP (нищожна);/****** Основното тяло ******/
INT главната (недействителни)
(
TRISD = 0; / * Определяне Port D като продукция * /
PORTD = 0; / * нулиране на LED * /
PORTD = 0xff; / * LED светлина, за да се тества PIC работи * /
TRISB = 0x003f; / * Определяне PortB като вход * /
ADPCFG = 0xffff; / * Въвеждане на ПИН аналог като цифров вход * /TIMER2_SETUP (); / * Повикващата Таймерът за инсталиране Длъжност * /
IC_SETUP (); / * Повикващата приноса улавянето Настройване Длъжност * /
докато (1)
(
)възвращаемост (0);
)
/ *** SETUP_IC ****/
недействителни IC_SETUP (недействителни)
(
IC7CONbits.ICM = 3; / * улавянето на всеки нарастващите край * /
IC7CONbits.ICBNE = 0; / * Въвеждане улавяне буфер е празна * /
IC7CONbits.ICOV = 0; / * Няма вход улавяне преливат настъпили * /
IC7CONbits.ICI = 0; / * Прекъсване на всеки улавяне случай * /
IC7CONbits.ICTMR = 1; / * TMR2 съдържанието са заловени в плен случай * /
IC7CONbits.ICSIDL = 0; / * Въвеждане улавяне модул ще продължи да работи в CPU свободен режим * /
IFS1bits.IC7IF = 0; / * Прекъсване късче се изчиства * /
IEC1bits.IC7IE = 1; / * Задайте IC7 прекъсне позволи битов * /)/**** Прекъсне ЗА IC7 ****/
недействителни __attribute__ ((__interrupt__)) _IC7Interrupt (недействителни)
(
летливи неподписан INT * PTR;PTR = &IC7BUF; / * Initialise IC7BUF показалка * /
captureresult1 = * PTR;
captureresult2 = * PTR ;
LED = ~ LED;captureresult1 = IC7BUF;период = captureresult2-captureresult1;
/ * IFS1bits.IC7IF = 0; / * Прекъсване късче се изчиства * /
)/ *** TIMER_SETUP *** /
недействителни TIMER2_SETUP (недействителни)
(
T2CONbits.TCS = 1; / * Използване на вътрешния часовник (Fosc / 4) * /
T2CONbits.T32 = 1; / * TMRx и TMRy формата на 32-битови таймер * /
T2CONbits.TCKPS = 0; / * Използване 1:1 prescale стойност * /
T2CONbits.TGATE = 0; / * Таймер Gate Натрупването инвалидите * /
T2CONbits.TSIDL = 0; / * Продължи в свободен режим * /
T2CONbits.TON = 1; / * Стартира Таймер * /
)
)Благодаря
Код:
# Включват <p30f3010.h>
# Включват <math.h>
# Включват <stdio.h># определят LED LATDbits.LATD0/************* Глобални променливи и константи *************/
неподписан INT период = 0, captureresult1 = 0, captureresult2 = 0; / * Променливи, използвани за изчисляване периода * /недействителни __attribute__ ((__interrupt__)) _IC7Interrupt (нищожна);/**** ФУНКЦИЯ прототипи ****/
недействителни IC_SETUP (нищожна);
недействителни TIMER2_SETUP (нищожна);/****** Основното тяло ******/
INT главната (недействителни)
(
TRISD = 0; / * Определяне Port D като продукция * /
PORTD = 0; / * нулиране на LED * /
PORTD = 0xff; / * LED светлина, за да се тества PIC работи * /
TRISB = 0x003f; / * Определяне PortB като вход * /
ADPCFG = 0xffff; / * Въвеждане на ПИН аналог като цифров вход * /TIMER2_SETUP (); / * Повикващата Таймерът за инсталиране Длъжност * /
IC_SETUP (); / * Повикващата приноса улавянето Настройване Длъжност * /
докато (1)
(
)възвращаемост (0);
)
/ *** SETUP_IC ****/
недействителни IC_SETUP (недействителни)
(
IC7CONbits.ICM = 3; / * улавянето на всеки нарастващите край * /
IC7CONbits.ICBNE = 0; / * Въвеждане улавяне буфер е празна * /
IC7CONbits.ICOV = 0; / * Няма вход улавяне преливат настъпили * /
IC7CONbits.ICI = 0; / * Прекъсване на всеки улавяне случай * /
IC7CONbits.ICTMR = 1; / * TMR2 съдържанието са заловени в плен случай * /
IC7CONbits.ICSIDL = 0; / * Въвеждане улавяне модул ще продължи да работи в CPU свободен режим * /
IFS1bits.IC7IF = 0; / * Прекъсване късче се изчиства * /
IEC1bits.IC7IE = 1; / * Задайте IC7 прекъсне позволи битов * /)/**** Прекъсне ЗА IC7 ****/
недействителни __attribute__ ((__interrupt__)) _IC7Interrupt (недействителни)
(
летливи неподписан INT * PTR;PTR = &IC7BUF; / * Initialise IC7BUF показалка * /
captureresult1 = * PTR;
captureresult2 = * PTR ;
LED = ~ LED;captureresult1 = IC7BUF;период = captureresult2-captureresult1;
/ * IFS1bits.IC7IF = 0; / * Прекъсване късче се изчиства * /
)/ *** TIMER_SETUP *** /
недействителни TIMER2_SETUP (недействителни)
(
T2CONbits.TCS = 1; / * Използване на вътрешния часовник (Fosc / 4) * /
T2CONbits.T32 = 1; / * TMRx и TMRy формата на 32-битови таймер * /
T2CONbits.TCKPS = 0; / * Използване 1:1 prescale стойност * /
T2CONbits.TGATE = 0; / * Таймер Gate Натрупването инвалидите * /
T2CONbits.TSIDL = 0; / * Продължи в свободен режим * /
T2CONbits.TON = 1; / * Стартира Таймер * /
)
)Благодаря