Hướng dẫn [TUT 2] Dành cho các bạn còn bỡ ngỡ về MSP430

Thảo luận trong 'Họ MSP430'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. Tran luong

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    -----------------------------------Bài viết của Tran luong----------------------------
    Thân chào các bạn. Hôm nay, để tiếp tục chuỗi bài : "Dành cho các bạn còn bỡ ngỡ về MSP430", mình xin tiếp tục mang đến cho các bạn còn bỡ ngỡ về MSP430 một số thủ thuật sau trong khi viết code trên phần mềm biên dịch IAR.

    - Trước hết xin hướng dẫn các bạn cài phần mềm IAR phiên bản mới nhất từ TI có tên file là : "MSP430-EW430-6102-Autorun" chỉ cần chạy file setup và cài chứ chưa cần điền key như các bản trước đây. Sau khi cài xong chúng ta sẽ cho em nó uống thuốc, mình có xin được một file thuốc cho em nó trong phần đính kèm bên dưới. Các bạn chỉ cần chạy lên và bấm Patch, sau đó tìm theo đường chỉ dẫn trong thư mục cài đặt IAR ở ổ đĩa các bạn cài đặt là sẽ hết bệnh cho em nó.
    Link IAR : http://supp.iar.com/Download/SW/?item=EW430-EVAL
    a.
    v.
    --- Cách thuốc bằng phần mềm đính kèm bên dưới.

    - Kế tiếp mình sẽ liệt kê một số thủ thuật trong khi code cho MSP430, từ đơn giản nhất đến phức tạp nhất các bạn để ý nhé:
    1. Hàm tự định nghĩa bit cho MSP430:
    --- Lý do phải có hàm này vì MSP430 không hỗ trợ kiểm tra bit như các VĐK khác, do đó ta cần phải tự code lấy để tiện sử dụng sau này, ví dụ như bạn muốn kiểm tra Bit 0 của P0 bạn phải làm như thế nào???
    Vi điểu khiển MSP430 thường truy xuất Byte, muốn truy xuất bit ta phải định nghĩa lại vùng nhớ của nó.
    Sau bước này bạn sẽ làm được.!
    Code như sau:

    union reg { // Khai báo 1 byte với 8 bit

    struct bit { // Khai báo bit trong 1 byte

    unsigned char b0:1; // Khai báo bit thứ 1

    unsigned char b1:1; // Khai báo bit thứ 2

    unsigned char b2:1; // Khai báo bit thứ 3

    unsigned char b3:1; // Khai báo bit thứ 4

    unsigned char b4:1; // Khai báo bit thứ 5

    unsigned char b5:1; // Khai báo bit thứ 6

    unsigned char b6:1; // Khai báo bit thứ 7

    unsigned char b7:1; // Khai báo bit thứ 8

    }_BIT; // Tên của bit trong byte

    unsigned char _BYTE; // Tên của byte

    };

    Ví dụ: Để khai báo chân xuất / nhập của Port 2 là:

    union reg* _P2_DIRECT = (union reg*)0x2A ; // Định nghĩa vùng nhớ 0x2A là _P2_DIRECT, dùng điều khiển Port 2 là xuất hay nhập.

    union reg* _P2_OUT = (union reg*)0x29 ; // Định nghĩa vùng nhớ 0x29 là _P2_OUT, dùng điều khiển các bit xuất của Port 2.

    union reg* _P2_IN = (union reg*)0x28 ; // Định nghĩa vùng nhớ 0x28 là _P2_IN, dùng điều khiển các bit nhập của Port 2.
    --- Còn nữa, ......................
     

    Các file đính kèm:

    Last edited: 17/5/14
    congqcbcdt, dovanhieu, Tuane067 others thích bài này.
  2. MI NU

    MI NU Sinh viên cao đẳng

    Truy xuất thanh ghi này hình như trong thư viên cua IAR có đinh nghia săn mà anh? còn cách khai báo 1 bit đê gán biến vào nó thì làm thế nào a? Chi giúp e với...
     
    Tran luong thích bài này.
  3. Tran luong

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    Chào em!
    #define bit_a _P2_OUT->_BIT.b0
    -- Lệnh này định nghĩa bit_a là P2.0
    Không phải ngẫu nhiên phải định nghĩa như vậy đâu, tại vì muốn truy xuất bit nên ta mới phải code thêm cái này!
     
    MI NU thích bài này.
  4. croket_2512

    croket_2512 Kỹ sư

    Link tải hết hạn rồi nhé! Còn patch ổn không? Patch của 5.6 lại chạy cho 6.102 được không?
     
    Tran luong thích bài này.
  5. MI NU

    MI NU Sinh viên cao đẳng

    e cam on anh! dang dung cai em can. hehe
     
    Tran luong thích bài này.
  6. Tran luong

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    Mình đã cài và đang dùng đây. Patch OK nhé.
     
    croket_2512 thích bài này.
  7. Tran luong

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    continues................
    2. Hàm xuất nhập set/clr bit cho MSP430:
    Với một bit trong một thanh ghi , ta có thể set chúng lên mức 1, hay clr chúng về 0 bằng cách sau:
    - Xét Thanh ghi định hướng Port 1: P1DIR, với chức năng set từng chân của Port 1 là ngõ vào hay ngõ ra. Ví dụ: Bạn muốn chân P1.0 là chân ngõ vào thì bạn dùng lệnh: P1DIR |= BIT0 hay theo như phần trước ta cũng có cách khai báo tương tự là: _P1_DIR->_BIT.b0 = 1. Ngược lại, bạn muốn chân này là chân ngõ vào, ta cần clr bit0 trong thanh ghi định hướng P1DIR, dùng một trong 2 lệnh: P1DIR &=~ BIT0 hay _P1_DIR->_BIT.b0 = 0.
    Đến đây, việc truy xuất bit với các bạn đã dễ dàng hơn rồi đúng không nào?

    3. Các hàm hay dùng trong khi code với MSP430?
    Mình xin đề cập đến một số hàm cơ bản sau:

    - Hàm 1: If(điều kiện) { lệnh} --> Nếu điều kiện đúng thì thực hiện lệnh, sai thì bỏ qua không làm gì cả!

    - Hàm 2: If(điều kiện 1) { lệnh 1} Else If(điều kiện 2) { lệnh 2}....Else(điều kiện n) { lệnh n} --> Nếu điều kiện 1 đúng thì thực hiện lệnh 1 rồi thoát khỏi lệnh if này, sai thì tiếp tục kiểm tra điều kiện 2 để thực hiện lệnh 2 nếu điều kiện 2 đúng thì làm lệnh 2 rồi thoát khỏi lệnh if này, cứ tiếp tục đến lệnh cuối cùng nếu các lệnh bên trên không có cái nào đúng thì bỏ qua không làm gì cả!

    - Hàm 3: Switch-Case - đây là hàm lựa chọn theo các trường hợp định trước của biến đầu vào mà xuất ra các giá trị cho các biến cần thay đổi theo các biến đầu vào ấy.

    switch( tên biến đầu vào cần kiểm tra)
    {
    case exp1:// biến đầu vào bằng exp1 thì làm lệnh kế dưới rồi thoát luôn!
    Statements;
    break;
    case exp2:
    Statements;
    break;
    case exp3:
    Statements;
    break;
    default:
    Statements;


    }
    ...............Còn nữa!

     
  8. croket_2512

    croket_2512 Kỹ sư

    Đúng là thế thật, khi vào License Manager thì thấy vẫn chưa crack, nhưng khi Download file hex xuống thì chạy ngon lành! Thanks Lượng!
     
    Tran luong thích bài này.
  9. Tran luong

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    Chúc mừng croket_2512 !
     
  10. Tran luong

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    continues................các thủ thuật tiếp theo:
    4.Cách hàm khai báo thư viện ban đầu mỗi hàm: các bạn lưu ý phải bắt đầu bằng một trong 2 cách
    #include <ten thu vien .h> --> Thư viện này nằm trong ổ đĩa C khi ta cài trình biên dịch cho MSP430.
    #include "ten thu vien .h" --> Thư viện này nằm trong ở ổ đĩa cùng với hàm ta đang code cho MSP430.
    Ví dụ:

    #include<msp430g2553.h>
    #include "uart.h"


    5. Khi code hàm void main(void) cho MSP430, các bạn cần lưu ý , nên thêm các dòng lệnh sau vào:
    Nếu không cần độ chính xác cao, chỉ giao tiếp ngoại vi là đèn led, lcd, led 7 đoạn,... ta không cần phải gắn thêm thạch anh ngoại làm gì, thay vào đó ta cho MSP430 chạy với dao động nội!
    // Stop watchdog timer to prevent time out reset
    WDTCTL = WDTPW + WDTHOLD; // Dừng bộ định thời watchdog timer để thoát khỏi sự reset
    BCSCTL1 = CALBC1_1MHZ; // Cấu hình sử dụng bộ dao động nội bên trong chip MSP430
    DCOCTL = CALDCO_1MHZ; // Loại nào cũng có dao động nội, khi đó không cần gắn thêm thạch anh ngoại nhé!

    ...............Còn nữa!
     

Chia sẻ trang này