Tài liệu Tìm hiểu và ứng dụng của vi điều khiển dspic33fj12mc202

  • Số trang: 71 |
  • Loại file: DOCX |
  • Lượt xem: 190 |
  • Lượt tải: 0
thucaothi349968

Tham gia: 25/12/2016

Mô tả:

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN ***** BÁO CÁO ĐỒ ÁN 2 TÌM HIỂU VÀ ỨNG DỤNG CỦA VI ĐIỀU KHIỂN DSPIC33FJ12MC202 Giảng viên hướng dẫn: TS. Vũ Vân Hà Hà Nội, tháng 12, năm 2018 Mục lục LỜI MỞ ĐẦU.........................................................................................................3 Phần I: TỔNG QUAN ĐỀ TÀI...............................................................................5 1. Lý do chọn đề tài:..............................................................................5 2. Mục đích:..........................................................................................5 3. Đối tượng nghiên cứu:.......................................................................5 4. Phạm vi nghiên cứu:..........................................................................6 Phần 2: NỘI DUNG................................................................................................7 Chương 1: Tổng quan về Họ vđk dsPic33 và vđk DsPic33FJ12MC202............................................................................7 1. Họ VĐK DsPic.............................................................................................7 2 Trình dịch......................................................................................................7 3. DsPic33FJ12MC202.....................................................................................8 Chương 2: DsPic33FJ12MC202 và các module cơ bản.....................11 1. Cấu hình thạch anh.....................................................................................11 2. Các cổng vào ra I/O....................................................................................13 3. Ngắt ngoài.................................................................................................15 4. Bộ đếm, bộ định thời..................................................................................16 4.1 Bộ định thời/bộ đếm (Timer/Counter) là gì...........................................16 4.2 Bộ định thời/bộ đếm trong dspic33fj12mc202......................................17 5. OutputCompare..........................................................................................25 5.1 Đặc điểm chung.....................................................................................25 5.2 Các thanh ghi liên quan.........................................................................27 5.3 Trạng thái chân đầu ra.....................................................................29 5.4 Cụ thể về chế độ thường sử dụng PWM mode (OCM =110)................29 6. UART, SPI, I2C.........................................................................................32 6.1 UART....................................................................................................32 6.2 SPI.........................................................................................................35 6.3 I2C.........................................................................................................38 7. ADC...........................................................................................................40 7.1 Đặc điểm chung.....................................................................................41 7.2 Các thanh ghi liên quan.........................................................................42 Chương 3: Ứng dụng lập trình và mô phỏng với các ngoại vi...........48 1. Mở rộng ngõ ra với 74HC595.....................................................................48 2. Giao tiếp với bàn phím ma trận..................................................................50 2.1 Kỹ thuật quét phím................................................................................50 2.2 Kỹ thuật đảo dây...................................................................................52 3. Giao tiếp led 7 đoạn....................................................................................54 4. Giao tiếp Lcd 16x2 qua PCF8574...............................................................58 5. Giao tiếp EEPROM25LC256 qua SPI........................................................61 6. Giao tiếp với led Matrix..............................................................................66 Phần 3: KẾT LUẬN..............................................................................................70 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà LỜI MỞ ĐẦU Ngày nay đại đa số các lĩnh vực sản xuất, điều khiển, giám sát, đo lường… đều được trang bị hệ thống tự động hóa. Một trong số vi mạch được sử dụng đó là kỹ thuật vi điều khiển. Nhờ tính năng ưu việt của bộ vi điều khiển như: khả năng lập trình phù hợp với thiết kế nhỏ và lớn cũ như giao tiếp với các thiết bị ngoại vi và máy tính đã đem lại sự hoàn hảo, độ chính xác và tính mềm dẻo cao thông qua giao tiếp giữa người và máy. Vi điều khiển quản lý và điều khiển hoạt động của hệ thống qua phần mềm, nhờ vậy mà ta có thể mở rộng và thay đổi hoạt động một cách dễ dàng bằng cách thay đổi một số thông số của chương trình. Vi điều khiển hoạt động theo chương trình đã nạp sẵn, đọc các tín hiệu từ bên ngoài đưa vào sau đó lưu trữ và xử lý. Trên cơ sở đó đưa ra thông báo, tín hiệu điều khiển các thiết bị bên ngoài hoạt động theo đúng thông số và yêu cầu của hệ thống. Ngoài ra, vi điều khiển cũng có mặt trong các sản phẩm công nghiệp và tiêu dùng như: lò vi ba, lò sưởi, máy giặt, hệ thống đèn giao thông… và trong nhiều thiết bị công nghiệp khác. Vậy trong đồ án lần này chúng em quyết định chọn đề tài tìm hiểu dòng vi điều DsPIC cụ thể là DsPIC33fj12mc202 để hiểu được cấu tạo, nguyên lý hoạt động va ứng dụng của một con vi điều điều khiển cụ thể. Đồ án gồm các phần: Lời nói đầu Phần I: Tổng quan đề tài Phần II: Nội dung Chương 1: Tổng quan về Họ vđk dsPic33 và vđk DsPic33FJ12MC202 Chương 2: DsPic33FJ12MC202 và các module cơ bản 3 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Chương 3: Ứng dụng lập trình và mô phỏng với các ngoại vi Phần III: Kết luận Tài liệu tham khảo Chúng em xin cảm ơn thầy Vũ Vân Hà đã hướng dẫn và cho phép chúng em được thực hiện đề tài này trong đồ án 2. Với khoảng thời gian có hạn và kiến thức còn hạn chế nên quá trình tìm hiểu còn nhiều thiết sót mong thầy nhận xét và góp ý để kiến thức của chúng em được hoàn thiện hơn! Chúng em xin chân thành cảm ơn! 4 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Phần I: TỔNG QUAN ĐỀ TÀI 1. Lý do chọn đề tài: Ngày nay khoa học CN phát triển nhu cầu của con người ngày càng cao. Việc nghiên cứu khoa học ngày càng được đầu tư để đáp ứng nhu cầu đó, các ngành công nghệ kỹ thuật điện tử đã có sự phát triển vượt bậc đưa khoa học vào kỷ nguyên mới. Kỹ thuật vi xử lý vi điều khiển là một ứng dụng lớn của khoa học kỹ thuật vào cuộc sống phục vụ trực tiếp cho con người. Ví dụ: Lập trình cho vi xử lý vi điều khiển điều khiển mạch đèn giao thông, hệ thống quản lý mạng, các thiết bị điện tử dân dụng… Ở nhóm ngành Điện tử dân dụng hay thiết bị lập trình nhúng thì vi xử lý vi điều khiển đã thâm nhập khá nhiều vào lĩnh vực này. Để trang bị kiến thức về vi xử lí thì bắt đầu với những vi điều khiển có các module ngoại vi cơ bản, hiểu được cấu trúc phần cứng, lập trình trên thanh ghi là nền tảng để tiếp cận với các cấu trúc vi điều khiển phức tạp và có khả năng mạnh mẽ. Do đó chúng em chọn vi điều khiển họ DsPic33 là một trong những dòng vi điều khiển phù hợp với nghiên cứu của sinh viên và cũng ứng dụng rất nhiều trong công nghiệp cũng như cuộc sống. 2. Mục đích: Hiểu được cấu trúc của họ vi điều khiển DsPic33 nói chung và vi điều khiển dsPic33fj12mc202 nói riêng. Biết cách lập trình dsPic trên phần mềm MpLAP của Microchip, giao tiếp vi điều khiển với các ngoại vi cơ bản. 5 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà 3. Đối tượng nghiên cứu: Vi điều khiển DsPic33FJ12MC202. Phần mềm MpLAB IDE. 4. Phạm vi nghiên cứu: Phạm vi của đề tài dừng ở mức tìm hiểu và mô phỏng trên các phần mềm hỗ trợ, Hiểu và phần nào có kiến thức nền tảng để áp dụng vào thực tế sau này. 6 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Phần 2: NỘI DUNG Chương 1: Tổng quan về Họ vđk dsPic33 và vđk DsPic33FJ12MC202 1. Họ VĐK DsPic Họ VĐK PIC và dsPic do hãng Microchip chế tạo và sản xuât với công nghệ hiện đại, phù hợp cho các ứng dụng đơn giản đến phức tạp. Đặc biệt ngoài ngôn ngữ lập trình assembly như các MCU khác, người dùng có thể lập trình PIC trên ngôn ngữ C quen thuộc thông qua các phần mềm hỗ trợ. Cơ bản về dsPIC, chỉ xét riêng phần vi điều khiển, dsPIC giống như PIC24, là các vi điều khiển 16-bit, dựa trên kiến trúc Harvard sửa đổi, với tập lệnh rút gọn (như vậy dsPIC và PIC24 cũng thuộc loại RISC: Reduced Instruction Set Computer). dsPIC hiện nay gồm có hai dòng: dsPIC30F và dsPIC33F. DsPIC là một họ vi điều khiển số (Digital Signal Controller) 16-bit. Sự khác biệt của dsPIC so với các vi điều khiển khác là dsPIC được tích hợp các công cụ xử lý tín hiệu số. Tuy mới ra đời (từ năm 2005) nhưng dsPIC đã nhanh chóng chiếm được thị phần lớn trong thị trường chip trên thế giới cũng như tại Việt Nam bởi chip dsPIC có tốc độ xử lý cao, trên phiến tích hợp các module chức năng phù hợp với nhiều ứng dụng khác nhau, đồng thời giá thành của dsPIC tương đối thấp. Những yếu tố đó cho phép thực hiện các dự án trên dsPIC rất hiệu quả. 2 Trình dịch Ngôn ngữ lập trình cho dsPIC có hai loại cơ bản là ngôn ngữ ASM và ngôn ngữ C. Lập trình trên ASM cho phép tạo ra mã gọn nhẹ, tốc độ thực thi nhanh. Tuy nhiên, nhược điểm của ngôn ngữ ASM là trình bày phức tạp, khó khăn cho việc thực hiện các giải thuật tính toán đối với người lập trình không chuyên. Trong khi đó ngôn ngữ C với cấu trúc rõ ràng, khả năng module hóa cao, thực hiện thuật toán một cách trực quan sáng sủa đã thực sự trở thành một ngôn ngữ lý tưởng cho lập trình hệ nhúng. 7 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Hiện nay trình biên dịch sử dụng ngôn ngữ C cho dsPIC được nhiều hãng cung cấp, như MikroC của MikroElectronika, MPLAB C30 của Microchip, CCS của CCS Inc... Ngoài hai ngôn ngữ căn bản ASM và C ở trên, lập trình tạo mã cho dsPIC còn có thể thực hiện theo dạng sơ đồ khối chức năng thông qua thư viện Embedded Target for Microchip dsPIC của MATLAB & SIMULINK. Cũng giống như các thư viện Target for C6000/C2000, Target for Infi neon C166 trong MATLAB, thư viện Embedded Target for Microchip dsPIC cung cấp các sơ đồ khối chức năng trên chip như ADC, PWM, UART... cho phép người lập trình sử dụng sơ đồ khối SIMULINK để thực hiện các nội dung lập trình cho dsPIC. Trong những trình biên dịch kể trên, MPLAB C30 là trình biên dịch do chính hãng Microchip cung cấp. Với trình biên dịch MPLAB C30, người lập trình sẽ nắm vững được tổ chức phần cứng và phần mềm trên hệ nhúng dsPIC từ đó có thể phát triển những firmware riêng cho dự án của mình hoặc sử dụng những firmware do chính hãng cung cấp. 3. DsPic33FJ12MC202 Đặc điểm chính: Hình 1.1: Xác minh sản phẩm 8 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Thuộc dòng dsPic33  FJ: flash program memory 3.3V  MC2: motor control family  Bộ nhớ chương trình 12kB  02: pin count 28Pin  E: range -40° C to +125° C (Extended) Bảng 1.1: Các module của dsPic33fj12mc202 Đặc trưng khác:  Tốc độ CPU tối đa: 40 MIPS  Dung lượng RAM: 1 Kbytes  Phạm vi điện áp hoạt động: 3,0V đến 3,6V  Có 21 chân I/O  Điện áp chân đầu ra: từ 3,0V đến 3,6V (tối đa 5V chế độ open drain)  Dòng điện cho phép trên tất cả các chân: 4mA 9 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Chương 2: DsPic33FJ12MC202 và các module cơ bản 1. Cấu hình thạch anh DsPic33 có 4 nguồn dao động: POSC, FRC, LPRC, SOSC 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) Hình 2.1: sơ đồ khối dao động 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, dsPIC33 cho phép dao động FOSC tới 80MHz và chạy ở tối đa 40MIPS. Như vậy: tần số xung lệnh Fcy = Fosc/2, với Fosc là xung 10 Báo cáo đồồ án 2 nhịp GVHD: TS. Vũ Vân Hà sau PLL. Hình 2.2: biểu đồ thời gian xung lệnh Việc cấu hình bộ nhân chia PLL để đạt được tần số mong muốn cần thực hiện theo nguyên tắc sơ đồ sau: HÌnh 2.3: Sơ đồ bộ PLL 11 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Trong đó: PLLDIV, PLLPRE, PLLPOST là các nhóm bít nằm trong 2 thanh ghi CLKDIV, PLLFBD, Fin = Fosc. Lưu ý:  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. Giá trị Fcy = Fpllo được tính như sau: VD: khởi tạo nguồn dao động sử dụng thạch anh ngoài là 8Mhz, tạo Fcy = 40Mhz Lựa chọn nguồn động được trình MPLAB hỗ trợ cấu hình trên giao diện Tính toán bộ PLL: 2. Các cổng vào ra I/O 12 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Tất cả các chân của thiết bị (ngoại trừ VDD, VSS, MCLR và OSC1/CLKI, AVDD, AVSS) được chia sẻ giữa các thiết bị ngoại vi và cổng I/O song song (21pin). Hình 2.4: Sơ đồ cấu trúc cổng vào ra Tất cả các pin đều có 3 thanh ghi liên kết trực tiếp với chúng nếu là chức năng số (digital).  TRIS register (TRISx) xác định chân nào là 1 chân input hay chân output: nếu bit nào trong thanh ghi bằng 0 thì pin đó là output, bằng 1 thì là input.  LAT register (LATx): ghi giá trị ra output 13 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà  PORT register (PORTx): đọc giá trị từ input x = A hoặc B Điện trở trong PULLUP: tương ứng với các chân có chức năng Input Change Notification nằm trong 2 thanh ghi CNPU1 và CNPU2 tương ứng với 21 tín hiệu CNx. Ngoài ra DsPic33f còn hỗ trợ chế độ đầu ra Open-drain (để hở) ở một số pin. Chế độ này được điều khiển bởi thanh ghi ODCx được liên kết với mỗi Port. Cho phép điện áp ra cao hơn VDD bằng việc kéo lên nguồn 5V qua điện trở ngoài. Cấu hình chân Analog: các chân có chức năng ANx (x = 0  5 tương ứng với 6 kênh đầu vào tương tự) được cấu hình bởi thanh ghi AD1CFGL có giá trị mặc định ban đầu là 0x0000, sẽ là ở chế độ analog. Và khi đọc giá trị trong thanh ghi PORT sẽ bằng 0. VD: khởi tạo chân RB1 làm output, có điện trở kéo bên trong. _TRISB1 = 0; //output _CN4PUE = 1; //điện trở pullup _LATB1 = 1; //xuất mức 1. 3. Ngắt ngoài Có 3 ngắt ngoài là INT0, INT1, INT2. Trong đó INT0 mặc định là chân RB7. INT1 và INT2 có thể lựa chọn chân thông qua cấu hình thanh ghi RPINRx. Các bước cấu hình ngắt ngoài:  Chọn chân ngắt ngoài 14 Báo cáo đồồ án 2  Chọn bảng vector ngắt GVHD: TS. Vũ Vân Hà //thanh ghi INTCONx  Chọn ngắt theo sườn lên hay sườn xuống //thanh ghi INTCONx  Chọn mức ưu tiên ngắt //thanh ghi IPC0  Kích hoạt ngắt ngoài //thanh ghi IECOx Chương trình phục vụ ngắt:  Xóa cờ ngắt // thanh ghi IFS0x  Thực hiện chương trình phục vụ ngắt VD: tạo ngắt ngoài INT0 theo sườn xuống, chương trình phục vụ ngắt đảo trạng thái chân RB1 4. Bộ đếm, bộ định thời 4.1 Bộ định thời/bộ đếm (Timer/Counter) là gì Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản: đếm các xung nhịp. Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trị của bộ đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm đi 01 đơn vị (trong chế độ đếm lùi/đếm xuống). 15 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Xung nhịp đưa vào đếm có thể là một trong hai loại: Xung nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động bên trong IC và các linh kiện phụ bên ngoài nối với IC. Trong trường hợp sử dụng xung nhịp loại này, người ta gọi là các bộ định thời (timers). Do xung nhịp bên loại này thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá chính xác. Xung nhịp bên ngoài IC: Đó là các tín hiệu logic thay đổi liên tục giữa 02 mức 0-1 và không nhất thiết phải là đều đặn. Trong trường hợp này người ta gọi là các bộ đếm (counters). Ứng dụng phổ biến của các bộ đếm là đếm các sự kiện bên ngoài như đếm các sản phầm chạy trên băng chuyền, đếm xe ra/vào kho bãi. Một khái niệm quan trọng cần phải nói đến là sự kiện “tràn” (overflow). Nó được hiểu là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó có thể biểu diễn và quay trở về giá trị 0. Với bộ đếm 8 bit, giá trị tối đa là 255 (tương đương với FF trong hệ Hexa) và là 65535 (FFFFH) với bộ đếm 16 bit. 4.2 Bộ định thời/bộ đếm trong dspic33fj12mc202 Trong dspic33fj12mc202 (hoặc dspic33fj12mc201) cung cấp 3 bộ đinh thời Timer 16 bit: Timer1, Timer2, Timer3 Cả 3 bộ timer đều có thể hoạt động ở chế độ 16 bit, ngoài ra còn có thể ghép nối timer2 vào 3 để tạo timer23 32 bit * Timer1 Là 1 bộ hẹn giờ 16-bit, có 3 chế độ:  16-bit Timer (chế độ timer)  16-bit Synchronous Counter (chế độ counter đồng bộ)  16-bit Asynchronous Counter (chế độ counter không đồng bộ) Timer1 cũng hỗ trợ các chức năng như: chọn hệ số chia cho xung nhịp đầu vào, chạy trong chế độ sleep hay CPU idle, ngắt timer… 16 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà Hình 2.5: Sơ đồ khối bộ timer1 Theo sơ đồ trên, để hoạt động timer1 cần cấu hình một số bit sau:  Đặt bit TON (= 1) trong thanh ghi T1CON.  Chọn hệ số chia prescale bằng các bit TCKPS <1: 0> trong thanh ghi T1CON.  Đặt chế độ Đồng hồ và Chế độ Ghép bằng cách sử dụng TCS và bit TGATE trong thanh ghi T1CON.  Đặt hoặc xóa bit TSYNC trong T1CON để chọn hoạt động đồng bộ hoặc không đồng bộ.  Đưa giá trị thời gian hẹn giờ hay chu kì vào thanh ghi PR1  Nếu ngắt được yêu cầu, thiết lập cho phép ngắt bit, T1IE. Sử dụng các bit ưu tiên, T1IP <2: 0>, để đặt ưu tiên ngắt 17 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà  Khi hoạt đông giá trị trong thanh ghi TMR1 sẽ đếm tăng từ 0, nếu bằng giá trị trong thanh ghi PR1 thì sẽ set cờ T1IF lên 1, đồng thời reset giá trị trong TMR1.  Người lập trình cần xóa bit T1IF để nhận biết sự thay đổi cho lần tiếp theo, hoặc cho ngắt bit 15 TON: Bật timer1 (bắt đầu đếm) 1 = Bắt đầu Timer 16 bit 0 = Dừng Timer 16 bit bit 14 Chưa dùng: mặc định bằng 0 bit 13 TSIDL: Dừng ở chế độ Idle 1 = Ngừng hoạt động mô-đun khi thiết bị chuyển sang chế độ Idle 0 = Tiếp tục hoạt động mô-đun ở chế độ Idle bit 12-7 Chưa dùng: mặc định bằng 0 bit 6 TGATE: bit Kích hoạt Timer1 Gated Time Accumulation (tich lũy thời gian) Khi TCS = 1: Bit này bị bỏ qua. Khi TCS = 0: 1 = Tích lũy thời gian được kích hoạt 18 Báo cáo đồồ án 2 GVHD: TS. Vũ Vân Hà 0 = tích lũy thời gian không được kich hoạt bit 5-4 TCKPS <1: 0>: Chọn hệ số chia Clock Prescale 11 = 1: 256 10 = 1:64 01 = 1: 8 00 = 1: 1 bit 3 Chưa dùng: mặc định bằng 0 bit 2 TSYNC: chọn Đồng bộ hóa đầu vào với xung ngoài bên ngoài Khi TCS = 1: 1 = Đồng bộ hóa đầu vào đồng hồ bên ngoài 0 = Không đồng bộ hóa đầu vào đồng hồ bên ngoài Khi TCS = 0: Bit này bị bỏ qua. bit 1 TCS: Chọn Nguồn xung nhịp 1 = Đồng hồ bên ngoài từ pin T1CK (sườn lên) 0 = Đồng hồ bên trong (FCY) bit 0 Chưa dùng: mặc định bằng 0 Nếu sử dụng ngắt timer1 thì sẽ cấu hình trong bit T1IE thanh ghi IEC0 và bit T1IF trong thanh ghi IFS0 19
- Xem thêm -