PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-06-2009, 08:02 AM   #31
robotden
Đệ tử 5 túi
 
robotden's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 102
:
trời , sao lâu quá mà không có ai vào diễn đàn này vậy,
__________________
Thật bó tay!
robotden vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-06-2009, 10:30 AM   #32
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi robotden View Post
trời , sao lâu quá mà không có ai vào diễn đàn này vậy,
Chào bạn,

Tôi không biết là có câu hỏi này dành cho tôi. Hơn nữa, hình của bạn mờ quá nên tôi không theo dõi được gì cả.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-06-2009, 08:58 AM   #33
aden
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 4
:
Trích:
Nguyên văn bởi namqn View Post
Chào bạn,

Tôi không biết là có câu hỏi này dành cho tôi. Hơn nữa, hình của bạn mờ quá nên tôi không theo dõi được gì cả.

Thân,
dạ,đại loại ý em là em làm phần cứng cho con pic33fj256gp710, giữa các chân nguồn và đất của nó em có thêm tụ 104, chân Vcore cũng có 1 tụ hóa, khối nguồn 3.3v cũng có tụ lọc, em dùng XTAL8Mhz,tụ cho thạch anh là 22pF
như vậy mạch có đủ chạy ổn đi
thank a
aden vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-08-2009, 05:29 PM   #34
thanhgand
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 5
:
bản đồ chân của họ 33f

cho em hỏi câu này mọi người ơi.sao em không thấy cấu hình chân I2C.em đã tìm trong cả hai bảng selectable input sources và output selection for remappable pin.Có phải nó được cấu hình như SPI không.nếu như vậy chọn chế độ master/slave thế nào.
thanhgand vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-08-2009, 11:24 PM   #35
JohnnyNguyen
Đệ tử 3 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 46
:
cho em hỏi cái.khi điều chế sóng sin băng PWM trong dspic33 cách cập nhật duty cycle cho PWM vào thanh ghi PxDCy để xuất ra xung thì dùng công thức nào vậy.
JohnnyNguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2009, 02:16 PM   #36
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi JohnnyNguyen View Post
cho em hỏi cái.khi điều chế sóng sin băng PWM trong dspic33 cách cập nhật duty cycle cho PWM vào thanh ghi PxDCy để xuất ra xung thì dùng công thức nào vậy.
Từ bảng 14-2 trong section "14 - Motor Control PWM" (DS70187B) của "dsPIC33F Family Reference Manual", có thể suy ra công thức tính duty cycle (cho edge-aligned PWM):

duty cycle = (PxDCy)/(2*PxTPER + 2)

Công thức trên cũng dùng được trong trường hợp có dùng prescaler, vì giá trị prescale bị triệt tiêu khi lập tỷ số.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 03:02 PM   #37
JohnnyNguyen
Đệ tử 3 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 46
:
em cũng hiểu công thức đó.nhưng trong 1 ví dụ có viêt như sau:
Code:
#include <p33fj12mc202.h>
#include <pwm.h>
#include <pwm12.h>
#define Ts 1249
#define hs 0.5
_FOSCSEL(FNOSC_PRIPLL&IESO_OFF);//dung dao dong ngoai co bo PLL
_FOSC(FCKSM_CSDCMD&OSCIOFNC_OFF&POSCMD_XT);//chon che do XT
_FWDT(FWDTEN_OFF);//tat watchdog
_FPOR(PWMPIN_ON&HPOL_ON&LPOL_ON);//cac chan ra dieu khien boi PORT luc reset,deu co the cao
unsigned char i=0;
unsigned char j=0;
unsigned int const sin_table[40]={0,98,195,291,386,478,567,653,734,811,883,950,1010,1065,1113,1154,1188,1214,1234,1245,1249,
								  1245,1234,1214,1188,1154,1113,1065,1010,950,883,811,734,653,567,478,386,291,195,98};
void Init_PWM(void);
int main(void)
{ PLLFBD = 41;
  _PLLPOST = 0;
  _PLLPRE = 0;
  while (_COSC !=0b011);//dung bo PLL tao Fosc=80MHz,cho cho dao dong on dinh
  while (_LOCK !=1);//cho PLL bat dau khoa pha
  TRISB=0X0000;
  LATB=0X0000;
  Init_PWM();
while(1);
}
void Init_PWM(void)
{
P1TCONbits.PTMOD = 0b10;//continuous up/down cout mode
P1TCONbits.PTCKPS = 0b01;//prescale 4Tcy
P1TCONbits.PTOPS = 0b0000;//postscale 1:1
P1TPER = Ts;//Fpwn = 4kHz
PWM1CON1bits.PMOD1=0;//complementary mode
PWM1CON1bits.PMOD2=0;
PWM1CON1bits.PEN2H=1;//enable for PWM output
PWM1CON1bits.PEN1H=1;
PWM1CON1bits.PEN2L=1;
PWM1CON1bits.PEN1L=1;
PWM1CON2bits.IUE=0;
PWM2CON2bits.UDIS=0;//update from duty cycle and period buffer registers are enabled
P1DTCON1bits.DTAPS=0b00;//Dead time prescale 1:1
P1DTCON1bits.DTA = 40;//deadtime = 1um
//P1DTCON1bits.DTBPS=0b00;
//P1DTCON1bits.DTB = 0;
P1DTCON2bits.DTS2A=0;//Unit A selected for PWM active transitions
P1DTCON2bits.DTS1A=0;
P1DTCON2bits.DTS1I=0;//Unit B selected for PWM inactive transitions
P1DTCON2bits.DTS2I=0;
P1OVDCONbits.POVD2H=1;//PWM I/O pin controlled by PWM generator
P1OVDCONbits.POVD1H=1;
P1OVDCONbits.POVD2L=1;
P1OVDCONbits.POVD1L=1;
P1DC1=0;
P1DC2=0;
_PWM1IF=0;
_PWM1IE=1;
P1TCONbits.PTEN=1;
}
void __attribute__((interrupt,auto_psv)) _MPWM1Interrupt(void)
{
_PWM1IF=0;
if (i==0) 
{ P1DC1 = (unsigned int)(Ts - sin_table[j])*hs;
  P1DC2 = (unsigned int)(Ts + sin_table[j])*hs;
  j++;
  if (j==40) {j=0;i=1;};
}
else
{ P1DC1 = (unsigned int)(Ts + sin_table[j])*hs;
  P1DC2 = (unsigned int)(Ts - sin_table[j])*hs;
  j++;
  if (j==40) {j=0;i=0;};
}
}
em thắc mắc cái công thức tính PDC ở đây.hệ số hs=0,5 tính ra trc như thế nào ạ

thay đổi nội dung bởi: namqn, 30-08-2009 lúc 04:55 PM. Lý do: định dạng code
JohnnyNguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 04:58 PM   #38
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi JohnnyNguyen View Post
em cũng hiểu công thức đó.nhưng trong 1 ví dụ có viêt như sau:
Code:
#include <p33fj12mc202.h>
#include <pwm.h>
#include <pwm12.h>
#define Ts 1249
#define hs 0.5
_FOSCSEL(FNOSC_PRIPLL&IESO_OFF);//dung dao dong ngoai co bo PLL
_FOSC(FCKSM_CSDCMD&OSCIOFNC_OFF&POSCMD_XT);//chon che do XT
_FWDT(FWDTEN_OFF);//tat watchdog
_FPOR(PWMPIN_ON&HPOL_ON&LPOL_ON);//cac chan ra dieu khien boi PORT luc reset,deu co the cao
unsigned char i=0;
unsigned char j=0;
unsigned int const sin_table[40]={0,98,195,291,386,478,567,653,734,811,883,950,1010,1065,1113,1154,1188,1214,1234,1245,1249,
								  1245,1234,1214,1188,1154,1113,1065,1010,950,883,811,734,653,567,478,386,291,195,98};
void Init_PWM(void);
int main(void)
{ PLLFBD = 41;
  _PLLPOST = 0;
  _PLLPRE = 0;
  while (_COSC !=0b011);//dung bo PLL tao Fosc=80MHz,cho cho dao dong on dinh
  while (_LOCK !=1);//cho PLL bat dau khoa pha
  TRISB=0X0000;
  LATB=0X0000;
  Init_PWM();
while(1);
}
void Init_PWM(void)
{
P1TCONbits.PTMOD = 0b10;//continuous up/down cout mode
P1TCONbits.PTCKPS = 0b01;//prescale 4Tcy
P1TCONbits.PTOPS = 0b0000;//postscale 1:1
P1TPER = Ts;//Fpwn = 4kHz
PWM1CON1bits.PMOD1=0;//complementary mode
PWM1CON1bits.PMOD2=0;
PWM1CON1bits.PEN2H=1;//enable for PWM output
PWM1CON1bits.PEN1H=1;
PWM1CON1bits.PEN2L=1;
PWM1CON1bits.PEN1L=1;
PWM1CON2bits.IUE=0;
PWM2CON2bits.UDIS=0;//update from duty cycle and period buffer registers are enabled
P1DTCON1bits.DTAPS=0b00;//Dead time prescale 1:1
P1DTCON1bits.DTA = 40;//deadtime = 1um
//P1DTCON1bits.DTBPS=0b00;
//P1DTCON1bits.DTB = 0;
P1DTCON2bits.DTS2A=0;//Unit A selected for PWM active transitions
P1DTCON2bits.DTS1A=0;
P1DTCON2bits.DTS1I=0;//Unit B selected for PWM inactive transitions
P1DTCON2bits.DTS2I=0;
P1OVDCONbits.POVD2H=1;//PWM I/O pin controlled by PWM generator
P1OVDCONbits.POVD1H=1;
P1OVDCONbits.POVD2L=1;
P1OVDCONbits.POVD1L=1;
P1DC1=0;
P1DC2=0;
_PWM1IF=0;
_PWM1IE=1;
P1TCONbits.PTEN=1;
}
void __attribute__((interrupt,auto_psv)) _MPWM1Interrupt(void)
{
_PWM1IF=0;
if (i==0) 
{ P1DC1 = (unsigned int)(Ts - sin_table[j])*hs;
  P1DC2 = (unsigned int)(Ts + sin_table[j])*hs;
  j++;
  if (j==40) {j=0;i=1;};
}
else
{ P1DC1 = (unsigned int)(Ts + sin_table[j])*hs;
  P1DC2 = (unsigned int)(Ts - sin_table[j])*hs;
  j++;
  if (j==40) {j=0;i=0;};
}
}
em thắc mắc cái công thức tính PDC ở đây.hệ số hs=0,5 tính ra trc như thế nào ạ
Công thức mà tôi đã nêu dùng để liên hệ giá trị duty cycle với giá trị của hai thanh ghi PxDCy và PxTPER. Còn vấn đề bạn đang thắc mắc ở đây lại là thuật toán điều khiển (bạn chọn quy luật điều chỉnh duty cycle để đạt ý đồ điều khiển).

Do đó, bạn nên hỏi tác giả của ví dụ đó về hệ số hs.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 30-08-2009 lúc 06:27 PM. Lý do: viết thiếu từ "cycle"
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2009, 05:58 PM   #39
JohnnyNguyen
Đệ tử 3 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 46
:
đây là chương trình điều chế sóng sin.em xin nói qua về chương trình như sau:
sin_table[40] là bảng tạo sóng sin ở nửa chu kỳ.em đã hiểu hệ số 0,5 ở đây là để xét trong nửa chu kỳ.nửa chu kỳ đầu duty cycle dc cập nhật tại PDC1,nửa chu kỳ sau tại PDC2.
nếu bảng sóng sin ở trên đc viết cho cả chu kỳ, thì công thức là

P1DC1 = (unsigned int)(Ts + sin_table[j])
(vơi sin_table[j] là điện áp lấy mẫu,Ts là giá trị PTPER)
em thắc mắc ở đây là làm thế nào để có công thức như vậy ạ.

thay đổi nội dung bởi: JohnnyNguyen, 30-08-2009 lúc 06:18 PM.
JohnnyNguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 10:00 AM   #40
spin
Đệ tử 1 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 22
:
Trích:
Nguyên văn bởi hopeman View Post
em đang làm mạch với con 33FJ256GP710 nhưng khi cắm mạch nạp vào nó lại nhận là 33FJ256MC710 ? nạp thì nó vẫn nạp nhưng không biết là có đúng ko? em muốn hỏi bang chủ là như thế có gì lỗi ko? và dòng MC và GP khác nhau thế nào ko?
hopeman ơi cho hỏi một tí, mình cũng đang dùng con này nhưng chưa biết cách nạp cho nó ra sao, cụ tỉ chân cắm thế nào, bạn có thể cho xin mạch nguyên lý để nạp 1 chương trình đơn giản không.. cảm ơn ..
spin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-09-2009, 04:13 PM   #41
robotden
Đệ tử 5 túi
 
robotden's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 102
:
nạp chuẩn ICSP đó bạn. MCLR(pin13)/VDD/VSS/PGD1(pin27)/PGC1(pin26)
chúc vui!
__________________
Thật bó tay!
robotden vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-09-2009, 11:55 AM   #42
thanhgand
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 5
:
Có ai cấu hình đồng thời hai bộ QEI trong 33fj64mc802 chưa.các bác cho em hỏi em cấu hình sai ở chỗ nào mà 2 con encoder không thể hoạt động đông thời .cụ thể:
mạch cưng của em như sau: A1: rb5 ;b1:rb6; a2:rb8; b2:rb9
Assign QEA1 To Pin RP5 -- noi chan A cua encoder 1 voi chan rp5
//***************************
RPINR14bits.QEA1R = 5;

//***************************
// Assign QEB1 To Pin RP6 -- noi chan B cua encoder 1 voi chan rp6
//***************************
RPINR14bits.QEB1R = 6;

//***************************
// Assign QEA2 To Pin RP8 -- noi chan A cua encoder 2 voi chan rp8

//***************************
RPINR16bits.QEA2R = 8;

//***************************
// Assign QEB2 To Pin RP9 -- noi chan B cua encoder 2 voi chan rp9
//***************************
RPINR16bits.QEB2R = 9;
// cau hinh ban dau cho cac encoder:

/* QEI1 */
/*---------------------------------------------------------------------------*/
/*
OpenQEI(QEI_MODE_x4_MATCH & QEI_INPUTS_NOSWAP & QEI_IDLE_STOP
& QEI_NORMAL_IO & QEI_INDEX_RESET_DISABLE,
QEI_QE_CLK_DIVIDE_1_128 & QEI_QE_OUT_ENABLE & POS_CNT_ERR_INT_DISABLE);
*/

QEI1CONbits.QEIM = 7; // QEI_MODE_x4_MATCH
QEI1CONbits.SWPAB = 0; // QEI_INPUTS_SWAP
QEI1CONbits.QEISIDL = 1; // QEI_IDLE_STOP
QEI1CONbits.POSRES = 0; // QEI_INDEX_RESET_DISABLE
QEI1CONbits.PCDOUT = 0; // QEI_NORMAL_IO
QEI1CONbits.POSRES = 0; // POS_CNT_ERR_INT_DISABLE

DFLT1CONbits.QECK = 6; // QEI_QE_CLK_DIVIDE_1_128
DFLT1CONbits.QEOUT = 1; // QEI_QE_OUT_ENABLE

MAX1CNT = 7999;
POS1CNT = 0;

/*................................................. ......................QEI */

/*---------------------------------------------------------------------------*/
/* QEI2 */
/*---------------------------------------------------------------------------*/
/*
OpenQEI(QEI_MODE_x4_MATCH & QEI_INPUTS_NOSWAP & QEI_IDLE_STOP
& QEI_NORMAL_IO & QEI_INDEX_RESET_DISABLE,
QEI_QE_CLK_DIVIDE_1_128 & QEI_QE_OUT_ENABLE & POS_CNT_ERR_INT_DISABLE);
*/

QEI2CONbits.QEIM = 7; // QEI_MODE_x4_MATCH
QEI2CONbits.SWPAB = 0; // QEI_INPUTS_SWAP
QEI2CONbits.QEISIDL = 1; // QEI_IDLE_STOP
QEI2CONbits.POSRES = 0; // QEI_INDEX_RESET_DISABLE
QEI2CONbits.PCDOUT = 0; // QEI_NORMAL_IO
QEI2CONbits.POSRES = 0; // POS_CNT_ERR_INT_DISABLE

DFLT2CONbits.QECK = 6; // QEI_QE_CLK_DIVIDE_1_128
DFLT2CONbits.QEOUT = 1; // QEI_QE_OUT_ENABLE

MAX2CNT = 7999;
POS2CNT = 0;

em cấu hình như trên nhưng chi có encoder 1 hoạt động.(các encoder ,và chân chíp em đã test cẩn thận).khi em đảo encoder1 và 2 cho nhau thì con 2 lại hoạt động.
em nghĩ cấu hình hai chân rb8,rb9 của em có vẫn đề,nhưng em đọc data sheet chưa gỡ gì được.
thanhgand vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-10-2009, 05:15 PM   #43
harakiri
Đệ tử 1 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 12
:
Em chưa hiểu lắm về DMA RAM, mà tìm tài liêu thì mơ hồ quá. Nếu ai có khái niêm này thì có thể chia sẻ giùm em. Thanks
harakiri vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-10-2009, 12:22 PM   #44
ngotuyen
Nhập môn đệ tử
 
Tham gia ngày: May 2009
Bài gửi: 4
:
Em đang dùng dsPIC33FJ256GP510 để phát âm thanh, dùng speex_8K.h và libspeex_8K.a
và phải có file âm thanh trong bộ nhớ chương trình.
Em chưa biết file âm thanh đó như thế nào, dạng file và đưa nó vào bộ nhớ chương trình như thế nào.
Và cách sử dụng các file speex_8K.h và libspeex_8K.a như thế nào để phát âm thanh được theo PWM (phải khai báo như thế nào và sử dụng các hàm như thế nào).
Mong các cao thủ giúp đỡ.
ngotuyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-11-2009, 02:38 AM   #45
harakiri
Đệ tử 1 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 12
:
Trong datasheet của dsPIC33FJxxGP trong phần chân Digital viết
-Output pins can drive from 3.0V to 3.6V
-All digital input pins are 5V tolerant
Em hiểu là nếu là input thì khi dùng các chân này là chân digital ta có thể cung cấp tới mức volt là 5V để có mức logic 1. Liệu có đúng không ạ?
harakiri vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Tags
configuration, dspic30f, dspic33f


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam