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 30-08-2006, 12:31 PM   #1
pham_v_quang3i
Đệ tử 1 túi
 
Tham gia ngày: Aug 2005
Bài gửi: 12
:
Hôm trước em đã hỏi bác Nam một số câu hỏi , bác trả lời nhưng em chưa hiểu. Em post lại một số câu hỏi lên đây mong bác hoặc các Trưởng lão PIC bang trả lời cụ thể giúp em :
- Như em đã hỏi con 5013 của em dùng thạch anh ngoài không chạy, em thử thay bằng con 6014 ( chứ ko phải 6014A) , dùng thạch anh ngoài cũng không chạy. Cả hai trương hợp trên dùng mạch RC bên trong thì chạy, vậy em muốn hỏi, các bác đang ở trong nước , có bác nào dùng dsPIC dán ( loại có RAM lớn) lần nào chưa, nếu dùng rồi thì đó là loại gì, mua ở đâu ? Có khi nào dòng PIC này bị lỗi, hay PIC em dùng là hàng Sample , nó ko được OK lắm.
- Trong "dsPIC30F Family Reference Manual" Năm 2005. Bảng 7-3 ( oscillator system -VERSION2 ) - trang 180. Bảng 7-4 ( oscillator system -VERSION3 ) - trang 182.
Tùy thuộc vào giá trị của FOS<2:0>, FPR<4:0>, mà ta lựa chon nguồn clock. Em muốn hỏi . Khi nguồn ta chọn nguồn OSC là Primary , FOS<2:0> = 11; FPR<4:0>=1010 (hoặc 0001,0011 ) khác so với khi ta chọn nguồn OSC là Internal FRC ( FOS<2:0> =01) ở chỗ nào. Khác ở đây không nói đến có hay không có nhân PLL mà em muốn hỏi về bản chất. Các đại ca cứ giải thích trường hợp này thì các trường hợp EC, LPRC.... cũng tương tự
- Trong file.h ở phần cuối có các chỉ dẫn config nhưng có mottj số chỉ dẫn về OSC em không hiểu
Ví dụ :
_FOSC(CSW_FSCM_OFF & FRC & XT_PLL16);
_FOSC(CSW_FSCM_OFF & FRC & XTL);
_FOSC(CSW_FSCM_OFF & FRC & FRC_PLL4);
_FOSC(CSW_FSCM_OFF & LPRC & EC_PLL16);
_FOSC(CSW_FSCM_OFF & LPRC & ERC);
_FOSC(CSW_FSCM_OFF & LPRC & ERCIO);
_FOSC(CSW_FSCM_OFF & LPRC & XT);
_FOSC(CSW_FSCM_OFF & LPRC & XT_PLL4);
Nguồn OSC đã là FRC thì còn có XT làm gì em ko hiểu , mong đại ca nào hiểu nói cụ thể , rõ ràng cho em.
__________________________________________________ ___________
Nhân tiên đây em xin cảm ơn bác Nam vì bác đã nhiệt tình giúp đỡ em, thanks
pham_v_quang3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2006, 04:55 PM   #2
pham_v_quang3i
Đệ tử 1 túi
 
Tham gia ngày: Aug 2005
Bài gửi: 12
:
Đôi lời về ngắt
Cú pháp của ngắt :
- Khi khai báo sử dụng một ngắt, cú pháp khai báo đơn giản
void _ISR _INT0Interrupt(void); // ngăt ngoài
void _ISR _U1TXInterrupt(void) // ngắt UART
void _ISR _U1RXInterrupt(void)
- Trang 94 của C30_Users_Guide có định nghĩa cách khai báo đầy đủ :
__attribute__((interrupt [(
[ save(symbol-list)]
[, irq(irqid)]
[, altirq(altirqid)]
[, preprologue(asm)]
)]
))
Trong đấy :
Save : Lưu giữ biến vào của chương trình ngắt
Irq : cho phép đặt vector ngắt
altirq : cho phép đặt vector ngắt thay thế
preprologue : cho phép insert hợp ngữ
Em chỉ dịch Word - by - Word chứ chưa hiểu ý nghĩa thật sự của các mục

* Trong các tài liệu hướng dẫn của microchip có một số khai báo dùng ngắt, sử dụng cú pháp trên ( trong dsPIC® Language Tools Getting Started có nhiều ví dụ về khai báo ngắt kiểu này)
void __attribute__((__interrupt__(__save__(variable1,va riable2)))) _INT0Interrupt(void)
/* interrupt routine code */
{
/* Interrupt Service Routine code goes here */
}

void __attribute__((__interrupt__)) _ADCInterrupt(void);
void __attribute__((__interrupt__, __shadow__)) _T1Interrupt(void);

Các đại ca ai hiểu giải thích cụ thể cho em nhé
+ Giải thích cụ thể về từ khóa __attribute__ , __shadow__vì em thấy nó dùng rất nhiều.
+ Khi nào thì mình cần dùng đầy đủ cú pháp của ngắt, em thấy dùng cú pháp đơn giản như trên cũng chẳng sao.
Thanks

thay đổi nội dung bởi: pham_v_quang3i, 30-08-2006 lúc 05:00 PM.
pham_v_quang3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2006, 07:17 PM   #3
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 pham_v_quang3i
Hôm trước em đã hỏi bác Nam một số câu hỏi , bác trả lời nhưng em chưa hiểu. Em post lại một số câu hỏi lên đây mong bác hoặc các Trưởng lão PIC bang trả lời cụ thể giúp em :
- Như em đã hỏi con 5013 của em dùng thạch anh ngoài không chạy, em thử thay bằng con 6014 ( chứ ko phải 6014A) , dùng thạch anh ngoài cũng không chạy. Cả hai trương hợp trên dùng mạch RC bên trong thì chạy, vậy em muốn hỏi, các bác đang ở trong nước , có bác nào dùng dsPIC dán ( loại có RAM lớn) lần nào chưa, nếu dùng rồi thì đó là loại gì, mua ở đâu ? Có khi nào dòng PIC này bị lỗi, hay PIC em dùng là hàng Sample , nó ko được OK lắm.
- Trong "dsPIC30F Family Reference Manual" Năm 2005. Bảng 7-3 ( oscillator system -VERSION2 ) - trang 180. Bảng 7-4 ( oscillator system -VERSION3 ) - trang 182.
Tùy thuộc vào giá trị của FOS<2:0>, FPR<4:0>, mà ta lựa chon nguồn clock. Em muốn hỏi . Khi nguồn ta chọn nguồn OSC là Primary , FOS<2:0> = 11; FPR<4:0>=1010 (hoặc 0001,0011 ) khác so với khi ta chọn nguồn OSC là Internal FRC ( FOS<2:0> =01) ở chỗ nào. Khác ở đây không nói đến có hay không có nhân PLL mà em muốn hỏi về bản chất. Các đại ca cứ giải thích trường hợp này thì các trường hợp EC, LPRC.... cũng tương tự
- Trong file.h ở phần cuối có các chỉ dẫn config nhưng có mottj số chỉ dẫn về OSC em không hiểu
Ví dụ :
_FOSC(CSW_FSCM_OFF & FRC & XT_PLL16);
_FOSC(CSW_FSCM_OFF & FRC & XTL);
_FOSC(CSW_FSCM_OFF & FRC & FRC_PLL4);
_FOSC(CSW_FSCM_OFF & LPRC & EC_PLL16);
_FOSC(CSW_FSCM_OFF & LPRC & ERC);
_FOSC(CSW_FSCM_OFF & LPRC & ERCIO);
_FOSC(CSW_FSCM_OFF & LPRC & XT);
_FOSC(CSW_FSCM_OFF & LPRC & XT_PLL4);
Nguồn OSC đã là FRC thì còn có XT làm gì em ko hiểu , mong đại ca nào hiểu nói cụ thể , rõ ràng cho em.
Dùng thạch anh ngoài tức là chúng ta dùng bộ dao động tích hợp bên trong của chip, trong một số trường hợp (vì thạch anh không đúng chủng loại) thì mạch không dao động được, Microchip cũng đã từng có hướng dẫn là trong một số trường hợp cần bổ sung điện trở hồi tiếp ngoài giữa các chân OSC1 và OSC2.

Nếu bạn không dùng thạch anh ngoài được thì vẫn còn các option khác đảm bảo cho bạn có tốc độ đủ cao. Việc bạn dùng được FRC (có và không có PLL) có nghĩa là ít nhất thì chân OSC1 và khối PLL của chip làm việc tốt.
Như vậy bạn có thể dùng các chế độ EC (external clock) hay ERC (RC ngoài chip). Với chế độ EC, bạn cần dùng một vi mạch dao động (đợt vừa rồi khi về nước tôi có mua được vài bộ 24.576 MHz ở chợ Nhật Tảo, tôi nghĩ là ở Hà Nội cũng có loại vi mạch dao động này). Do đó, bạn nên thử thêm các chế độ EC và ERC.

Bây giờ tôi thử giải thích thêm về bảng 7-3. Các bit FPR<3:0> dùng để chọn các cấu hình khác nhau khi ta chọn primary source cho clock (tức là khi FOS<1:0> = 11, đây là chế độ mặc định, những cấu hình này cũng ảnh hưởng đến chức năng của chân OSC2. Nếu ta chọn nguồn cho clock là FRC, hay LP, hay LPRC (những nguồn này là secondary hay internal) thì các bit FPR<3:0> không có ý nghĩa vì chỉ có một cấu hình, tuy nhiên, chức năng của chân OSC2 vẫn lệ thuộc vào các FPR<3:0> như đối với trường hợp dùng primary source.

Vậy có thể nói là khi ta chọn nguồn OSC là Primary , FOS<1:0> = 11; FPR<3:0> = 1010 (hay 0001, hay 0011) khác so với khi ta chọn nguồn OSC là Internal FRC ( FOS<2:0> = 01) ở chỗ Internal FRC không quan tâm đến việc FPR<3:0> = 1010 (hay 0001, hay 0011) và sẽ cấp clock cho chip bằng tần số dao động của Internal FRC, còn primary thì dùng FPR<3:0> = 1010 (hay 0001, hay 0011) để chọn hệ số nhân cho PLL, với đầu vào của PLL lấy từ Internal FRC. Nói cách khác, nếu bạn chọn Internal FRC thì bỏ qua PLL, nhưng bạn vẫn có thể dùng Internal FRC với PLL nếu bạn chọn nguồn clock cho PLL là Internal FRC (điều này không làm được với Version 1, bảng 7-2).

Đây chỉ là cách phân chia các cấu hình clock thôi.

Và với những giải thích ở trên, việc các cấu hình như
Trích:
_FOSC(CSW_FSCM_OFF & FRC & XT_PLL16);
_FOSC(CSW_FSCM_OFF & FRC & XTL);
_FOSC(CSW_FSCM_OFF & FRC & FRC_PLL4);
_FOSC(CSW_FSCM_OFF & LPRC & EC_PLL16);
_FOSC(CSW_FSCM_OFF & LPRC & ERC);
_FOSC(CSW_FSCM_OFF & LPRC & ERCIO);
_FOSC(CSW_FSCM_OFF & LPRC & XT);
_FOSC(CSW_FSCM_OFF & LPRC & XT_PLL4);
là không có gì khó hiểu, chúng ta muốn dùng FRC hay LPRC, với phần FPR<3:0> được thiết lập giống như của XT_PLL16, XTL, ...

Hy vọng lần này tôi đã giải thích rõ hơn.

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 01-09-2006, 11:45 AM   #4
pham_v_quang3i
Đệ tử 1 túi
 
Tham gia ngày: Aug 2005
Bài gửi: 12
:
OK, em hiểu rồi.
Nếu ta cấu hình chip như thế này :
_FOSC(CSW_FSCM_OFF & FRC & XT_PLL16);
_FOSC(CSW_FSCM_OFF & FRC & XTL);

Thì trong cả hai trường hợp này XT_PLL16 và XTL là không có ý nghĩa. Trong cả hai trường hợp trên chip đều sử dụng mạch dao động FRC trong, nhưng cấu hình của FPR<3:0> vẫn để ở XT_PLL16 hoặc XTL. Vậy mục đích của việc thiết kế này chỉ là để làm hài lòng người dùng thôi ư, nếu người sử dụng muốn thay đổi nguồn clock việc gì mà không cấu hình lại từ đầu. Hay mục đích của việc này là nhờ vào clock switch để 1 chip có thể chạy nhiều tần số khác nhau ở những khoảng khác nhau . Hi , thấy nó cứ là lạ.
pham_v_quang3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2006, 06:13 PM   #5
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 pham_v_quang3i
OK, em hiểu rồi.
Nếu ta cấu hình chip như thế này :
_FOSC(CSW_FSCM_OFF & FRC & XT_PLL16);
_FOSC(CSW_FSCM_OFF & FRC & XTL);

Thì trong cả hai trường hợp này XT_PLL16 và XTL là không có ý nghĩa. Trong cả hai trường hợp trên chip đều sử dụng mạch dao động FRC trong, nhưng cấu hình của FPR<3:0> vẫn để ở XT_PLL16 hoặc XTL. Vậy mục đích của việc thiết kế này chỉ là để làm hài lòng người dùng thôi ư, nếu người sử dụng muốn thay đổi nguồn clock việc gì mà không cấu hình lại từ đầu. Hay mục đích của việc này là nhờ vào clock switch để 1 chip có thể chạy nhiều tần số khác nhau ở những khoảng khác nhau . Hi , thấy nó cứ là lạ.
Mục đích của việc đặt FPR<3:0> chính là cho clock switching, chúng ta cấu hình sẵn primary và chuyển từ FRC sang primary khi cần thiết (thường là cho các hệ thống liên quan đến tiết kiệm năng lượng nhưng vẫn cần năng lực tính toán cao, các hệ portable chẳng hạn). Việc đặt FPR<3:0> chỉ không có ý nghĩa khi chúng ta tắt clock switching, nhưng nên chú ý là chân OSC2 vẫn chịu ảnh hưởng của các thiết lập đó, không cần biết clock switching có bật hay không.

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
Trả lời


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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 16 22-08-2012 12:35 AM


Múi giờ GMT. Hiện tại là 11:02 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