PDA

View Full Version : dsPIC từ cơ bản đến nâng cao


minhquancdt
21-05-2007, 10:51 PM
Chào các bác,

Em tham gia vào diễn đàn cũng đã lâu, nhờ sự nhiệt tình của các mod cũng như các thành viên mà diễn đàn của ta rất là sôi nổi.

Em đã nắm bắt được cơ bản các vấn đề với pic 8 bit, em muốn nâng cao với dspic. Em chọn chú 30F2010 rất phổ biến và được khuyên dùng khi bắt đầu tìm hiểu về dspic.

Bác nào có nhu cầu thì cùng tìm hiểu với em. Em cỏn rất ngu nên chắc còn nhờ các bác giúp đỡ nhiều, đặc biệt là đại ca Nam.

Từ tốn, ta bắt đầu các bác nhỉ.

Datasheet dsPIC30F2010: http://ww1.microchip.com/downloads/en/DeviceDoc/70118G.pdf

minhquancdt
21-05-2007, 11:11 PM
Tính năng

- Bộ nhớ chương trình/bộ nhớ lệnh: 12K/4K

- Dung lượng SRAM: 512 Bytes

- Dung lượng EEPROM: 1024 Bytes

- Ba bộ timer 16-bit

- Bốn bộ Input Capture

- Hai bộ Output Compare/Standard PWM

- Sáu kênh chuyên dụng điều khiển motor PWM

- Sáu kênh chuyển đổi A/D 10-bit

- Hỗ trợ Quandrature Encoder Interface

- Một giao tiếp UART

- Một giao tiếp SPI

- Một giao tiếp I2C


I/O

dsPIC2010 có 5 port I/O, các chân được tích hợp nhiều tính năng khác nhau, tùy vào mục đích sử dụng, các tính năng phù hợp được lựa chọn. Tất cả các I/O port đều có ba thanh ghi tương tác trực tiếp:

- TRISx : thanh ghi hướng dữ liệu, ghi giá trị 1 là input, 0 là output. Sau khi reset, tất cả các port là input.
- PORTx : thanh ghi dữ liệu port, có thể xuất giá trị sai khi chuyển từ input sang output.
- LATx : thanh ghi chốt I/O, kết hợp với một chân I/O để loại trừ những vấn đề có thể xuất hiện với các lệnh read – modify – write. Việc đọc thanh ghi LAT trả về giá trị đã được giữ trong port output latch. Thay vì giá trị trên I/O pin. Hoạt động read – modify – write trên thanh ghi LAT, kết hợp với một I/O port ngăn ngừa việc có thể viết giá trị chân input sang port latch. Việc viết lên thanh ghi LAT có tác dụng giống như việc viết lên thanh ghi PORT.

Sự khác nhau giữa thanh ghi PORT và LAT có thể được tổng kết như sau:

• Việc viết lên thanh ghi PORT sẽ viết giá trị dữ liệu lên port latch

• Việc viết lên thanh ghi LAT sẽ viết giá trị dữ liệu lên port latch

• Việc đọc từ thanh ghi PORT sẽ đọc giá trị dữ liệu trên I/O pin

• Việc đọc từ thanh ghi LAT sẽ đọc giá trị dữ liệu đã được dữ trên port latch

namqn
22-05-2007, 01:54 AM
Nói rõ hơn một chút:

- Bộ nhớ chương trình (program memory) của dsPIC30F2010 có kích thước 12 kbyte, tức là 4k lệnh (4096 ô nhớ 24-bit). Trong thế giới số, 1k = 1024.

Với bộ nhớ lệnh nhỏ như vậy, chỉ cần dùng các lệnh rcall và bra để tiết kiệm bộ nhớ chương trình, thay vì dùng các lệnh call và goto.

Thân,

phamthaihoa
22-05-2007, 07:13 PM
Bổ sung tí tẹo
- Có 3 timer 16bit, có thể ghép 2 timer để được 1 timer 32bit.
- 6 Kênh PWM có thể làm rất nhiều việc khác, nhưng chính vẫn là dk động cơ.
- Chân cẳng iem 2010 này hơi chuối một chút, 2 chân nạp (PGD, PGC) chân SPI, I2C lại trùng vào nhau, nên hơi khó dùng, nếu bạn treo trở dùng giao tiếp I2C thì việc nạp chương trình sẽ bị ảnh hưởng (kinh nghiệm bản thân cứ tưởng mạch nạp hỏng :), cắt 2 con trở treo lại nạp ầm ầm).
- Chân UART lại trùng chân với nhiều giao tiếp SPI, I2C, nên chủ yếu con này chuyển sang dùng U1ATX, U1ARX, nên khi thiết kế cẩn thận chút.

minhquancdt
23-05-2007, 09:41 PM
Bổ sung tí tẹo
- Có 3 timer 16bit, có thể ghép 2 timer để được 1 timer 32bit.
- 6 Kênh PWM có thể làm rất nhiều việc khác, nhưng chính vẫn là dk động cơ.
- Chân cẳng iem 2010 này hơi chuối một chút, 2 chân nạp (PGD, PGC) chân SPI, I2C lại trùng vào nhau, nên hơi khó dùng, nếu bạn treo trở dùng giao tiếp I2C thì việc nạp chương trình sẽ bị ảnh hưởng (kinh nghiệm bản thân cứ tưởng mạch nạp hỏng :), cắt 2 con trở treo lại nạp ầm ầm).
- Chân UART lại trùng chân với nhiều giao tiếp SPI, I2C, nên chủ yếu con này chuyển sang dùng U1ATX, U1ARX, nên khi thiết kế cẩn thận chút.

Con của bác có bị sao ko chứ, chip của em vẫn mắc trở kéo lên giao tiếp I2C nhưng nạp vẫn ầm ầm, em thấy ko có vấn đề gì cả mà.

minhquancdt
23-05-2007, 09:48 PM
Em không biết khi dùng Timer của dsPIC với C30, khi Timer tràn thì làm sao nó nhận biết hàm xử lí tràn vì em tham khảo hàm xử lí của anh Nam viết và cũng hàm xử lí đó, nhưng nó khác tên nhau. Em muốn biết có dâu hiệu nào để biết?

Câu hỏi của em hơi ngớ ngẩn.

namqn
23-05-2007, 11:30 PM
Em không biết khi dùng Timer của dsPIC với C30, khi Timer tràn thì làm sao nó nhận biết hàm xử lí tràn vì em tham khảo hàm xử lí của anh Nam viết và cũng hàm xử lí đó, nhưng nó khác tên nhau. Em muốn biết có dâu hiệu nào để biết?

Câu hỏi của em hơi ngớ ngẩn.
Tôi không rõ ý của bạn khi nói đến hàm xử lý do tôi viết và một hàm xử lý có tên khác.

Về dấu hiệu nhận biết, bạn xem trong tập tin kịch bản liên kết tương ứng (ví dụ p30f2010.gld cho dsPIC30F2010), bạn tìm đến phần 'Primary Interrupt Vector Table', là nơi các vector ngắt được định nghĩa, sẽ thấy các tên mặc định cho các trình phục vụ ngắt tương ứng. Lấy ví dụ, ngắt Timer 1 sẽ được mô tả như sau:
LONG(DEFINED(__T1Interrupt) ? ABSOLUTE(__T1Interrupt) :
ABSOLUTE(__DefaultInterrupt));
Nghĩa là nếu không có function tên là __T1Interrupt được định nghĩa trong chương trình thì function tên là __DefaultInterrupt sẽ được dùng để xử lý ngắt Timer 1, ngược lại thì function __T1Interrupt sẽ được dùng.

Câu hỏi của bạn không hề ngớ ngẩn.

Thân,

minhquancdt
24-05-2007, 04:50 PM
Nghĩa là mình phải đặt đúng tên hàm là "__T1Interrupt" hay chỉ cần có cụm này trong tên hàm thì C30 sẽ nhận ra và nhảy đến đó hả anh. Chắc là nó không thông minh đến vậy. Em vẫn chưa thông...:confused:

minhquancdt
24-05-2007, 05:00 PM
Những tutorial của anh Nam chỉ cần áp vào là chạy ngay, nhưng em muốn tìm hiểu kĩ cách thức hoạt động của dspic, từng thanh ghi nên phải mày mò từ đầu như vậy và em muốn học trên C30 luôn chứ không dùng ASM.

Do vậy nên có nhiều câu hỏi phát sinh. Cảm ơn anh về các Tutorial này.

namqn
24-05-2007, 08:06 PM
Nghĩa là mình phải đặt đúng tên hàm là "__T1Interrupt" hay chỉ cần có cụm này trong tên hàm thì C30 sẽ nhận ra và nhảy đến đó hả anh. Chắc là nó không thông minh đến vậy. Em vẫn chưa thông...:confused:
Cần đặt đúng tên hàm như vậy, khi đó trình liên kết sẽ đặt địa chỉ bắt đầu của hàm vào bảng vector ngắt, và như vậy khi có ngắt tương ứng xảy ra thì dsPIC sẽ nhảy đến đoạn code của hàm để xử lý ngắt. Tất nhiên hàm xử lý ngắt phải được khai báo theo kiểu dành cho xử lý ngắt, như bạn có thể thấy trong các tutorial của tôi.

Thân,

minhquancdt
30-05-2007, 01:32 AM
Trích VD 4.2:
#include "p30f4012.h"

_FOSC(CSW_FSCM_OFF & FRC_PLL4); //Clock = 32 MHz
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);

//Cac prototype cho cac chuong trinh con
void Init_UART1_Module(void);

//Cac bien toan cuc
unsigned short temp;

//------------------------------------------------------------------------------
//Chuong trinh chinh
int main(void) {
Init_UART1_Module(); //Khoi tao module UART1
while (1) {
if (U1STAbits.URXDA) { //Cho den khi nhan duoc mot ky tu
temp = U1RXREG; //Doc ky tu da nhan duoc vao temp
U1TXREG = temp + 1; //Gui tra ky tu da duoc sua doi (cong 1 vao)
};
};
}

//Chuong trinh con khoi tao module UART1
void Init_UART1_Module(void) {
U1MODE = 0x8000; //Main I/O, 8-bit, no parity, 1 stop bit
U1STA = 0x0400; //bit10=UTXEN
U1BRG = (((8000000/38400)/16)-1); //38400 bps @ Fcy = 8 MHz
}

Em chưa rõ là biến temp ở đây có phải sẽ nhận giá trị kiểu char? Nếu em muốn truyền từ PC xuống chip chuỗi "123456" thì mỗi lần nhận 1 kí tự, biến temp sẽ thay đổi.

Em muốn nhận luôn 123456 làm 1 hệ số k = 123456. Có hàm nào sẵn có thực hiện việc ghép nối này, hay mình phải viết riêng vậy anh Nam?

namqn
30-05-2007, 02:10 AM
...
Em chưa rõ là biến temp ở đây có phải sẽ nhận giá trị kiểu char? Nếu em muốn truyền từ PC xuống chip chuỗi "123456" thì mỗi lần nhận 1 kí tự, biến temp sẽ thay đổi.

Em muốn nhận luôn 123456 làm 1 hệ số k = 123456. Có hàm nào sẵn có thực hiện việc ghép nối này, hay mình phải viết riêng vậy anh Nam?
Biến temp trong ví dụ trên có độ dài 16-bit, thuộc kiểu không dấu (nghĩa là chỉ mang các giá trị không âm).

Chuẩn RS-232 chỉ truyền mỗi lần một ký tự, và module UART của dsPIC chỉ hỗ trợ truyền tối đa 9-bit cho mỗi ký tự. Do vậy, thông thường chúng ta phải truyền một chuỗi ký tự đến dsPIC, và thực hiện chuyển đổi thành giá trị thực. E rằng bạn sẽ phải tự viết hàm chuyển đổi.

Thân,

minhquancdt
16-06-2007, 11:33 AM
Em đang bị vướn phần ADC 12bit, ADC 10bit chạy trên 30F2010 rất tốt, nhưng khi chuyển sang 30F3012 lấy ADC 12bit, em đưa thẳng chân V+ 5V vào AN2, nhưng giá trị gửi lên Hyper terminal chỉ dao động quanh 950h, tức cỡ 2.91V. Em đã xem kĩ nhưng ko phát hiện sai chỗ nào cả. Đau đầu quá :( . Anh Nam giúp em với!
#include "p30f3012.h"
/* Macros for Configuration Fuse Registers (copied from device header file):*/
_FOSC(CSW_FSCM_OFF & XT_PLL4); /* Set up for Crystal multiplied by 4x PLL */
_FWDT(WDT_OFF); /* Turn off the Watch-Dog Timer. */
_FBORPOR(MCLR_EN & PWRT_OFF); /* Enable MCLR reset pin and turn off the power-up timers. */
_FGS(CODE_PROT_OFF); /* Disable Code Protection */

/*-----------------------------------------------------------------------------------------------
Cac hang so cua chuong trinh
-----------------------------------------------------------------------------------------------*/
#define Fcy 8000000 //Tan so thuc thi lenh
#define baud 38400 //Toc do baud cua RS232

/*-----------------------------------------------------------------------------------------------
Cac prototype cho cac chuong trinh con
-----------------------------------------------------------------------------------------------*/
void Init_PORTS(void);
void Init_ADC12(void);
void Init_TMR1(void);
void Init_UART1(void);
/*-----------------------------------------------------------------------------------------------
Bang hang so trong ROM
-----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------
Cac bien toan cuc
-----------------------------------------------------------------------------------------------*/
unsigned int ADCValue, flag, idx;
unsigned char HexTable[] = "0123456789ABCDEF";

/*-----------------------------------------------------------------------------------------------
Chuong trinh chinh
-----------------------------------------------------------------------------------------------*/
int main(void) {
Init_PORTS(); //Khoi tao cac cong I/O
Init_TMR1(); //Khoi tao Timer 1
Init_ADC12(); //Khoi tao module ADC
Init_UART1(); //Khoi tao module UART1
flag = 0;
while (1) {
if (flag) { //Neu co ket qua moi thi xuat ket qua
idx = (ADCValue >> 8); //Nibble cao nhat ( 4 bit)
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
idx = ((ADCValue >> 4) & 0x000F); //Nibble thu hai
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
idx = (ADCValue & 0x000F); //Nibble thap nhat
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
U1TXREG = 0x0A; //Cap ky tu CR, LF (xuong dong, ve dau hang)
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
U1TXREG = 0x0D;
flag = 0; //Xoa co bao hieu co ket qua moi
};
};
}

//Chuong trinh con khoi tao cac cong I/O, de xuat cac tin hieu PWM, va doc tin
void Init_PORTS(void) {
TRISB = 0x0004; //Chan RB2 la ngo vao analog AN0, cac chan khac
//la ngo ra
PORTB = 0x0000;
TRISD = 0x0000;
PORTD = 0x0001;
}

//Chuong trinh con khoi tao Timer 1, tran sau moi 1 giay o muc xung 8 Mips
void Init_TMR1(void) {
TMR1 = 0; //Xoa so dem trong TMR1
PR1 = 0x186A; //Nguong tran la 0.2 giay ung voi clock = 32 MHz
_T1IF = 0; //Xoa co ngat cua Timer 1
T1CON = 0x8030; //Dung fcy lam clock, prescale = 1:256
_T1IE = 1; //Cho phep ngat khi Timer 1 tran
}

//Chuong trinh con khoi tao module chuyen doi A/D, doc ngo vao AN0
void Init_ADC12(void) {
ADPCFG = 0xFFFB; //Cac chan khac la digital, chan AN2/RB2 la analog
ADCON1 = 0x00E0; //Module ADC cham dut lay mau va kich hoat
//viec chuyen doi A/D
ADCON2 = 0;
ADCHS = 2; //Kenh 0 doc tin hieu giua AN6 va AVss
ADCSSL = 0; //Khong quet cac ngo vao
ADCON3 = 0x1F03; //Dung 31 TAD cho lay mau, dung clock he thong,
//TAD = 2xTcy = 250 ns
ADCON2 = 0;
_ADIF = 0; //Xoa co ngat ADC
_ADIE = 1; //Cho phep ngat ADC
_ASAM = 1; //Tu dong lay mau
}

//Chuong trinh con khoi tao module UART1
void Init_UART1(void) {
U1MODE = 0x8000; //Main I/O, 8-bit, no parity, 1 stop bit
U1STA = 0x0400; //bit10=UTXEN
U1BRG = (((Fcy/baud)/16)-1); //38400 bps @ Fcy = 8 MHz
}

//Chuong trinh xu ly ngat Timer 1
void _ISR _T1Interrupt(void) {
_ADON = 1; //Bat module ADC
_T1IF = 0; //Xoa co ngat
}

//Trinh phuc vu ngat cho ADC
void _ISR _ADCInterrupt(void)
{
ADCValue = ADCBUF0; //Lay ket qua ADC vao bien ADCValue
_ADON = 0; //Tat module ADC
flag = 1; //Bat co bao hieu co ket qua moi
_ADIF = 0;
}

namqn
16-06-2007, 09:48 PM
ADC 12-bit trong dsPIC30F cần có Tad tối thiểu là 334 ns cho tốc độ 200 kSPS, bạn phải chỉnh lại ADCON3 để đảm bảo điều này (code hiện thời có Tad = 250 ns). Ngoài ra, nên xem phần tương ứng trong datasheet của chip về các tụ bypass và các chân ref cho module ADC 12-bit (nếu tốc độ chuyển đổi từ 100 kSPS trở xuống thì Tad tối thiểu là 668 ns).

Thân,

minhquancdt
16-06-2007, 11:44 PM
Cảm ơn anh, em làm được rồi. Đúng là do Tad quá thấp, tăng lên hợp lý, chuyển đổi ào ào ngay.

nguyen.geo
19-06-2007, 06:31 PM
Cảm ơn anh, em làm được rồi. Đúng là do Tad quá thấp, tăng lên hợp lý, chuyển đổi ào ào ngay.

Bác minhquancdt ơi giúp em tí.
em thử đoạn chương trình mà bác viết trong ví dụ 4.2 nhưng không hiểu tại sao nó lại kô chạy mới bực mình chứ bác ạ. Em hiện tại đang dùng bản MPLAB 7.50 khi em dịch chương trình thì nó báo là:
"Tool doesn't support selected device". Bực mình quá em không hiểu thế nào. Hay là em thiết lập ở phần C30 không đúng hả bác hay bản này nó không cho dùng thằng 30F4012 hả bác.
Bác giúp em cái nhé. Thank you bác trước nhé.

falleaf
20-06-2007, 02:36 PM
Bạn bấm gì để dịch? coi chừng bạn bấm vào phần debug đó. Chọn lại phần Tool là MPLAB SIM.

Chúc vui.

nguyen.geo
20-06-2007, 04:38 PM
Bạn bấm gì để dịch? coi chừng bạn bấm vào phần debug đó. Chọn lại phần Tool là MPLAB SIM.

Chúc vui.

Bang chủ ơi ! Bang chủ có thế giúp em các bước thiết lập để em có thể bắt đầu với DSPIC được không ạ. Như là cách thiết lập ở phần Proteject-> Set languagee Tools được không ạ. và 1 vài dòng Code Out ra 1 Port nào đó được không ạ. Vì em thấy khi là việc với một ngôn ngữ lập trình thì khó nhất là phần đầu tiên chưa biết vào ra thế nào và nó thực sự nó làm em tốn thời gian em lắm. Bang chủ Giúp em cái em đang dung bản MPLAB 7.50.

namqn
20-06-2007, 06:01 PM
Bang chủ ơi ! Bang chủ có thế giúp em các bước thiết lập để em có thể bắt đầu với DSPIC được không ạ. Như là cách thiết lập ở phần Proteject-> Set languagee Tools được không ạ. và 1 vài dòng Code Out ra 1 Port nào đó được không ạ. Vì em thấy khi là việc với một ngôn ngữ lập trình thì khó nhất là phần đầu tiên chưa biết vào ra thế nào và nó thực sự nó làm em tốn thời gian em lắm. Bang chủ Giúp em cái em đang dung bản MPLAB 7.50.
Bạn đọc tutorial 1 ngay trong box này, đó là phần đầu tiên mà tôi đề cập khi bắt đầu viết các tutorial cho dsPIC.

Thân,

nguyen.geo
20-06-2007, 06:40 PM
Bạn đọc tutorial 1 ngay trong box này, đó là phần đầu tiên mà tôi đề cập khi bắt đầu viết các tutorial cho dsPIC.

Thân,

Em biết ý của anh Nam mà. Điều đầu tiền là đọc bài hướng dẫn của anh đã viết ở đâu đó và nó thực sự là em đã tìm bài hướng đẫn của anh cách đây 2 tuần nhưng không thấy. tìm chỉ thấy bài hướng dẫn từ 2 trỡ lên thôi. Anh Nam hay ai biết đường Link đến bài hướng dẫn đầu tiên cho những người mới bước chân vào DSPIC ở chỗ nào thì giúp em với. Hy vọng là sẽ có nhiều người trợ giúp như Bang chủ cua PICVIETNAM.

namqn
20-06-2007, 09:33 PM
Em biết ý của anh Nam mà. Điều đầu tiền là đọc bài hướng dẫn của anh đã viết ở đâu đó và nó thực sự là em đã tìm bài hướng đẫn của anh cách đây 2 tuần nhưng không thấy. tìm chỉ thấy bài hướng dẫn từ 2 trỡ lên thôi. Anh Nam hay ai biết đường Link đến bài hướng dẫn đầu tiên cho những người mới bước chân vào DSPIC ở chỗ nào thì giúp em với. Hy vọng là sẽ có nhiều người trợ giúp như Bang chủ cua PICVIETNAM.
Nếu bạn tìm không thấy thì hơi lạ, vì nó được dán lên cao, và có cùng kiểu tiêu đề với các tutorial khác, tên của nó là 'dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30)', link của nó dưới đây:

http://www.picvietnam.com/forum//showthread.php?t=333

Thân,

minhquancdt
20-06-2007, 11:52 PM
1. Em muốn sử dụng đồng thời hai hoặc nhiều module trong cùng một nhóm chân, ví dụ UART và I2C hay SPI chẳng hạn. Phải chăng thiết cấu hình từng module, xử lý dữ liệu rồi xóa cấu hình đó đi, thiết lập cấu hình module khác, xử lý dữ liệu,... Có cách nào tiện lợi hơn không anh?

2. Trong chuẩn I2C, em không tìm thấy thanh ghi nào thiết lập dspic ở chế độ master hay slave! :confused:

namqn
21-06-2007, 12:46 AM
1. Em muốn sử dụng đồng thời hai hoặc nhiều module trong cùng một nhóm chân, ví dụ UART và I2C hay SPI chẳng hạn. Phải chăng thiết cấu hình từng module, xử lý dữ liệu rồi xóa cấu hình đó đi, thiết lập cấu hình module khác, xử lý dữ liệu,... Có cách nào tiện lợi hơn không anh?

2. Trong chuẩn I2C, em không tìm thấy thanh ghi nào thiết lập dspic ở chế độ master hay slave! :confused:
1. Giả sử phần cứng được thiết kế thích hợp, chúng ta sẽ cho phép module nào đó hoạt động khi cần thiết, và cấm nó khi không cần thiết để module khác có thể sử dụng các chân dùng chung. Nguyên tắc là vậy, theo tôi biết thì không còn cách nào tiện lợi hơn. Về UART và I2C hay SPI, Microchip đã dự kiến khả năng này, do đó module UART có thể dùng các chân thay thế, nhường hẳn cặp chân chính của nó cho module I2C hay SPI.

2. dsPIC khi kích hoạt module I2C thì nó sẽ làm việc luôn ở 2 chế độ master và slave, chính xác hơn là cả 2 mạch logic cho master và slave đều cùng hoạt động. Bạn đọc tài liệu 'dsPIC30F Family Reference Manual', ký hiệu tài liệu là DS70046 (phiên bản hiện tại là DS70046E), để có thêm thông tin về module I2C cũng như những ngoại vi khác. Tôi tạm dịch một phần trong mục 21.4-Enabling I2C operation của tài liệu đó:
The module is enabled by setting the I2CEN (I2CCON<15>) bit.
The I2C module fully implements all master and slave functions. When the module is enabled, the master and slave functions are active simultaneously and will respond according to the software or the bus events.
When initially enabled, the module will release SDA and SCL pins, putting the bus into the Idle state. The master functions will remain in the Idle state unless software sets a control bit to initiate a master event. The slave functions will begin to monitor the bus. If the slave logic detects a Start event and a valid address on the bus, the slave logic will begin a slave transaction.
Module được cho phép (hoạt động) bằng cách bật bit I2CEN (bit I2CCON<15>).
Module I2C hiện thực đầy đủ tất cả các chức năng master và slave. Khi module được cho phép, các chức năng master và slave được kích hoạt đồng thời và sẽ đáp ứng tương ứng với các sự kiện phần mềm hay trên bus.
Ban đầu khi được cho phép, module sẽ thả các chân SDA và SCL, đặt bus vào trạng thái Idle. Các chức năng master sẽ ở trạng thái Idle trừ khi phần mềm đặt một bit điều khiển để kích hoạt một sự kiện master. Các chức năng slave sẽ bắt đầu giám sát bus. Nếu logic slave phát hiện một sự kiện Start và một địa chỉ hợp lệ trên bus, logic slave sẽ bắt đầu một giao tác slave.

Hy vọng đã giải đáp thắc mắc của bạn.

Thân,

bigtitan
30-06-2007, 12:28 AM
Thấy chỗ này có nhiều người coi nhất,cho em hỏi tí,thanh ghi PORT và LAT trong dsPIC hình như hơi giống nhau,thế có đặc điểm gì xuất hiện thêm thanh ghi LAT nữa,...
Đề nghị này hơi quá tí:có ai có tutor nào chi tiết giống như bác F ko ạ,mới tìm hiểu hơi không hiểu một vài thứ,như thanh ghi.cú pháp lệnh,cách đặt tên biến(dấu"__")mà mấy anh đi lẹ quá,nên e hơi đuối...

namqn
30-06-2007, 02:27 AM
Thấy chỗ này có nhiều người coi nhất,cho em hỏi tí,thanh ghi PORT và LAT trong dsPIC hình như hơi giống nhau,thế có đặc điểm gì xuất hiện thêm thanh ghi LAT nữa,...
Đề nghị này hơi quá tí:có ai có tutor nào chi tiết giống như bác F ko ạ,mới tìm hiểu hơi không hiểu một vài thứ,như thanh ghi.cú pháp lệnh,cách đặt tên biến(dấu"__")mà mấy anh đi lẹ quá,nên e hơi đuối...
Tôi đã nói ở post #68 trong luồng này về hoạt động read-modify-write của các lệnh thao tác thanh ghi ngoại vi:

http://www.picvietnam.com/forum/showthread.php?t=5

Để giải quyết vấn đề đó, từ PIC18 và sau này là các dsPIC30F, PIC24, dsPIC33F, các cổng ngoại vi luôn có 2 thanh ghi liên quan là LATx và PORTx. Quy tắc đơn giản để tránh rắc rối với các lệnh có hoạt động read-modify-write:

- Khi muốn xuất ra port ngoại vi thì ghi vào LATx
- Khi muốn đọc từ port ngoại vi thì đọc từ PORTx

Thân,

scentoflove
25-07-2007, 12:11 AM
Trong TUT về UART của anh Nam có khai báo chuổi "Xin chào !" trong vùng psv. Anh Nam cho e hoi vùng psv nay là gi vậy, em đọc datasheet của ds33F Family thì có đề cập MCU va DSP instruction, e đọc nhưng ko hiểu lắm anh có thể giải thích về chổ này ko?

caonam
25-07-2007, 12:54 AM
Trong TUT về UART của anh Nam có khai báo chuổi "Xin chào !" trong vùng psv. Anh Nam cho e hoi vùng psv nay là gi vậy, em đọc datasheet của ds33F Family thì có đề cập MCU va DSP instruction, e đọc nhưng ko hiểu lắm anh có thể giải thích về chổ này ko?

Phải chăng là cái này
# On some 33F pre-release devices, DMA memory overlaps the Program Space Visibility (PSV) window. In order to allocate variables in DMA space, the constants-in-data memory model must be selected.


Xem thêm ở đây
http://ww1.microchip.com/downloads/en/DeviceDoc/C30_v203_README.html

namqn
25-07-2007, 02:51 AM
Trong TUT về UART của anh Nam có khai báo chuổi "Xin chào !" trong vùng psv. Anh Nam cho e hoi vùng psv nay là gi vậy, em đọc datasheet của ds33F Family thì có đề cập MCU va DSP instruction, e đọc nhưng ko hiểu lắm anh có thể giải thích về chổ này ko?
Lấy một datasheet của dsPIC nào đó (dsPIC30F4012 chẳng hạn), ở mục Core Overview có giải thích về PSV (Program Space Visibility). Tôi tóm lược ý như sau: Một trong hai cách truy xuất dữ liệu trong vùng nhớ chương trình là ánh xạ 16k word bộ nhớ chương trình vào vùng 32k byte nằm ở vùng địa chỉ cao của không gian bộ nhớ dữ liệu. Phương pháp truy xuất này được gọi là PSV (Program Space Visibility). Khi đó có thể dùng các phương pháp truy xuất bộ nhớ dữ liệu để truy xuất vùng nhớ chương trình đã được ánh xạ đó. Trang 16k nào được ánh xạ phụ thuộc vào giá trị của thanh ghi PSVPAG.

Các trình hợp dịch và biên dịch đã có các hàm hay macro có sẵn để xác định địa chỉ trang và địa chỉ bắt đầu trong trang đó của 1 vùng nhớ cụ thể (đã được định nghĩa và gán giá trị trước đó, chẳng hạn như các chuỗi hằng). Do đó chúng ta chỉ cần đặt giá trị thích hợp (địa chỉ trang PSV của vùng dữ liệu cần truy xuất) vào thanh ghi PSVPAG, sau đó lấy địa chỉ offset của vùng dữ liệu (hằng) cần truy xuất vào một thanh ghi chỉ số nào đó chẳng hạn, và truy xuất như là nó đang nằm trong RAM dữ liệu (tất nhiên đây là các dữ liệu chỉ đọc, trong trường hợp bình thường).

Thân,

hungtdh_bk
04-08-2007, 03:29 AM
E mới tìm hiểu về pspic.các đại ca cho e hỏi vấn đề này:
E đã đọc về chức năng của các chân CN (change notification pin) của pspic trong dspic30F reference manual nhưng vẫn chưa hiểu cặn kẽ các ngắt được tạo ra ở các chân này có tác dụng để làm gì,dùng trong những trường hợp nào?
Mong các đại ca chỉ giúp e .

namqn
04-08-2007, 11:54 PM
E mới tìm hiểu về pspic.các đại ca cho e hỏi vấn đề này:
E đã đọc về chức năng của các chân CN (change notification pin) của pspic trong dspic30F reference manual nhưng vẫn chưa hiểu cặn kẽ các ngắt được tạo ra ở các chân này có tác dụng để làm gì,dùng trong những trường hợp nào?
Mong các đại ca chỉ giúp e .
Các chân này sẽ tạo ngắt khi tín hiệu đưa vào chân đổi thay đổi trạng thái logic, có thể dùng để đếm sự kiện bên ngoài (encoder chẳng hạn). Việc tạo ngắt khi tín hiệu thay đổi trạng thái cho phép tăng độ phân giải, vì nó sẽ đếm cả cạnh lên và cạnh xuống của tín hiệu.

Thân,

hungtdh_bk
06-08-2007, 07:28 PM
Cảm ơn anh!
Thế như anh Nam nói thì chức năng của các chân này không có gì khác với chức năng của các chân ngắt ngoài INT0->INTx ở chế độ any change à anh.ví dụ như đếm xung encoder chẳng hạn ,ta có thể dùng các chân INTx ở chế độ any change để kích hoạt ngắt ở cả sườn lên và sườn xuống của xung vào.

namqn
06-08-2007, 08:07 PM
Cảm ơn anh!
Thế như anh Nam nói thì chức năng của các chân này không có gì khác với chức năng của các chân ngắt ngoài INT0->INTx ở chế độ any change à anh.ví dụ như đếm xung encoder chẳng hạn ,ta có thể dùng các chân INTx ở chế độ any change để kích hoạt ngắt ở cả sườn lên và sườn xuống của xung vào.
Đúng như vậy bạn ạ. Tuy nhiên, các chân INTx chỉ được kích hoạt theo 1 cạnh nhất định một khi đã được thiết lập cấu hình, và chỉ bằng cách thiết lập lại cấu hình thì mới có thể được kích hoạt theo cạnh kia. Trong khi đó, các ngắt CNx xảy ra khi trạng thái logic của chân thay đổi (tức là theo cả cạnh lên lẫn cạnh xuống). Encoder chỉ là một ví dụ để tôi minh họa ứng dụng của các ngắt CNx, chứ việc xử lý encoder theo kiểu này sẽ thường kém hiệu quả hơn so với việc sử dụng các module QEI có sẵn trong các chip dành cho điều khiển động cơ.

Thân,

hungtdh_bk
07-08-2007, 12:41 AM
cảm ơn anh!
Vậy sao dspic ko có thêm chế độ kích hoạt ngắt cho cả 2 sườn lên và sườn xuống cho các chân INTx (any change) như trong AVR nhỉ?cho đơn giản.Hay làm thế sẽ ổn định và chính xác hơn?Trước e làm AVR giờ chuyển sang DSpic cùng là để tận dụng khả năng xử lý,module QEI ,module CAN,PWM của DSPIC.Là lính mới học DSPIC,mong anh chỉ giáo.

namqn
07-08-2007, 02:47 AM
cảm ơn anh!
Vậy sao dspic ko có thêm chế độ kích hoạt ngắt cho cả 2 sườn lên và sườn xuống cho các chân INTx (any change) như trong AVR nhỉ?cho đơn giản.Hay làm thế sẽ ổn định và chính xác hơn?Trước e làm AVR giờ chuyển sang DSpic cùng là để tận dụng khả năng xử lý,module QEI ,module CAN,PWM của DSPIC.Là lính mới học DSPIC,mong anh chỉ giáo.
Câu hỏi của bạn có lẽ chỉ có kỹ sư thiết kế chip của Microchip mới trả lời chính xác được. Các ngắt CNx đã thỏa mãn yêu cầu trên của bạn rồi còn gì.

Thân,

scentoflove
09-08-2007, 11:52 PM
Em xài ds33f muốn đọc ADC 5V thì chọn VCFG<2:0> sao cho ADref+ = 5v ADref-= AVss và nối chân Vref+ với 5V. Như vậy ok chưa a Nam

namqn
10-08-2007, 12:15 AM
Em xài ds33f muốn đọc ADC 5V thì chọn VCFG<2:0> sao cho ADref+ = 5v ADref-= AVss và nối chân Vref+ với 5V. Như vậy ok chưa a Nam
Trong một luồng khác tôi có nói là các chân analog cần được giới hạn điện áp, với điện áp tối đa là Vdd + 0.3V (datasheet nói như vậy). Vdd cực đại là 3.6V, đây là giá trị giới hạn trên của điện áp nguồn, bạn nên dùng 3.3V. Do đó, nối như bạn vừa nói sẽ nướng chip ngay lập tức.

Thân,

scentoflove
10-08-2007, 06:17 PM
Em có đọc bài đó của anh, nhưng em thắc mắc là do mình ko tạo được áp Vref 5V (em dùng chân Vref+ nguồn ngoài 5V và chân AVss mass) hay là chân ANx đọc về ko chịu nổi áp 3.6V-5V.

namqn
10-08-2007, 06:19 PM
Em có đọc bài đó của anh, nhưng em thắc mắc là do mình ko tạo được áp Vref 5V (em dùng chân Vref+ nguồn ngoài 5V và chân AVss mass) hay là chân ANx đọc về ko chịu nổi áp 3.6V-5V.
Chân ANx sẽ không chịu nổi áp > Vdd + 0.3V (giới hạn tuyệt đối của Vdd là 4V).

Thân,

Arane
08-02-2009, 10:47 AM
Khi em dùng dspic33FJ256GP710. Em khai báo: _FOSCSEL(FNOSC_PRI & IESO_OFF & TEMP_OFF)
thì khi chạy nó báo lỗi là: error: 'TEMP_OFF' undeclared here (not in a function)

Mong các cao thủ chỉ cho em với ạ!
Em cảm ơn ah!

namqn
08-02-2009, 05:28 PM
Khi em dùng dspic33FJ256GP710. Em khai báo: _FOSCSEL(FNOSC_PRI & IESO_OFF & TEMP_OFF)
thì khi chạy nó báo lỗi là: error: 'TEMP_OFF' undeclared here (not in a function)

Mong các cao thủ chỉ cho em với ạ!
Em cảm ơn ah!
Theo header file của dsPIC33FJ256GP710, các option sau được khai báo cho _FOSCSEL():
** _FOSCSEL( OPT1_ON & OPT2_OFF & OPT3_PLL )
**
** Oscillator Source Selection:
** FNOSC_FRC Fast RC oscillator
** FNOSC_FRCPLL Fast RC oscillator w/ divide and PLL
** FNOSC_PRI Primary oscillator (XT, HS, EC)
** FNOSC_PRIPLL Primary oscillator (XT, HS, EC) w/ PLL
** FNOSC_SOSC Secondary oscillator
** FNOSC_LPRC Low power RC oscillator
** FNOSC_FRCDIV16 Fast RC oscillator w/ divide by 16
** FNOSC_LPRCDIVN Low power Fast RC oscillator w/divide by N
**
** Two-speed Oscillator Startup :
** IESO_OFF Disabled
** IESO_ON Enabled
Không hiểu bạn dùng TEMP_OFF cho mục đích gì. Thông báo lỗi của C Compiler là hoàn toàn chính xác.

Thân,

muitenxanh87
10-02-2009, 06:09 PM
hic mọi người làm ơn cho mình hỏi một chút con 30f4011 có hỗ trợ giao tiếp trực tiệp với máy tính qua cổng usb k hay qua cổn=g com ảo thôi...hic có thể minh họa thì càng tốt ...thanks mọi ng` trước nhé

namqn
10-02-2009, 06:14 PM
hic mọi người làm ơn cho mình hỏi một chút con 30f4011 có hỗ trợ giao tiếp trực tiệp với máy tính qua cổng usb k hay qua cổn=g com ảo thôi...hic có thể minh họa thì càng tốt ...thanks mọi ng` trước nhé
dsPIC30F không có module ngoại vi USB, do đó không hỗ trợ giao tiếp trực tiếp với máy tính bằng USB. Một bộ chuyển đổi USB-serial là đủ để giao tiếp dsPIC30F và máy tính thông qua module UART của dsPIC30F.

Thân,

cuongthinh
11-02-2009, 11:08 AM
Các anh ơi cho em hỏi: em mới nghiên cứu về dsPIC mà phải làm việc với con dsPIC30F6010. Con này là IC dán, 80 chân. Em đang không biết nạp cho con này thế nào, có đế cắm cho nó không. Thêm nữa, ban đầu em muôn viết chương trình ứng dụng nhỏ cho nó rồi cắm vào kid phát triển để kiểm tra đễ dễ hiểu hơn nhưng con này làm sao cắm vào kid phát triển được ạ

namqn
11-02-2009, 05:44 PM
Các anh ơi cho em hỏi: em mới nghiên cứu về dsPIC mà phải làm việc với con dsPIC30F6010. Con này là IC dán, 80 chân. Em đang không biết nạp cho con này thế nào, có đế cắm cho nó không. Thêm nữa, ban đầu em muôn viết chương trình ứng dụng nhỏ cho nó rồi cắm vào kid phát triển để kiểm tra đễ dễ hiểu hơn nhưng con này làm sao cắm vào kid phát triển được ạ
Bạn nạp cho dsPIC này thông qua giao thức ICSP, cần dùng các chân VDD, VSS, MCLR/VPP, PGD, và PGC. Bạn có thể tự thiết kế một board mạch nhỏ để hàn dsPIC vào và kéo toàn bộ các chân I/O ra các đầu nối (tương tự các Plug-In Module của Microchip chẳng hạn), rồi sau đó thiết kế mạch phát triển tương thích với board mạch chứa dsPIC này. Bạn có thể tham khảo thêm về các board mạch kiểu này ở đây:
http://www.minhhaco.com/index.php?act=view&code=cat&id=2

Thân,

kjrato
15-02-2009, 09:44 AM
mình mới học con DsPic 30f4011,mình đã mua mạch nạp, nhưng ko biết dùng chương trình gì để dịch sang file hex.Mọi người giúp đỡ mình với ;))
Thanks các bro trước

namqn
15-02-2009, 04:56 PM
mình mới học con DsPic 30f4011,mình đã mua mạch nạp, nhưng ko biết dùng chương trình gì để dịch sang file hex.Mọi người giúp đỡ mình với ;))
Thanks các bro trước
Bạn có thể dùng trình hợp dịch MPLAB ASM30, đi kèm với MPLAB IDE (miễn phí, download từ trang web của Microchip), có thể dùng MPLAB C Compiler for DSCs (phiên bản Student Edition miễn phí, download từ trang web của Microchip), các trình biên dịch C của các hãng thứ ba như Hi-Tech, CCS, ... (thường có các phiên bản demo miễn phí, giới hạn tính năng).

Thân,

thaivanhoa
09-03-2009, 10:58 AM
em đang tìm hiểu về một loại DSPIC .có nhiều tài liệu nhưng toàn tiếng anh em ngại đọc lắm ,anh có tài liệu tiếng việt nào về một loại DSPIC nào đó cho em xin được không.em đang tìm hiểu về các nội dung như sau:

-đặc tính kĩ thuật
-cấu trúc bên trong
-quản lí phân vùng bộ nhớ
-ngoại vi và nguyên lí điề khiển kèm theo
-các công cụ phát triển kèm theo

các anh có tài liệu thì cho em xin gấp nhe
em cảm ơn nhiều nhé
gửi cgo em qua hộp thư

tvh_ttytna@yahoo.com

Hailua8x
16-07-2009, 08:33 PM
Mấy anh cho em hỏi:

trong c30 thì có lệnh PLLx để nhân tần số thực thi lênh:
_FOSC(CSW_FSCM_OFF & FRC_PLL4);
vậy chứ trong CCS 4.xxx thì có lệnh nào để nhân tần số thực thi lệnh lên không ?

Mong được mấy anh giúp đở

trinhhonghung
12-08-2009, 11:26 PM
cho hoi phan mem nao ho tro thu vien cua dsPIC khong?minh dang dung con dsPIC30F4011 nhung khong co phan mem nao de mo phong va ve mach.

robotden
14-09-2009, 06:17 PM
dspic thì mình chưa thấy có mô phỏng , còn vẽ mạch thì bạn dùng orcad và dxp đều được, bạn sẽ phải tự tạo thư viện chân cho nó,

minhtienbk
18-09-2009, 06:19 PM
Bổ sung tí tẹo
- Có 3 timer 16bit, có thể ghép 2 timer để được 1 timer 32bit.
- 6 Kênh PWM có thể làm rất nhiều việc khác, nhưng chính vẫn là dk động cơ.
- Chân cẳng iem 2010 này hơi chuối một chút, 2 chân nạp (PGD, PGC) chân SPI, I2C lại trùng vào nhau, nên hơi khó dùng, nếu bạn treo trở dùng giao tiếp I2C thì việc nạp chương trình sẽ bị ảnh hưởng (kinh nghiệm bản thân cứ tưởng mạch nạp hỏng :), cắt 2 con trở treo lại nạp ầm ầm).
- Chân UART lại trùng chân với nhiều giao tiếp SPI, I2C, nên chủ yếu con này chuyển sang dùng U1ATX, U1ARX, nên khi thiết kế cẩn thận chút.

Cảm ơn lời nhận xét đầy kinh nghiệm , định học xài dsPIC nhưng giờ thôi hihi. Thanks

mocdailam
20-09-2009, 12:27 AM
chưa gì đã nãn! chán ông này kinh!

spin
29-09-2009, 10:22 AM
dạ anh cho em hỏi, em đang cần làm với chip dspic33fj256gp710, em muốn dùng lập trình c--> save vào file.c --> thì dùng công cụ biên dịch là gì ạ
(em đã chọn C:\Program Files\Microchip\MPLAB C30\bin\xxxx.exe và C:\Program Files\Microchip\MPLAB C32 Suite\bin\xxx.exe chọn lần lượt gần như hết rồi mà vẫn báo BUILD FAILED)

lenamdo
29-09-2009, 11:24 AM
con này mua mạch lạp sao vậy

MA SAT KY NHAN
22-10-2009, 12:11 AM
bác nào cho em hỏi dspic khác dòng pic24je128gaxxx ở chỗ nào ạ em dang học con pic nay trong quyen programming 16_bit mà thầy nó mông lung qua

buithientruong
22-11-2009, 07:49 PM
có anh nào làm về PwM bảo em vơi

anhga
09-12-2009, 04:29 PM
có anh nào làm về PwM bảo em vơi
Có rất nhiều người làm về PWM bạn ạ.
Bạn cứ viết code nếu k chạy thì post code lên sẽ có ng giúp bạn

ngtrithuat
05-08-2010, 10:40 AM
Hii! Chào minhquancdt.lâu nay mình dùng con Pic16F lập trình cho nó bằng CCS, giờ mình chuyển sang dùng con DSpic30F, mình nghe nói vẫn dùng CCS được, mình thấy nó vừa có Port, Tris và cả Lat nữa, không biết làm sao sét mức cao thấp cho một chân nào đó.Help mình với.Thank you rất nhiều.

lybao_huy
05-08-2010, 11:10 PM
Dùng Dspic,pic24f thì nên dùng MPLAB C30, bởi vì được hỗ trợ thư viện và dễ hiểu về các thanh ghi của nó không. Chứ dùng CCS đôi khi nhiều lệnh khó hiểu và cách khai thác các thanh ghi cũng khó hơn

semipower
06-08-2010, 10:19 PM
bác nào cho em hỏi dspic khác dòng pic24je128gaxxx ở chỗ nào ạ em dang học con pic nay trong quyen programming 16_bit mà thầy nó mông lung qua

PIC24 là vi điều khiển (MCU), còn dsPIC = MCU + DSP.

vanmao
10-03-2011, 09:52 AM
chào các bạn. Mình đang tìm hiểu về dspic30f4011 cho đồ án của mình.
trong đồ án mình sữ dụng 3 module của dspic là QEI để nhận tín hiệu từ encoder, SPI để truyền tín hiệu giữa các slave và master. dùng UART để tuyền lên PC. ai có tài liệu chi tiết về mấy phần này cho minh xin với.
cảm ơn nhiều!

ak47
11-03-2011, 05:04 PM
chào các bạn. Mình đang tìm hiểu về dspic30f4011 cho đồ án của mình.
trong đồ án mình sữ dụng 3 module của dspic là QEI để nhận tín hiệu từ encoder, SPI để truyền tín hiệu giữa các slave và master. dùng UART để tuyền lên PC. ai có tài liệu chi tiết về mấy phần này cho minh xin với.
cảm ơn nhiều!

Tài liệu những cái này trên diễn đàn cũng khá là đầy đủ rồi.Chịu khó đọc chút xíu,nghĩ chút rồi làm,rồi post lên đây cùng trao đổi. Cứ post lên đi,ít nhất thì mình sẽ ủng hộ bạn.
Chúc thành công!

dinhthem
15-03-2011, 12:05 PM
Bạn em nói dspic30f4011 40Pin-PDIP (chân cắm) thì mình cấp áp 5V (em xài 7805).
Còn dspic30f4011 44Pin-TQFP (chân dán) thì mình cấp áp 3.3V (em xài LM1117) phải không ạ?
Trong datasheet em ko thấy phân biệt, dùng dspic30f4011 dán cấp áp 5V thì thấy pic nóng.
Em cám ơn

ak47
16-03-2011, 09:19 PM
Bạn em nói dspic30f4011 40Pin-PDIP (chân cắm) thì mình cấp áp 5V (em xài 7805).
Còn dspic30f4011 44Pin-TQFP (chân dán) thì mình cấp áp 3.3V (em xài LM1117) phải không ạ?
Trong datasheet em ko thấy phân biệt, dùng dspic30f4011 dán cấp áp 5V thì thấy pic nóng.
Em cám ơn
Cái này thì lần đầu nghe tới! Đúng là ở mỗi điện áp cấp nguồn thì dspic có khả năng làm việc ở các tốc độ khác nhau.Và dspic30F401x được cấp ngồn 5V sẽ cho tốc độ xử lí lớn nhất (còn tùy vào việc config nữa nhé!). Bạn xem file mình gửi kèm đó!
Còn pic nóng là có thể do dòng sau ổn cao.Hình như là 800mA với LM1117 hay sao.Bạn có thể thêm một trở hạ bớt dòng xuống ngang với trong datasheet.Nếu nóng quá có thể do PCB của bạn design có vấn đề. Lúc trước mình làm trên dspic30 và dspic33 đều không nóng(so với mạch của Microchip design thì ấm hơn chút!!!).
Chúc thành công!

dinhthem
19-03-2011, 01:52 PM
Cái này thì lần đầu nghe tới! Đúng là ở mỗi điện áp cấp nguồn thì dspic có khả năng làm việc ở các tốc độ khác nhau.Và dspic30F401x được cấp ngồn 5V sẽ cho tốc độ xử lí lớn nhất (còn tùy vào việc config nữa nhé!). Bạn xem file mình gửi kèm đó!
Còn pic nóng là có thể do dòng sau ổn cao.Hình như là 800mA với LM1117 hay sao.Bạn có thể thêm một trở hạ bớt dòng xuống ngang với trong datasheet.Nếu nóng quá có thể do PCB của bạn design có vấn đề. Lúc trước mình làm trên dspic30 và dspic33 đều không nóng(so với mạch của Microchip design thì ấm hơn chút!!!).
Chúc thành công!

Mình để áp 3.3V thì chạy nửa tiếng dspic30f4011 dán vẫn mát rượi. Mới cắm 5V vô khoảng 30s thì nó nóng hổi.
Ai có ý kiến góp ý nhe. thanks

rukawaka
25-04-2011, 03:41 PM
Cam on anh, lam em được king. Tad Djungar not hop tion Thap qua tang len, Chuyen Ngay đổi Ao Ao.

ducnghicdn
20-05-2011, 10:34 AM
cac bac chi cho cac dieu khien dong co mot chieu bang pic

thanhtoansh
01-08-2011, 10:20 PM
Em là thành viên mới, em muốn đi tắt đón đầu, vậy có ai giúp em về cách nạp chương trình cho dsPIC30F6012 không.
Nạp bằng mạch nạp gì, hay là chỉ dùng một số chân của chíp để nạp,..
Em thực sự mù nhưng mà công việc cần gấp nên ai chỉ thì em cảm ơn nhiều nha!
Chào!

trungle_nt89
29-09-2011, 09:24 PM
Em mới tìm hiểu về DSPIC 30f4011, cho em hỏi cách viết chương trình giữa PIC16f887A với DSPIC 30f4011 có khác gì nhau không ah?

trongbk.k54
15-11-2012, 01:54 AM
đây là code của thầy Ngyễn Hồng Quang-BKHN
http://www.mediafire.com/download.php?v95g69923y61n9l
các bạn có hứng thú thì lấy về nghiên cứu

phuong_92
22-03-2013, 10:22 PM
em cũng đang tìm hiểu về dspic30f4011 anh nào có tài liệu về pic này thì cho em xin.em cảm ơn mấy a nhiều!

tienmis
15-05-2013, 12:42 AM
cho em hỏi là dspic30f4013 dùng phần mềm nào để mo phỏng ạ?

vietnhoc
21-07-2013, 11:40 PM
không có phần mềm mô phỏng đâu bạn :D