|
Tài trợ cho PIC Vietnam |
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 |
|
Ðiều Chỉnh | Xếp Bài |
16-03-2008, 01:44 AM | #1 |
PIC Bang chủ
|
Căn bản về dsPIC33
Bài 1: Bộ dao động của dsPIC33 1. Giới thiệu: - dsPIC33 có 4 nguồn dao động (xem hình) - Bộ PLL - Bộ DOZE chạy ở chế độ tiết kiệm điện - Bộ giám sát lỗi dao động FSCM (Fail Safe Clock Monitor) Một lưu ý rằng, chu kỳ máy của dsPIC33 không giống với PIC. Dao động vào của PIC sử dụng 4 dao động để thực hiện 1 lệnh, trong khi đó bộ dao động vào của dsPIC33 thông qua bộ chia (nhân tần số) PLL, sau đó dùng 2 chu kỳ để thực hiện 1 lệnh. Thông thường PIC cho phép dùng thạch anh 20MHz và chạy ở 5MIPS, trong khi đó dsPIC33 cho phép dao động FOSC tới 80MHz và chạy ở tối đa 40MIPS. 2. Cấu hình: Việc cấu hình cho dsPIC33 tuân thủ các nguyên tắc sau: Tần số mã lệnh: FCY tương đương trực tiếp với MIPS (Million Instructions Per Second). Nghĩa là nếu FCY = 40MHz thì tương đương dsPIC33 chạy ở 40MIPS. Đây là tần số cho phép tối đa của dsPIC33. Tần số dao động: Tần số này đạt giá trị lớn nhất là 80MHz, dù cấu hình PLL hay sử dụng nguồn dao động kiểu gì đi nữa, các bạn cũng không được phép vượt quá tần số này. Việc cấu hình PLL được cụ thể cho từng dòng dsPIC khác nhau, ở đây chúng ta lấy thí dụ dòng MC - Motor Control: Nguồn dao động vào có thể là thạch anh hoặc bộ dao động (thường các bạn gọi là thạch anh 4 chân) hoặc là lấy nguồn dao động được tạo ra từ con chip khác. Ta gọi là nguồn dao động vào, tần số nguồn dao động vào được ký hiệu là . Bộ PLL là phần ở giữa của hình. PLL được cấu hình bởi các thanh ghi PLLPRE, PLLPOST và PLLDIV như trên hình. Tần số dao động có thể được viết lại cụ thể như sau: VCO là Voltage Control Output, ta không cần quan tâm tới thành phân này. Hình trên mô tả cho chúng ta thấy, giả sử chúng ta muốn tạo tần số dao động FOSC là 80MHz (tần số tối đa) với thạch anh sử dụng là 10MHz, thì công việc của chúng ta là phải tính toán và cân đối các hệ số M, N1, N2. Khi đó chỉ việc thay thế nó và đặt vào các giá trị của PLLDIV, PLLPRE và PLLPOST. Nhưng vấn đề của chúng ta, đó là việc giới hạn bởi các thông số ngõ ra và ngõ vào tại từng vị trí. Cụ thể là bao nhiêu thì các bạn nhìn vào hình đã thấy rõ. Nếu dùng thạch anh hoặc dao động ngoại, các bạn không được phép sử dụng tần số nằm ngoài khoảng 1.6MHz đến 16MHz. Qua bộ chia PLLPRE, tần số không được vượt quá 0.8MHz đến 8MHz. Ở trước bộ chia PLLPOST không được nằm ngoài khoảng 100MHz đến 200MHz. Oh, tới đây thì mọi việc đơn giản rồi. Nếu các bạn muốn dao động FOSC là x MHz, các bạn chỉ cần nhẩm tính N2, vì nó chỉ có thể là 2, 4, 8 sao cho giá trị trước khi qua bộ chia PLLPOST nằm trong khoảng 100MHz đến 200Mhz. Vậy là các bạn có một hệ số N2. Bộ chia với hệ số M rất rộng, nằm từ 2 đến 513, nó tương đối linh động cho các bạn thực hiện các bộ chia. N1 cũng vậy, nó nằm từ 2 đến 33. Vậy chúng ta sẽ chọn N1 sao cho tần số dao động từ thạch anh vào sau PLLPRE nằm trong khoảng 0.8MHz tới 8MHz thế là ổn. Cuối cùng thì chúng ta chọn M. Các bạn hãy ghi nhớ hình này vì nó rất quan trọng cho việc lựa chọn thạch anh và cấu hình PLL. 3. Vấn đề khi cấu hình: Một điểm mà chúng ta cần phải chú ý thật kỹ mà Microchip khuyến cáo đó là tần số thạch anh hoặc nguồn dao động bất kỳ trước khi vào bộ chia PLL phải nằm trong khoảng 4MHz đến 8MHz. Nếu như nằm ngoài khoảng này, các bạn phải thực hiện theo các bước sau:
Vd cụ thể đó là nếu các bạn dùng nguồn dao động là thạch anh 3MHz chứ không phải thạch anh 4MHz, các bạn phải tuân thủ các bước khởi tạo này để cấu hình dao động cho dsPIC33. 4. Lưu ý thường dùng: Dao động XT: thạch anh 3-10MHz Dao động HS: thạch anh 10 - 40MHz Dao động EC: bộ dao động (thạch anh 4 chân hoặc lấy từ nguồn chip khác) từ 0.8 - 64MHz. Khi có thời gian F sẽ cung cấp cho các bạn các cấu hình mẫu để các bạn chọn lựa cho các ứng dụng của mình. Tạm thời với bài viết cơ bản này, có lẽ các bạn đã nắm được cách cấu hình dao động cho chip của mình, và biết cách lựa chọn thạch anh phù hợp. Chúc vui Tài liệu tham khảo: [1] Section 07. Oscillator - dsPIC33F FRM [2] Datasheet dsPIC33F Motor Control Family
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? thay đổi nội dung bởi: falleaf, 16-03-2008 lúc 01:02 PM. |
21-03-2008, 04:46 PM | #2 |
PIC Bang chủ
|
Bài 2: Delay Khi lập trình bằng C30, hoặc các trình dịch từ gcc, chúng ta chú ý rằng gcc không cung cấp hàm delay( ). Do vậy, chúng ta phải tự viết các hàm này. Sau đây là một thí dụ, các bạn hãy thử phân tích thí dụ này để hiểu được cách viết một hàm delay như thế nào, tất nhiên các bạn hoàn toàn có thể sử dụng luôn hàm này. Lưu ý khi sử dụng, hãy tính toán một cách kỹ lưỡng các giá trị đặt cho cấu hình của mình. File delay.h: Code:
// Thay đổi giá trị FCY để phù hợp với cấu hình của chip, tính bằng MIPS #define FCY 16000000 //16 MIPS void Delay( unsigned int delay_count ); void Delay_Us( unsigned int delayUs_count ); // Những cấu hình này thường dùng để khởi tạo LCD, nên để ở đây #define Delay200uS_count (FCY * 0.0002) / 1080 #define Delay_1mS_Cnt (FCY * 0.001) / 2950 #define Delay_2mS_Cnt (FCY * 0.002) / 2950 #define Delay_5mS_Cnt (FCY * 0.005) / 2950 #define Delay_15mS_Cnt (FCY * 0.015) / 2950 #define Delay_1S_Cnt (FCY * 1) / 2950 File delay.c: Code:
#include "delay.h" unsigned int temp_count; void Delay( unsigned int delay_count ) { temp_count = delay_count +1; asm volatile("outer: dec _temp_count"); asm volatile("cp0 _temp_count"); asm volatile("bra z, done"); asm volatile("do #3200, inner" ); asm volatile("nop"); asm volatile("inner: nop"); asm volatile("bra outer"); asm volatile("done:"); } void Delay_Us( unsigned int delayUs_count ) { temp_count = delayUs_count +1; asm volatile("outer1: dec _temp_count"); asm volatile("cp0 _temp_count"); asm volatile("bra z, done1"); asm volatile("do #1500, inner1" ); asm volatile("nop"); asm volatile("inner1: nop"); asm volatile("bra outer1"); asm volatile("done1:"); }
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? thay đổi nội dung bởi: falleaf, 22-03-2008 lúc 06:22 PM. |
03-04-2008, 01:22 AM | #3 |
PIC Bang chủ
|
Bài 3: ADC 10/12-bit Hoạt động ADC của các chip MCHP đều được mô tả như hình sau: Quá trình lấy mấu ADC được thực hiện thông qua 2 quá trình: Sample (Lấy mẫu) và Conversion (Biến đổi). Quá trình này được mô tả đơn giản bằng việc dsPIC sẽ đóng khóa K để điện áp bên ngoài tích đủ vào một con tụ, sau đó mở khoá K để phân cách với mạch ngoài, và bắt đầu quá trình biến đổi từ Analog thành Digital. Quá trình biến đổi được mô tả như hình dưới đây: Vấn đề này quá đơn giản, vậy chúng ta cần tìm hiểu gì? Chúng ta cần tìm hiểu:
Thực tế là chúng ta muốn thế, nhắm mắt lại và kệ xừ mọi thứ, cái quan trọng là khi kết quả nằm trong một biến nào đó là xong. Người lập trình C lúc nào cũng mong muốn điều này, bởi nếu không thì họ đã lập trình với ASM30 mất rồi. Chúng ta sẽ tìm hiểu ở đây theo kiểu tư duy của người lập trình bằng ngôn ngữ cấp cao, nhưng sẽ hiểu đủ sâu để có thể làm việc với ASM30. F đặt ra những câu hỏi theo thứ tự tư duy như bên dưới đây: 1. Thời gian Sample (Lấy mẫu) và Conversion (Biến đổi) là bao nhiêu? Đơn giản cực, đôi khi các bạn không để ý, nhưng nó có ngay trong datasheet. F lấy thí dụ datasheet của dòng dsPIC33FJxxxMCxxx (DS70287A-page 319) Vậy ở đây xuất hiện thêm một số khái niệm và mà sau này để đơn giản, F viết là TAD và Tcy. Mối quan hệ giữa chúng? Làm sao để đặt được? Đây là câu hỏi tiếp theo và chúng ta sẽ giải quyết ngay dưới đây. (còn tiếp, vì F chưa có thời gian viết xong) Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
14-04-2008, 11:08 AM | #4 |
Đệ tử 6 túi
Tham gia ngày: Jul 2006
Bài gửi: 135
: |
Xin các anh hướng dẫn thêm về cách thiết kế mạch cho dsPIC33: điện thế ngõ vào cho pic33fj, giao tiếp ngoại vi như thế nào cho an toàn? Nếu ta đưa diện thế 5V vào chân input thì có sao ko (vì PIC33F chỉ hoạt động ở 3V-3V6 thôi). Ngoài ra, nạp cho PIC33 như thế nào? em thấy sơ đồ chân có nhiều chân PGD và PGC. Ta cho đường ICSP đến cặp chân nào cũng được phải ko?
thay đổi nội dung bởi: meishun, 14-04-2008 lúc 12:21 PM. |
18-04-2008, 02:37 PM | #5 | |
PIC Bang chủ
|
Trích:
Tài liệu tham khảo tại đây: http://ww1.microchip.com/downloads/e...e%2051589a.pdf (từ trang 37) Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
11-05-2008, 02:29 PM | #6 |
Đệ tử 1 túi
Tham gia ngày: Sep 2007
Bài gửi: 11
: |
Bạn nào có link về mô tả cụ thể các lệnh của dsP33F (intruction set decription) giới thiệu mình với. Dataheeet ghi tóm tắt quá, nhiều lệnh mình đọc không hiểu kỹ.
|
12-05-2008, 02:23 AM | #7 | |
Trưởng lão PIC bang
|
Trích:
http://ww1.microchip.com/downloads/e...Doc/70157C.pdf Tài liệu này được tôi đề cập đến trong các tutorial về dsPIC30F (tutorial 2 chẳng 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 |
|
16-06-2008, 12:15 PM | #8 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 146
: |
con 33FJ256GP710 khac 33FJ256GP710 the nao?
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?
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com |
16-06-2008, 12:31 PM | #9 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 146
: |
cấu hình cho con 33FJ256PG710
mình đang dùng thạch anh 10M. mình cũng đã đọc data sheet nhưng mà do là mới chuyển qua dùng MPLab C30 nên mình cũng ko biết cách thiết lập cấu hình như thế nào nữa (thấy dùng CCS sướng thôi rồi lun) . có bạn nào có thể cho mình 1 mẫu thiết lập cấu hình cho con 33FJ256GP710 này để nó chạy ở 40Mips ko nhỉ? xin chân thành cảm ơn trước . mà trên diễn đàn của mình cũng ưu ai code cho các em 30F quá nhỉ, tội nghiệp mấy em 33F
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com |
16-06-2008, 06:31 PM | #10 | |
Trưởng lão PIC bang
|
Trích:
http://techtrain.microchip.com/webse..._p1_111605.pdf http://techtrain.microchip.com/webse..._p2_111605.pdf 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 |
|
19-06-2008, 08:45 PM | #11 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2006
Bài gửi: 135
: |
Trích:
dsPIC33FJxxMCxx là dòng dsPIC Motor Control. dsPIC33FJxxGPxx là dòng dsPIC General Purposes. Bạn có thể dùng phần mềm MAPS của Microchip để so sánh các chip. |
|
04-08-2008, 04:35 PM | #12 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 5
: |
Có huynh nào biết con IC nào có thể chuyển đổi điện áp từ chuẩn 3.3 v lên chuẩn TTL 5 v ko? và tần số chuyển tối thiểu 40MHz để tương thích với con 33F.
|
04-08-2008, 05:10 PM | #13 | |
Trưởng lão PIC bang
|
Trích:
http://www.nxp.com/acrobat_download/...LVC4245A_6.pdf 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 |
|
05-08-2008, 01:08 PM | #14 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 5
: |
Anh Nam, em thấy con này khá giống con 74HC245, liệu có thể thay thế con 74LVC4245 bằng con 74HC245 ko?
|
05-08-2008, 05:44 PM | #15 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
Tags |
configuration, dspic30f, dspic33f |
|
|