Bài 2.(MSP430_Basic)Tạo Project,làm
quen với GPIO
Bài này mình sẽ hướng dẫn chi tiết cách tạo 1 project mới
trong CCS để lập trình MSP430.
Trước hết trước khi bắt
đầu các bạn nếu chưa có datasheet của dùng MSP430 thì có thể download tại đây :
Lưu ý Datasheet vẫn luôn
là tài liệu quan trọng nhất khi bạn tiếp cận bất cứ dòng vi điều khiển nào,
nên việc thành thạo tiếng Anh và khả năng đọc Datasheet vẫn là quan trọng
nhất.
Tài liệu được viết cho
MSP430G2553,các chip khác có module khác mã sẽ không sử dụng được thư viện đi
kèm.
Link tải IAR : IAR Embedded Workbench Kickstart - Free 4KB IDE - IAR-KICKSTART - TI Software Folder
1.Tạo Project
Video hướng dẫn sử dụng :
1.Tạo Project
Video hướng dẫn sử dụng :
Các thắc mắc và thảo luận về các vấn đề về soft này, các thành viên có thể thảo luận ở dưới
Tạo file hex tong IAR- Lập trình MSP430
Để có thể mô phỏng 1 mạch điện có sự tham gia của MCU MSP430 trong Proteus hoặc 1 phần mềm mô phỏng mạch điện nào đó thì chương trình để nạp vào cho MCU sẽ là từ file hex.
File hex (trong trường hợp này) là file chương trình đã được biên dịch từ 1 mã nguồn bởi 1 trình biên dịch, sau đó có thể nạp trực tiếp vào MCU.
(Muốn chia sẻ Project mà không muốn chia sẻ code thì cũng có thể dùng cách này. :D)
Để có thể tạo ra được file hex trong IAR thì cần phải cấu hình những thứ sau:
1. Tạo Project mới.
2. Cấu hình cho Project này:
Tại mục General Options -> tab Output -> Output File: chọn Executable
Tại mục Linker :
– Điền tên file HEX sẽ tạo ra trong ô Output file, tick chọn Override default.
– Tick chọn Other, Output format: intel-standard
Tại mục Debugger -> Driver: Simulator
Để chuyển về debug qua KIT LaunchPad thì chuyển về chọn FET-Debugger.
File HEX xuất ra tại:
“IAR Project\Project-Name\Debug\Exe\*.hex”
2.Lý thuyết:
Bit = 1: Ngã vào mức cao
3.Bắt đầu chương trình đầu tiên
- Thanh ghi dữ liệu vào PxIN :
Mỗi Bit trong mỗi thanh ghi PxIN phản ảnh giá trị của tín hiệu vào ở chân I/O tương ứng khi các chân này được thiết lập chức năng I/O.Bit = 0: Ngã vào mức thấp
Bit = 1: Ngã vào mức cao
-Thanh ghi dữ liệu xuất PxOUT:
Mỗi Bit trong mỗi thanh ghi PxOUT là giá trị xuất ra trên các chân I/O tương ứng khi khi
các chân này được thiết lập chức năng I/O. Xuất dữ liệu có hướng và việc tăng giảm điện
trở thì không được phép.
Bit = 0: Ngã ra mức thấp
Bit = 1: Ngã ra mức cao
Nếu các chân điều khiển tăng-giảm điện trở bị mất hiệu lực thì các Bit tương ứng trong
thanh ghi PxOUT có tác dụng lựa chọn việc tăng giảm điện trở.
Bit = 0: Giảm xuống.
Bit = 1: Tăng lên
- Các thanh ghi định hướng PxDIR
Mỗi Bit trong mỗi thanh ghi PxDIR lựa chọn định hướng của chân I/O tương ứng, bất
chấp chức năng đã được chọn của chân. Những Bit PxDIR cho những chân I/O được lựa
chọn cho những chức năng khác phải được thiết lập theo yêu cầu của chức năng đó.
Bit = 0: Những chân của Port được định hướng là ngã vào.
Bit = 1: Những chân của Port được định hướng là ngã ra.
- Thanh ghi cho phép tăng/giảm điện trở PxREN
Mỗi Bit của mỗi thanh ghi PxREN dùng để cho phép hoặc không cho phép sự tăng/giảm
điện trở của các chân I/O tương ứng. Những Bit tương ứng của thanh ghi PxOUT được
chọn nếu chân được tăng lên hoặc giảm xuống.
Bit = 0: Tăng/giảm điện trở không được cho phép.
Bit = 1: Tăng/giảm điện trở được cho phép.
- Thanh ghi chức năng lựa chọn PxSEL và PxSEL2
Các chân này được đa hợp với các các chức năng của các mô đun ngoại vi khác. Mỗi Bit
PxSEL và PxSEL2 được sử dụng cho việc lựa chọn chức năng của các chân: Chức năng
I/O xuất nhập dữ liệu hoặc chức năng mô đun giao tiếp ngoai vi.
3.Bắt đầu chương trình đầu tiên
Lưu ý là lập trình vi điều khiển hầu hết đều sử dụng ngôn ngữ lập trình C,vì vậy nhất thiết các bạn cần phải biết các kiến thức căn bản về C và lập trình nói chung trước khi bắt đầu,các bạn có thể đọc sách của tác giả Quách Tuấn Ngọc(Cơ bản) hoặc Phạm Văn Ất (Có nâng cao).
Một chú ý nữa là khi dùng chip nào thì các bạn nên nhanh chóng vào trang chủ của TI để download datasheet của MCU đó và họ chip đó.
Một chú ý nữa là khi dùng chip nào thì các bạn nên nhanh chóng vào trang chủ của TI để download datasheet của MCU đó và họ chip đó.
Trước hết chúng ta cần biết các thành phần của kit Launchpad:
Bài này chúng ta sẽ chỉ sử dụng đến nút bấm P1.3,đèn Led nối với chân P1.0 và P1.6,các bạn có thể luyện tập thêm bằng các nối chân ra board trắng.
BT2.1:Nháy led chân P1.0 ,tần số 1Hz,Chip sử dụng là MSP430G2553
#include "msp430g2553.h"
BT2.1:Nháy led chân P1.0 ,tần số 1Hz,Chip sử dụng là MSP430G2553
#include "msp430g2553.h"
/* Khai báo loại chip đang dùng
* Thư viện này chứa các
khai báo tên #define cho địa
* chỉ các thanh ghi
*/
void main(void)
{
WDTCTL = WDTPW |
WDTHOLD; //Stop Watchdog
BCSCTL1 =
CALBC1_1MHZ; //2 thanh ghi cài đặt tần số
hoạt động
DCOCTL
= CALDCO_1MHZ; //Ở đây là 1 Mhz,tức là 1 xung nhịp ~1us
P1DIR=0x01;
//Thanh ghi quy định chức năng input,output
//Hoac
P1DIR=BIT0; // 1 là
output
while(1)
{
P1OUT^=BIT0; //Phép xor
bit
_delay_cycles(500000);//Hàm đặt giá trị trễ ,
//tương đương với gần
đúng số chu kỳ xung nhịp,tức là 0.5s
}
}
Nhấn Ctrl+B : Kiểm tra lỗi code
Nhấn F11 để đổ code xuống Chip và debug
Mẹo nhỏ là khi viết các thanh ghi hoặc các hàm,nhấn Ctrl+Space để xổ danh sách gợi ý,giúp code nhanh hơn và tránh nhầm lẫn.Viết P1 và Ctrl+Space ,các bạn có thể thấy toàn bộ các thanh nghi điều khiển việc vào ra dữ liệu của Cổng P1.
Download sách này về để hiểu rõ nhất về các thanh ghi vào ra dữ liệu,trang 31(GPIO) : Tài liệu lập trình MSP430(Tiếng Việt)
Các bạn nếu muốn tìm hiểu rõ hơn về các mặt nạ,file,hàm... có thể bôi đen đối tượng ->Chuột phải chọn Open Declaration hoặc F3,như thế này chẳng hạn.
Mẹo nhỏ là khi viết các thanh ghi hoặc các hàm,nhấn Ctrl+Space để xổ danh sách gợi ý,giúp code nhanh hơn và tránh nhầm lẫn.Viết P1 và Ctrl+Space ,các bạn có thể thấy toàn bộ các thanh nghi điều khiển việc vào ra dữ liệu của Cổng P1.
Download sách này về để hiểu rõ nhất về các thanh ghi vào ra dữ liệu,trang 31(GPIO) : Tài liệu lập trình MSP430(Tiếng Việt)
Các bạn nếu muốn tìm hiểu rõ hơn về các mặt nạ,file,hàm... có thể bôi đen đối tượng ->Chuột phải chọn Open Declaration hoặc F3,như thế này chẳng hạn.
BT2.2.Nhấn nút P1.3 bật đènP1.0,đèn P1.6 nháy liên tục
Các bạn cần hết sức chú ý vì MSP có khá nhiều thanh ghi GPIO và tạo ra rất nhiều kiểu hoạt động,dưới đây là kiểu lập trình điện trở trong kéo lên cho nút nhấn,giúp chống nhiễu điện từ tay chúng ta.
Các bạn cần hết sức chú ý vì MSP có khá nhiều thanh ghi GPIO và tạo ra rất nhiều kiểu hoạt động,dưới đây là kiểu lập trình điện trở trong kéo lên cho nút nhấn,giúp chống nhiễu điện từ tay chúng ta.
#include "msp430g2553.h"
/* Khai báo loại chip đang dùng
* Thư viện này chứa các khai báo tên #define cho địa
* chỉ các thanh ghi
*/
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; //Stop Watchdog
BCSCTL1 = CALBC1_1MHZ; //2 thanh ghi cài đặt tần số hoạt động
DCOCTL = CALDCO_1MHZ; //Ở đây là 1 Mhz
P1DIR|=BIT0+BIT6; //Kiểu viết mặt nạ chỉ kéo BIT0 ->1
//Cài đặt cấu hình ngắt ngoài cho P1.3
//Như trong bài GPIO,chúng ta phải cài đặt chống nhiễu cho nút bấm P1.3
//Vì sự thay đổi của điện áp P1.3 có thể vô tình tạo ra ngắt
P1DIR&=~(BIT3); //Chọn nhập
P1REN|=BIT3; //Cho phép trở treo
P1OUT|=BIT3; //Trở treo lên nguồn
while(1)
{
P1OUT^=BIT6; //Phép xor bit
_delay_cycles(1000000); //Hàm đặt giá trị trễ ,
//tương đương với gần đúng số chu kỳ xung nhịp
if((P1IN&BIT3)==0)P1OUT|=BIT0;
else P1OUT&=~BIT0;
}
}
Bài tiếp theo : Bài 3.(MSP430_Basic) UART
0 nhận xét :
Post a Comment
Note: Only a member of this blog may post a comment.