problema sa input makunan sa dsPIC30F3011

T

tagabukid

Guest
Mahal na lahat,
Ako ay gumagamit ng input makunan ng dsPIC30F3011 para sa pagkalkula ng mga pulse width ng isang parisukat na alon.Ako gamit ang mga sumusunod na code:

Code:

hindi linagdaan int rotateCount = 0;

hindi linagdaan int timePeriod = 0; current_value = 0, previous_value = 0;magpawalang-bisa InitIC (walang laman)

(

IC7CONbits.ICM = 3; / / makunan bawat pagsikat gilid

IC7CONbits.ICBNE = 0; / / Input makunan buffer ay walang laman

IC7CONbits.ICOV = 0; / / Walang input makunan overflow nangyari

IC7CONbits.ICI = 0; / / tumakip sa bawat makunan kaganapan

IC7CONbits.ICTMR = 1; / / TMR2 nilalaman ay nakuha sa nakunan kaganapan

IC7CONbits.ICSIDL = 0; / / Input makunan module ay patuloy na tatakbo sa CPU Idle modeIFS1bits.IC7IF = 0; / / makatakip bit ay nalilimas

IPC4bits.IC7IP = 3; / / Itakda ang makatakip prayoridad sa 3

IEC1bits.IC7IE = 1; / / Itakda ang IC7 makatakip paganahin ang bit

)magpawalang-bisa TMR2_setup (walang laman)

(

TMR2 = 0x00; / / I-clear ang mga nilalaman ng timer magrehistro

T2CONbits.TCS = 1; / / timer ay gumagamit ng mga panloob na orasan kapag TCS = 0.
Paggamit ng Internal Clock (Fosc / 4)

T2CONbits.T32 = 0; / / TMRx at TMRy form ng isang 16-bit timer

T2CONbits.TCKPS = 0; / / Paggamit 1:1 prescale halaga

T2CONbits.TGATE = 0; / / timer Gate akumulasyon Nahinto

T2CONbits.TSIDL = 0; / / Magpatuloy sa Idle Mode

T2CONbits.TON = 1; / / Simulan Timer1 sa prescaler settings sa 1:1 at

/ / Orasan source maitakda sa mga panloob na pag-ikot

PR2 = 0xFFFF; / / load ang Panahon ng rehistro sa halaga 0xFFFF

bumalik;

)magpawalang-bisa __attribute__ ((makatakip, no_auto_psv)) _IC7Interrupt (walang laman)

(

rotateCount = rotateCount 1;kung (rotateCount == 6)

(

previous_value = current_value;

current_value = IC7BUF;

kung (current_value> previous_value)

(

timePeriod = current_value-previous_value;

)

kung hindi

(

timePeriod = (PR2 - previous_value) current_value;

)SendData (timePeriod); / / pagpapadala ng oras ng panahon na ang host ng PC

rotateCount = 0;

)

IFS1bits.IC7IF = 0; / / makatakip bit ay nalilimas

)
 
Ito would maaari malaki kung kahit sino magkaroon ng isang solusyon ng aking problema.Ako ay may kalakip na ang koneksyon setup ako gamit sa aking paligid para sa input makunan.Mangyari lamang na sabihin sa akin kung ako ay mali.

Maaring tumagal ng malalapit tingnan ang initialization function ako gamit para sa Input makunan at timer2.

salamat
Paumanhin, ngunit kailangan mo ng pag-login in upang makita ang attachment na ito

 
Akala ko ang iyong 'main ()' function ay lamang ng isang loop walang hanggan matapos ang pagtawag ng init function.
Saklaw ng mga input pin na siguraduhin na ang linya ay kinuha mababang ok.
Gamitin ang debugger na maglagay ng isang break point sa makatakip function, pagkatapos ay nag-iisang hakbang sa pamamagitan ng code upang tiyakin na ito ay gumagana.

 
Upang kumpirmahin ang iyong ADPCFG & TRISB mga setting upang tiyakin na "AN4/QEA/IC7/CN6/RB4" ay digital input.(default ay analog input)
Ang ICI = 0 ay isang espesyal na mode.Ang IC makatakip ay binuo pa rin kahit ICOV = 1.

 
btbass wrote:

Akala ko ang iyong 'main ()' function ay lamang ng isang loop walang hanggan matapos ang pagtawag ng init function.

Saklaw ng mga input pin na siguraduhin na ang linya ay kinuha mababang ok.

Gamitin ang debugger na maglagay ng isang break point sa makatakip function, pagkatapos ay nag-iisang hakbang sa pamamagitan ng code upang tiyakin na ito ay gumagana.
 
Sa tingin ko ay may yager ang sagot, ako ay may mga parehong problema sa aking sarili.Ang perdible kailangang isinaayos bilang isang digital I / O sa pamamagitan ng pagtatakda ng coresponding bit sa ADPCFG magrehistro.Ang default na i-reset ang estado ay analog input.
Kung ang iyong pangunahing function ay isang bagay na gusto,

Code:int pangunahing (walang laman)

(

InitIC ();

TMR2_setup ();para sa (;;){

;

)

)

 
mahal na btbass
ang aking mga pangunahing function ay eksakto tulad ng kung ano ka may said.

Bilang ang sinabi mo,
"Ang mga pin kailangang isinaayos bilang isang digital I / O sa pamamagitan ng pagtatakda ng coresponding bit sa ADPCFG magrehistro"

Ko
nang basahin ang mga magrehistro configuration ng ADPCFG ngunit hindi na maintindihan kung ano ang dapat gawin.Mangyari lamang na sabihin sa akin kung saan ang isa ay ang aking nararapat na kaunti sa ADPCFG magparehistro?Mayroon akong magtakda ng kaukulang bit ng port B (RB4) bilang input earliar.

thanks a lot para sa lahat ng mga sumusuporta sa.

 
Ang Port ay isinaayos bilang isang digital input kapag ang Tris bit ay naka-set at ang mga kaukulang ADPCFG bit ay naka-set na.
Ang ADPCFG ay malinaw at i-reset, kaya ang default na mapakali sa analog input.
IC7 makatakip ay sa pin AN4/RB4.Kaya para itakda ito bilang isang digital input.

TRISbits.TRISB4 = 1;
ADPCFGbits.PCFG4 = 1;

Na dapat gawin ang mga kakaibang ugali.
Kung havnt pa ninyo ito nagagawa, down-load ang 'Family Reference Manual' mula Microchip.Ito ay naglalaman ng mga detalyadong impormasyon tungkol sa lahat ng mga Peripheral.

 

Welcome to EDABoard.com

Sponsor

Back
Top