dsPIC2020 ADC PROPLEMS
|
||||
---|---|---|---|---|
新會員
|
各位大大 你們好!!
我現在有個dsPIC2020 ADC部分的問題。我有4的外部信號要進dsPIC的 AN0~AN3, 我在程式部分要分別去讀取這四個信號,但是如果只是分別讀AN0和AN1 或者是AN2和AN3 用示波器去看都沒有錯 但是如果要一次讀取這四個信號他就只有轉換AN0和AN1的信號 而AN2和AN3的信號都沒有被轉換。我是採用軟體觸發轉換的方式。謝謝!! 我的ADC暫存器設定如下: void Init_ADC(void) { IEC2bits.ADCP0IE = 0 ; IFS2bits.ADCP0IF = 0 ; ADCON = 0x0023 ; ADPCFG = 0xFFF0 ; ADSTAT = 0x0000 ; ADCPC0 = 0x8181 ; ADCONbits.ADON = 1 ; } 主程式內容如下: int main(void) { TRISE = 0x0000; TRISBbits.TRISB5 = 0; Init_ADC(); while(1) { ADCPC0bits.SWTRG0 = 1 ; ADCPC0bits.SWTRG1 = 1 ; if(!ADCPC0bits.PEND0); ZL1 = ADCBUF0 >> 2 ; IL1 = ADCBUF1 >> 2 ; if(!ADCPC0bits.PEND1) ZC1 = ADCBUF2; ADCPC0bits.SWTRG0 = 1 ; ADCPC0bits.SWTRG1 = 1 ; if(!ADCPC0bits.PEND0); ZL2 = ADCBUF0 >> 2 ; IL2 = ADCBUF1 >> 2 ; if(!ADCPC0bits.PEND1) ZC2 = ADCBUF2; if((ZL1 + ZL2)*0.5 >= 100) LATE = (-1*(IL1 + IL2)*0.5*0.0032258*4*25)+128; else LATE = (1*(IL1 + IL2)*0.5*0.0032258*4*25)+128; if((ZC1-ZC2) >= 100) LATBbits.LATB5 = 1; else LATBbits.LATB5 = 0; } }
發表於: 2009/5/3 23:11
|
|||
|
Re: dsPIC2020 TIMER1 INTERRUPT CAN NOT WORK
|
||||
---|---|---|---|---|
新會員
|
我有把int ISR_T1_Interrupt(void)改成void ISR_T1_Interrupt(void) 不過還是不行><
發表於: 2009/2/23 11:26
|
|||
|
dsPIC2020 TIMER1 INTERRUPT CAN NOT WORK
|
||||
---|---|---|---|---|
新會員
|
請教一下:我想設定TIMER1的中斷功能並且每1ms進入中斷副程式執行。初始化時timer1相關暫存器我都有開啟(如t1_on, t1_int_enable, ti_pripr7, )並且清除t1的專斷旗標。但是不巧的是他初始化完就一直於主程式迴圈裡並不會因timer1計數1ms就進入中斷副程式。我不曉得是我站存器少設了什麼還是要有特別的指令去呼叫持是過來執行中斷副程式,我是只用c language. 麻煩你了^^
#define __dsPIC30F2020__ #include <p30F2020.h> #include <timer.h> #define FCY 424628450/32 //CLK/8/4 void Init_TMR1(void); unsigned char second = 0; unsigned char onesecond = 0; unsigned int milisec = 0; int ISR_T1_Interrupt(void) { milisec = milisec+1 ; if(milisec == 1000) { milisec = 0; onesecond = 1; } IFS0bits.T1IF = 0; } int main(void) { ADPCFG = 0XFFFF; TRISB = 0X0000; Init_TMR1(); onesecond = 0; while(1) { if(onesecond) { onesecond = 0; second = second+1; LATB = second; } } } void Init_TMR1(void) { IEC0bits.T1IE = 1 ;//Enable the interrupt function IFS0bits.T1IF = 0 ;//Clear the interrupt flag for initial setting IPC0 = 0x7000 ; //The highest Priority level 7 PR1 = FCY/1000 ; //Calculate the FCY with 1m Sec T1CON = 0x8000 ; //Turn on timer1, prescale 1:1 }
發表於: 2009/2/23 11:25
|
|||
|
Re: dsPIC2020如何用C語言來產生一個弦波的參考訊號
|
||||
---|---|---|---|---|
新會員
|
上面的指令我之前學LCD顯示的時候好像有學過,那如果要用這指令來產生60Hz, magnetude of 15V 的正弦波表的指令該怎麼寫且如何使用PSV方式查詢這個表?我不懂得用PSV查詢資料的原理。麻煩你了︿__︿"
發表於: 2009/2/19 14:05
|
|||
|
Re: dsPIC2020如何用C語言來產生一個弦波的參考訊號
|
||||
---|---|---|---|---|
新會員
|
我想要產生一個弦波的參考訊號去跟三角波比較來產生PWM輸出,那這個IC內部的弦波的參考訊號要如何用C Code來撰寫。我有聽說過好像可以用建表的方式,那該如何建呢?謝謝!!
發表於: 2009/2/19 10:26
|
|||
|
dsPIC2020如何用C語言來產生一個弦波的參考訊號
|
||||
---|---|---|---|---|
新會員
|
各位大大:
我想用C來寫出一個可以產生弦波的參考訊號,CODE要如何寫呢? 謝謝!
發表於: 2009/2/18 23:26
|
|||
|