• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (kusowater)




Re: dsPIC30F4011之pwm和ADC做FFT轉換?
#1
初級會員
初級會員


PORTE為PWM輸出腳位(RE即E的腳位)

FFT 我用一個PORT開關表示轉換時間(RC即C的腳位)




另有一個問題是 : 做fft運算要增加一個libdsp-coff.a檔

為什麼.a檔點進去都是亂碼 ?

發表於: 2010/1/7 14:55
頂部


dsPIC30F4011之pwm和ADC做FFT轉換?
#2
初級會員
初級會員


如題,跟大家請教一下,

於主程式做PWM和FFT,兩個程式不相干

PWM設定port輸出 (PORTE)

FFT :A/D轉換,timer3觸發,做fft


正常的話,應該是pwm正常輸出,而fft做a/d訊號轉換


小弟在fft轉換做一個測試腳位,即PORT開關表示fft轉換時間

發現fft的PORT轉換後,會影響pwm的開關,

即原本的pwm輸出波形開啟反而受fft的影響關閉,



初步判斷是fft轉換時間或a/d轉換的時間delay到PWM的中斷,不知這樣的思考是否正確? 也請各位大大不吝指教

發表於: 2010/1/7 3:26
頂部


關於BUILD的情形?
#3
初級會員
初級會員


如題,BUILD後會產生以下程式是何原因?

Program Memory Usage

section                    address   length 
(PC units)   length (bytes) (dec)
-------                    -------   -----------------   --------------------
.
reset                           0                 0x4             0x6  (6)
.
ivt                           0x4                0x7c            0xba  (186)
.
aivt                         0x84                0x7c            0xba  (186)
.
text                        0x100               0x5f2           0x8eb  (2283)
.const                       
0x6f2                0x16            0x21  (33)
.
dinit                       0x708                0x26            0x39  (57)
.
isr                         0x72e                 0x2             0x3  (3)
__FOSC                    0xf80000                 0x2             0x3  (3)
__FWDT                    0xf80002                 0x2             0x3  (3)
__FBORPOR                 0xf80004                 0x2             0x3  (3)
__FGS                     0xf8000a                 0x2             0x3  (3)

                     
Total program memory used (bytes):          0xace  (27665%


Data Memory Usage

section                    address      alignment gaps    total length  
(dec)
-------                    -------      --------------    -------------------
.
ndata                       0x800                   0            0x12  (18)
.
nbss                        0x812                   0             0x8  (8)
.
nbss                        0x81a                   0             0x4  (4)
.
nbss                        0x81e                   0             0x2  (2)

                        
Total data memory used (bytes):           0x20  (321%


Dynamic Memory Usage

region                     address                      maximum length  
(dec)
------                     -------                      ---------------------
heap                             0                                   0  (0)
stack                        0x820                               0x7e0  (2016)

                        
Maximum dynamic memory (bytes):          0x7e0  (2016)



---------------------------傳說中分隔線-----------------------------


範例並不是每個程式都會產生,要怎麼設定才會讓程式BUILD後產生以上的程式??

發表於: 2009/6/7 16:56
頂部


dspic30f4011記憶體可否轉換?
#4
初級會員
初級會員


如題,請教一下各位菁英

我看4011的程式記憶體有48K之多

而資料暫存器僅2K

因為寫入的資料頗多,

所以想請問有辦法可以設定資料寫入程式記憶體的空間嗎?

發表於: 2009/6/2 20:10
頂部


FFT轉換?
#5
初級會員
初級會員


範例18-2
void TransformDemo(void)

   
unsigned k;

   for (
k=0k<NUM_SAMPSk++)
   {
      
fft_in[k].real fft_in_real[k];
      
fft_in[k].imag 0;
   }  
   
TwidFactorInit (4, &twiddle_factors[0], 0);
    
   
/* compute the FFT */   
   
FFTComplex (4, &fft_out[0], &fft_in[0], &twiddle_factors[0], COEFFS_IN_DATA);


以上是fft轉換部分程式core,

請問(1)
TwidFactorInit (4, &twiddle_factors[0], 0);
4是指Log2(16)=4的意思嗎?

假如我做128點,那4改成7? 這樣對嗎?

(2)
另外前面的部分我改成這樣:(不知是否可行?)
unsigned k;
                   for (
k=0k<NUM_SAMPSk++) 
                {
                  while ( !
ADCON1bits.DONE ); 
                     
ADCON1bits.DONE 0;     
                  
fft_in_real[k] = ADCBUF0;
                       
fft_in[k].real fft_in_real[k];
                     
fft_in[k].imag 0;

發表於: 2009/6/1 10:59
頂部


SPI的MCP4921寫法??
#6
初級會員
初級會員


int        SPI_MCP4921_Write(unsigned int SPI_Data 
{
        
unsigned char    Status ;

        
SPI_Data SPI_Data << ;
        
SPI_Data &= 0x0FFF ;
        
                                
//SPI_Data |= 0b0011000000000000 ;
        
SPI_Data |= 0x3000 ;
        
SPI_CS ;
            

            
SPI_ByteWrite ( (char) ((SPI_Data >> 8) & 0x00ff)) ;            
            
SPI_ByteWrite ( (char) (SPI_Data 0x00ff));

        
SPI_CS ;

        return 
;                                
        
}



請問各位專業人才
(1)
SPI_Data |= 0b0011000000000000 ;
可以寫成SPI_Data |= 0x3000 嗎?
雖然兩種寫法出來的波形都一樣。


(2)
SPI_ByteWrite ( (char) ((SPI_Data >> 8) & 0x00ff)) ;
SPI_ByteWrite ( (char) (SPI_Data & 0x00ff));

不了解這兩行的意思??

發表於: 2009/5/14 21:41
頂部


關於I2C和SPI外接SRAM ???
#7
初級會員
初級會員


如題,我是用IC 4011想外接SRAM擴充


想問問I2C 和SPI外接的差別??




I2C的範列,好像接兩隻腳就可以了,再一隻電壓傳送

SPI就比較麻煩點,乍看之下 = =
(下載區提供的檔案)


不知有人能解惑一下小弟嗎?

發表於: 2009/5/8 0:35
頂部


C30EVM_LCD腳位設定??
#8
初級會員
初級會員


#include "C30EVM_LCD.h"
#include <p30F4011.h>




以下為C30EVM_LCD.C 的LCD用到的RB腳位

#define LCD_E LATBbits.LATB7
#define LCD_E_MODE ADPCFGbits.PCFG7

#define DIR_LCD_E TRISBbits.TRISB7



因為AD需要RB的腳位,所以把RB7改成RF5

出現以下的狀況,不知為何= =?

C30EVM_LCD.c: In function 'OpenLCD':
C30EVM_LCD.c:59: error: 'TRISBBITS' has no member named 'TRISF5'

發表於: 2009/5/6 0:05
頂部


Re: 請問類比數位電壓值?
#9
初級會員
初級會員


搞了半天才知道原來在LCD程式裡設定到共通腳(RB7),難怪一直沒訊號。

叨擾甚久,抱歉= =''

訊號已正常

發表於: 2009/5/5 8:15
頂部


Re: 請問類比數位電壓值?
#10
初級會員
初級會員


0~1.27V 我是用示波器量測,

D/A的類比訊號;外接一顆dac 558出來的電壓訊號

-----

lcd顯示為0~255 ,

0~127時,D/A的電壓0~1.27V

128~255時,D/A電壓由原本的1.27V歸零,再從0~1.27V

-----

因為設PORTB=ADCValue;

應該是RB0~RB7數位輸出,不知為何RB7沒訊號= =??



程式的部份,不知道問題在哪,所以...




DAC 558單獨測試是ok的= =

------------------------------------------------------


int    mainvoid )
{

    
TRISB=0xff00;

    
Init_ADC( ) ;                                        // 將ADC進行初始化設定

    
OpenLCD( ) ;                                        // 使用 OpenLCD( )對 LCD 模組作初始化設定
                                                        // 4 bits Data mode
                                                        // 5 * 7 Character 

    
setcurLCD(0,0) ;                                    // 使用 setcurLCD( ) 設定游標於 (0,0)
    
putrsLCDMy_String1 ) ;                            // 將存在 Program Memory 的字串使用
                                                        // putrsLCD( ) 印出至 LCD
            
    
setcurLCD(0,1) ;                                    // 使用 setcurLCD( ) 設定游標於 (0,1)
    
putrsLCDMy_String2 ) ;                            // 將存在 Data Memory 的字串使用
                                                        // putsLCD( ) 印出至 LCD

    
ConfigIntTimer3T3_INT_PRIOR_6 T3_INT_ON ) ;

    
OpenTimer3T3_ON T3_IDLE_STOP T3_GATE_OFF T3_PS_1_1 &  T3_SOURCE_INT ,
   (
FCY/7680)  ) ;   //1KHz

    
OneSecond ;

    while(
1
    {    
        if ( 
OneSecond )                                 // 詢問 Timer1 的 Period 時間是否已到
                                                        // 可以用軟體模擬來檢查是否為準確的 1 ms
        
{
            
OneSecond ;                             
                    
            
Show_ADC( ) ;                                // 將類比轉換結果顯示於 LCD 上 

        
}
    }        
}

發表於: 2009/5/4 23:46
頂部



(1) 2 3 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------