PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   dsPIC - Bộ điều khiển tín hiệu số 16-bit (http://www.picvietnam.com/forum/forumdisplay.php?f=29)
-   -   Các vấn đề với C30 (http://www.picvietnam.com/forum/showthread.php?t=854)

robotden 17-05-2009 01:59 AM

hihi. em cũng muốn tham gia diễn đàn này.
em vừa mới bắt đầu tìm hiểu dsPic, mong anh Namqn chỉ dạy.
em làm với dsPIC30f4011, em lập trình như ví dụ 2-1 của anh mà sao khi mô phỏng bằng MPLAB SIM thì chạy không đúng anh Namqn ạ. em đã tính toán là chu kỳ timer1 là 0.5s, thế mà nó ra đến và giây thì TMR1 mới lên 1 đơn vị.
hôm nay em tính ra HOANG HOA THAM mua con pic về mô phỏng mạch thật mà hết hàng, chán thật.
a Namqn nói giùm em cái mplab sim cái, em cấu hình mục setting là thạch anh 8 MHZ,
a cũng nói luôn cho em cách cấu hình cho dspic dùng bộ dao động nội và bộ dao động ngoài với thạch anh 8 Mhz nhé.
thanhk a!!

namqn 17-05-2009 11:12 PM

Trích:

Nguyên văn bởi robotden (Post 25791)
hihi. em cũng muốn tham gia diễn đàn này.
em vừa mới bắt đầu tìm hiểu dsPic, mong anh Namqn chỉ dạy.
em làm với dsPIC30f4011, em lập trình như ví dụ 2-1 của anh mà sao khi mô phỏng bằng MPLAB SIM thì chạy không đúng anh Namqn ạ. em đã tính toán là chu kỳ timer1 là 0.5s, thế mà nó ra đến và giây thì TMR1 mới lên 1 đơn vị.
hôm nay em tính ra HOANG HOA THAM mua con pic về mô phỏng mạch thật mà hết hàng, chán thật.
a Namqn nói giùm em cái mplab sim cái, em cấu hình mục setting là thạch anh 8 MHZ,
a cũng nói luôn cho em cách cấu hình cho dspic dùng bộ dao động nội và bộ dao động ngoài với thạch anh 8 Mhz nhé.
thanhk a!!

Trong mã nguồn của ví dụ 2-1, tôi đã chú thích là clock = 32 MHz. Để mô phỏng code ví dụ, bạn cần thiết lập tần số trong MPLAB SIM cũng là 32 MHz.

Thân,

robotden 18-05-2009 11:58 AM

dạ, em đã thiết lập rùi mà nó không có được anh nam ạ.
đây là chuơng trình của em nè:
#include "p30f4011.h"


//khai bao 4 bo thong so cho dsPic
_FOSC(CSW_FSCM_OFF & FRC_PLL4); //tat FSCM va dung tan so noi FRC voi PLL4, CSW CLock Switch:co kha nang tu dong chuyen doi giau cac nguon xung clock
//FSCM: giam sat su lam viec cua clock ngoai, neu bi loi se tu dong chuyen vao dung clock internal, o day OFF ca 2
_FWDT(WDT_OFF); //tat Cho giu nha
_FBORPOR(PBOR_OFF & MCLR_EN & PWMxL_ACT_HI & PWMxH_ACT_HI);//cho pep reset MCLR, nobrownout
_FGS(CODE_PROT_OFF); //ko bao ve code



#define LED _LATD0

void kt_port(void);
void kt_timer1(void);
//ct chinh
void main(void)
{
kt_port();
kt_timer1();

while(1){};///cho ngat
}


//ct con khoi tao cac cong vao ra noi voi led
void kt_port()
{
LATD=0;
//_TRISD0=0;//D0 la ngo ra
TRISD=0xFFFE;
}
void kt_timer1()
{
TMR1=0;//xoa thanh ghi dem timre1 ve 0
PR1=0xF424;
_T1IF=0;//xoa co ngat
T1CON=0x8020;//1:64(10), T1ON=1
_T1IE=1;//cho phep ngat

}


//ct xu ly ngat
void _ISR_T1Interrupt(void)
{
_T1IF=0;//xoa ngat
_LATD0^=1;//xor bit


}

thanhgand 12-08-2009 04:23 PM

chào các bác.cho em hỏi một chút về c30.các bác có thể diễn giải giúp em dòng code sau được không : " extern volatile T2CONBITS T2CONbits __attribute__((__sfr__));"
em không hiểu __attribute__((__sfr__)) là gì.
rồi một loạt các khai báo tương tự thế trong các thư viện của c30.
__attribute__((__sfr__,__deprecated__,__unsafe__))
vvv
em đã đọc qua help của c30 mà không hiểu mấy, mong các bác chỉ giúp.em mới tìm hiểu c30.

tahi 30-09-2009 01:17 PM

Trích:

Nguyên văn bởi thanhgand (Post 28594)
chào các bác.cho em hỏi một chút về c30.các bác có thể diễn giải giúp em dòng code sau được không : " extern volatile T2CONBITS T2CONbits __attribute__((__sfr__));"
em không hiểu __attribute__((__sfr__)) là gì.
rồi một loạt các khai báo tương tự thế trong các thư viện của c30.
__attribute__((__sfr__,__deprecated__,__unsafe__))
vvv
em đã đọc qua help của c30 mà không hiểu mấy, mong các bác chỉ giúp.em mới tìm hiểu c30.

Chỗ này chắc là khai báo địa chỉ của các thanh ghi T2CON (hoặc cấp phát bộ nhớ gì đó, nói chung là chưa rõ )

Mấy cái _sfr_ , _unsafe_ được khai báo địa chỉ trong support/dspic33f/gld (nếu dùng dspic33)
Mấy cái này em cũng chưa hiểu rõ lắm. Ví dụ chỗ này nhé:
Code:

__extension__ typedef struct tagCLKDIVBITS {
  union {
    struct {
      unsigned PLLPRE:5;
      unsigned :1;
      unsigned PLLPOST:2;
      unsigned FRCDIV:3;
      unsigned DOZEN:1;
      unsigned DOZE:3;
      unsigned ROI:1;
    };
    struct {
      unsigned PLLPRE0:1;
      unsigned PLLPRE1:1;
      unsigned PLLPRE2:1;
      unsigned PLLPRE3:1;
      unsigned PLLPRE4:1;
      unsigned :1;
      unsigned PLLPOST0:1;
      unsigned PLLPOST1:1;
      unsigned FRCDIV0:1;
      unsigned FRCDIV1:1;
      unsigned FRCDIV2:1;
      unsigned :1;
      unsigned DOZE0:1;
      unsigned DOZE1:1;
      unsigned DOZE2:1;
    };
  };
} CLKDIVBITS;

Chỗ này là sao unsigned :1;
unsigned PLLPRE:5; // PLLPRE chia 5 hay PLLPRE gồm 5 bít ?, lôi nó ra như thế nào
Muốn dùng từng bít của thanh ghi CLKDIV thì làm thế nào ? Hoặc muốn cấu hình PLLDIV, PLLPOST hoặc PLLPRE thì làm thế nào ?
Giả sử em muốn cấu hình dùng thạch anh ngoài sao cho FCY= 40MIPS, em tính ra các hệ số M=32, N1=N2=2, thì thiết lập các thông số này ở đâu ?
Mấy cái configuration bit nữa , nếu cấu hình trong đó thì ko phải code nữa có phải ko ạ ?
Ngoài các biến của C chuẩn, C30 còn có các loại biến nào khác không ?

Vinhrpic 13-10-2009 03:44 PM

Em muốn lập trình dsPIC bằng C30 Cho dsPIC thay vì sử dụng CCS ,nhưng mà trong MPLAP IDEv8.33 em không biết phải sử dụng như thế nào ,nên khi biên dịch một bài đơn giản nhất cũng báo lỗi .
các Anh có thể chỉ cho em các sử dụng C30 trong MPLAB được không ?và nếu có thể cho em một bài mẫu .

namqn 13-10-2009 07:54 PM

Trích:

Nguyên văn bởi Vinhrpic (Post 30207)
Em muốn lập trình dsPIC bằng C30 Cho dsPIC thay vì sử dụng CCS ,nhưng mà trong MPLAP IDEv8.33 em không biết phải sử dụng như thế nào ,nên khi biên dịch một bài đơn giản nhất cũng báo lỗi .
các Anh có thể chỉ cho em các sử dụng C30 trong MPLAB được không ?và nếu có thể cho em một bài mẫu .

Bạn đã đọc tutorial 1 cho dsPIC chưa? Tutorial này nhắm vào người học như bạn đó. Ở bước chọn trình dịch, thay vì chọn trình hợp dịch "MPLAB ASM30 Toolsuite" thì bạn chọn "MPLAB C30 Toolsuite". Cần phải cài đặt C30 một cách độc lập so với MPLAB IDE.

Thân,

Vinhrpic 14-10-2009 08:53 AM

cảm ơn anh Namqn đã gúp đỡ em
 
Em mới cài MPLABCdsPICStdEvalv3_20_B.exe thêm vào MPLAB
Anh có thể hướng đẫn giúp em làm một bài mâu đơn giản nhất cho nó chạy được không?

npbaoduy 16-10-2009 11:45 PM

Em có một vấn đề không hiểu khi thực hiện biến đổi FFT trong C30, đó là các hệ số twiddle trong lý thuyết là các số phức, vậy khi sử dụng hàm
FFTComplexIP (

int log2N,

fractcomplex* srcCV,

fractcomplex* twidFactors,

int factPage

);
thì các hệ số này khai báo làm sao để được số phức? Em xem một số ví dụ thì thấy người ta chỉ khai báo như là các số nguyên 16bit thông thường (các hệ số này thường là số thực chứ ko nguyên?)?

Em xin cám ơn.

npbaoduy 18-10-2009 09:04 AM

Cuối cùng mình cũng đã hiểu, xin trình bày luôn để giúp những ai có thắc mắc giống mình.
Thật ra đó là những số phức, word thứ nhất là phần thực, word kế tiếp là phần ảo của nó.

npbaoduy 19-10-2009 12:18 AM

Cho em hỏi thêm một câu, trong C30 có hàm đổi từ chuỗi ra số nguyên và ngược lại hay không?
Cám ơn rất nhiều.

tahi 22-10-2009 04:07 PM

Trích:

Nguyên văn bởi npbaoduy (Post 30368)
Cho em hỏi thêm một câu, trong C30 có hàm đổi từ chuỗi ra số nguyên và ngược lại hay không?
Cám ơn rất nhiều.

chuyển từ string sang số int hả

char *str1 = "Testing UARTx...";
Khi dùng thì viết
putsUART1((unsigned int *)str1);

Các bác cho em hỏi với, em dùng icd2 để nạp và debug nhé. Nhưng em ko biết cách cấu hình ID memory trong phần configure, với 1 con bất kỳ thì xem ID memory ở đâu (em tìm cả buổi trên google mà vẫn chưa thông...Hơi kém chút). Nên nó báo lỗi loạn nên.

Khi chọn debug thì thấy debug rất chậm. Không biết nạp xong có phải reset hay ko mà có mỗi nháy led mà lúc được lúc không. Khoảng thời gian từ khi nạp xong đển khi bộ PLL được lock là bao nhiêu.

Còn phần cấu hình secure segment thì chọn như thế nào
Em dùng dsPIC33FJ128MC804.

tahi 26-10-2009 08:57 AM

Tự trả lời bài viết của mình vậy. Khi dùng debug bằng IDC2 (mà bằng cái gì cũng thế thôi)thì trong phần project/build configuration phải để là mode debug (khônng phải là release).
Nếu nạp bằng phân programmer, nhớ import file .hex vào, khi nạp xong thì vào programmer chọn phần release from reset để chạy. Còn khi nạp lại chỉ vào phần hold in reset.

Còn vấn đề nữa là. Dùng các thư viện ngoại vi sẵn có của C30 bằng cách include thêm file.h. Nhưng khi debug thì không thể nhảy vào hàm được. Nếu include cả file .c thì nhảy vào hàm được nhưng trong thư viện của C30, nó tách mỗi hàm thành 1 file .c như vậy mỗi khi dịch lại link 1 đống các file. Vậy có cách nào dồn đống hàm đó vào 1 file không?
+ Cách 1: Chịu khó gom thủ công thành 1 file .c (cái này em làm rồi, ok ngon)
+ Cách 2: Tạo ra 1 file .lib (không biết làm thế nào )

Vấn đề là em muốn tạo ra 1 cái file thư viện để khi debug có thể nhảy vào hàm (có thể dịch sang object-file .o rồi include vào project cũng được)

popeye_ts22 28-10-2009 12:50 PM

Edit thư viện Xlcd
 
Code:

OpenXLCD(EIGHT_BIT & TWO_LINE & SEG1_50_SEG51_100
            & COM1_COM16);    //Khoi tao lcd

Không biết LCD Type ở đây là gì,không hiểu sao C30 toàn báo lỗi.
Code:

LCD162.c: In function 'main':
LCD162.c:9: warning: implicit declaration of function 'OpenXLCD'
LCD162.c:9: error: 'EIGHT_BIT' undeclared (first use in this function)
LCD162.c:9: error: (Each undeclared identifier is reported only once
LCD162.c:9: error: for each function it appears in.)
LCD162.c:9: error: 'TWO_LINE' undeclared (first use in this function)
LCD162.c:10: error: 'SEG1_50_SEG51_100' undeclared (first use in this function)
LCD162.c:10: error: 'COM1_COM16' undeclared (first use in this function)
LCD162.c:11: warning: implicit declaration of function 'PutsXLCD'
LCD162.c:13: warning: implicit declaration of function 'SetDDRamAddr'
LCD162.c:15: warning: implicit declaration of function 'DelayMs'
LCD162.c:23:2: warning: no newline at end of file

Thư viện Xlcd có dùng cho PIC24F được không ạ, khi mà bỏ hết #ifdef_RD10

hungnk87 29-10-2009 01:58 PM

loi trong c30
 
Tại sao trong MPLAB(c30) khi khai báo #include<tenthuvien.h> thì nó báo lỗi là:"No such file or directory" mặc dù 2 file .h và .c đã copy vào trong thư mục project đó rồi. Thư viện này là tự viết, không phải của MicroChip.Nhưng hễ include thư viện của Microchip thi được


Múi giờ GMT. Hiện tại là 10:25 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam