請問30F4011可以同時做AD轉換及馬達控制嗎?
|
|
|||
---|---|---|---|---|
新會員
|
發表於: 2010/3/10 20:22
|
|||
|
Re: AD轉換
|
||||
---|---|---|---|---|
新會員
|
應該是這樣,請問要怎麼更改程式才可以讓LCD顯示90時做切換動作呢?
發表於: 2010/2/2 13:43
|
|||
|
Re: AD轉換
|
||||
---|---|---|---|---|
新會員
|
測試時,LCD上的數值會隨著感測器變化而產生不同的數值,BUFFER內應該是有值的吧?
發表於: 2010/1/29 22:24
|
|||
|
AD轉換
|
||||
---|---|---|---|---|
新會員
|
使用的是APP020的模擬板,修改dsPIC數位訊號控制器原理與應用的範例程式11-4
想請問ADCValue1 = ReadADC10(0) ;中的ADCValue1是什麼樣的形態? 因為想將轉換出來的數值做程式判別,希望在讀出來的數值大於90與小於90時,可以改變模擬板上LED狀態。 目前無法達成,想請教是哪出了問題? void Show_ADC(void) { // unsigned int ADCValue1,ADCValue2; int Loop ; ADCValue1 = 0; // clear ADCValue ADCValue2 = 0; ADCON1bits.SAMP = 1; // start sampling for ( Loop = 0 ; Loop < 100 ; Loop ++ ) ; // ADCON1bits.SAMP = 0; // stop sampling while (BusyADC10()); // conversion done? ADCValue1 = ReadADC10(0) ; //------------------------------------------------------------------------------- if(ADCValue1>90) { LATEbits.LATE0 = 0; } else { LATEbits.LATE0 = 1; } //------------------------------------------------------------------------------- setcurLCD(4,1) ; // Set LCD cursor put_Num_LCD( ADCValue1 >> 2 ) ; // 將類比轉換結果以十進位數字顯示至液晶顯示器 ADCValue2 = ReadADC10(1) ; setcurLCD(12,1) ; // Set LCD cursor put_Num_LCD( ADCValue2 >> 2 ) ; // 將類比轉換結果以十進位數字顯示至液晶顯示器 }
發表於: 2010/1/29 14:08
|
|||
|
產生100次訊號
|
||||
---|---|---|---|---|
新會員
|
希望可以產生100訊號後停止,但用視波器觀察時,訊號不斷的產生,以下是我的程式碼,想請問有哪邊有問題
--------------------------------------------------------------------------------------------------------- #include <p30F4011.h> #define FCY 7372800 * 2 // 因為使用頻率為將外部 7.3728 MHz * 8 的模式 , 每一指令週期需 4 個 clock // 所以 FCY = (7.3728 * 8 / 4 ) MHz = 7372800* 2 _FOSC(CSW_FSCM_OFF & XT_PLL8); // XT with 8xPLL oscillator, Failsafe clock off _FWDT(WDT_OFF); // Watchdog timer disabled _FBORPOR(PBOR_OFF & MCLR_EN); // Brown-out reset disabled, MCLR reset enabled _FGS(CODE_PROT_OFF); // Code protect disabled int main() { ADPCFG = 0xFFFF ; TRISB = 0xFFFF ; LATE = 0xFFFF; TRISE = 0xFFF0; int x; for(x=0;x<100;x++) { LATEbits.LATE0 = 1; delay(21); LATEbits.LATE0 = 0; delay(79); } } delay(int d) { int i,j; for(i=0;i<d;i++) for(j=0;j<250;j++) Nop(); }
發表於: 2009/11/4 18:12
|
|||
|
A/D轉換
|
||||
---|---|---|---|---|
新會員
|
我有一個sensor的輸出電壓範圍在1.8~4.8v,請問要如何做轉換?程式要怎麼寫?
發表於: 2009/10/3 0:22
|
|||
|
如何使用for迴圈寫delay時間?
|
||||
---|---|---|---|---|
新會員
|
請問如何使用for迴圈寫一個delay時間為100us?
發表於: 2009/9/28 9:35
|
|||
|
30F4011 PWM控制伺服機
|
||||
---|---|---|---|---|
新會員
|
以下程式碼為曾百由寫的 dspic數位訊號控制器原理與應用
第15章中的範例 //--------------------------------------------------------------------- #define __dsPIC30F4011__ #include <p30F4011.h> #include <pwm.h> // 將pwm函式的原型宣告檔案含入 #define FCY 7372800 * 2 // 因為使用頻率為將外部 7.3728 MHz * 8 的模式 , 每一指令週期需 4 個 clock // 所以 FCY = (7.3728 * 8 / 4 ) MHz = 7372800* 2 void Init_MCPWM(void); _FOSC(CSW_FSCM_OFF & XT_PLL8); //XT with 8xPLL oscillator, Failsafe clock off _FWDT(WDT_OFF); //Watchdog timer disabled _FBORPOR(PBOR_OFF & MCLR_EN); //Brown-out reset disabled, MCLR reset enabled _FGS(CODE_PROT_OFF); //Code protect disabled int main(void) { Init_MCPWM( ); while(1); } void Init_MCPWM(void) { /* Holds the PWM interrupt configuration value*/ unsigned int config; /* Holds the value to be loaded into dutycycle register */ unsigned int period; /* Holds the value to be loaded into special event compare register */ unsigned int sptime; /* Holds PWM configuration value */ unsigned int config1; /* Holds the value be loaded into PWMCON1 register */ unsigned int config2; /* Holds the value to configure the special event trigger postscale and dutycycle */ unsigned int config3; /* The value of ‘dutycyclereg’ determines the duty cycle register(PDCx) to be written */ unsigned int dutycyclereg; unsigned int dutycycle; unsigned char updatedisable; /* Configure pwm interrupt enable/disable and set interrupt priorties */ config = (PWM_INT_DIS & PWM_FLTA_DIS_INT & PWM_INT_PR1 & PWM_FLTA_INT_PR0); ConfigIntMCPWM( config ); /* Configure PWM to generate square wave of 50% duty cycle */ dutycyclereg = 1; dutycycle = 0x3FFF; updatedisable = 0; SetDCMCPWM(dutycyclereg,dutycycle,updatedisable); period = 0x7fff; sptime = 0x0; config1 = (PWM_EN & PWM_IDLE_STOP & PWM_OP_SCALE16 & PWM_IPCLK_SCALE64 & PWM_MOD_UPDN); config2 = (PWM_MOD1_COMP & PWM_PDIS3H & PWM_PDIS2H & PWM_PEN1H & PWM_PDIS3L & PWM_PDIS2L & PWM_PEN1L); config3 = (PWM_SEVOPS1 & PWM_OSYNC_PWM & PWM_UEN); OpenMCPWM(period,sptime,config1,config2,config3); /---------------------------------------------------------------/ 因為要控制伺服機,他的控訊號是1ms為反轉、2ms為正轉,每秒可接收60個訊號,想請問要怎麼設定 dutycycle 及 period?
發表於: 2009/7/16 9:17
Edited by cutesinnc on 2009年07月16日 09:36:38
|
|||
|