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 14-08-2005, 08:26 PM   #1
minhcuong
Đệ tử 2 túi
 
minhcuong's Avatar
 
Tham gia ngày: Jul 2005
Bài gửi: 26
:
Cool #1: Create dsPIC30F Project

Chào các bạn,

Thread dsPIC mới được nhằm phục vụ anh em làm việc với dsPIC có nơi tập trung bàn luận, hỏi han về nó.

Trong bài đầu tiên này tôi sẽ giới thiệu một số bước cơ bản làm việc với dsPIC30F. Tôi sẽ lấy ví dụ với chip dsPIC30F4011, đây là chip sử dụng chuyên để điều khiển motor, 40pin, có 6 chân PWN và 1 một bộ giải mã Quadrature Encoder. Nó là dạng DIP, rất thích hợp với các bạn sinh viên thí nghiệm trên bread board.

Ngôn ngữ lập trình là MPLAB C30. Các bạn có thể down bạn miễn phí 60 ngày tại www.microchip.com.

Tài liệu tham khảo chủ yếu: "dsPIC30F Family Reference Manual",...

Bước 1: tạo một project trong C30, bước này khá đơn giản, các bạn chỉ việc khởi động MPLAB IDE rồi vào menu Project > Project Wizard, chọn chip dsPIC30F mình đang làm việc, chọn thư mục cho project. Có một số lưu ý sau đây: sau khi tạo xong project, bạn phải thêm Linker Scripts, Library Files và Header Files phù hợp con chip của bạn (vào menu View-Project để xem danh sách các files trong project của bạn). Ví dụ trường hợp của tôi:

- Linker Scripts: support\gld\p30f4011.gld
- Library Files: lib\libp30F4011-coff.a
- Header Files: support\h\p30f4011.h


Bước 2: tạo file c sau đó add vào nhánh Source Files.

Ví dụ:

Code:
#define __dsPIC30F4011__   //Rất quan trọng
#include<p30f4011.h>         //Chứa nhiều định nghĩa thanh nghi, các bit trong thanh nghi

int main (void)
{
   Initialize Your Code Here (ADC, PWM, TIMER, UART, TIMER)....
   while(1)
   {
      Dome Something Here...
   }
   return 0;
}
Bước 3:
Chọn Make All để compile, file kết xuất ra có đuôi là *.cof. File *.cof sẽ được load tự động. Nếu bạn dùng MPLAB ICD2, cấu hình đúng detect được chip thành công, bạn có thể nạp luôn ngay sau lệnh Make All bằng lệnh Programmer > Program.

Các lỗi thường gặp ở phần này
- Liên kết thiếu file Linker Scripts và file library.


Lưu ý: thư viện Peripheral của Microchip viết khá đơn giản, hầu như không đem lại ích thiết thực gì mà chỉ làm chương trình khó debug. Tôi khuyên các bạn chỉ cần đọc kỹ các thanh ghi và sử dụng file header (p30fXXXX.h) là đủ.

-------------------------------------------
Các phần tiếp theo
Phần 2: Oscillator, UART
Phần 3: PWM
Phần 4: ADC
.....
minhcuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-08-2006, 01:04 AM   #2
frank
Nhập môn đệ tử
 
frank's Avatar
 
Tham gia ngày: Nov 2005
Bài gửi: 9
:
Mình mới tập làm quen với C30 để lập trình cho DSPIC6010, nhưng sao mình thử dủng những VD đơn giản của Microchip như là dùng interrupt_timer1 để làm led chớp tắt, hoặc những VD khác mà ko chương trình nào chạy hết, mình nghĩ là do cách thiết đặt chương trìnhh biên dịch, nhưng đã kiễm tra nhiều lần mà ko tìm ra lỗi, mong những người đi trước có nhiều kinh nghiệm hướng dẫn lại dùm

VD chương trình mẫu của Microchip:
Code:
#define __dsPIC30F6010__ 
#include <p30f6010.h> 
#include<timer.h> 
unsigned int timer_value; 
void _ _attribute_ _((_ _interrupt_ _)) _T1Interrupt(void) 
{ 
PORTDbits.RD1 = 1; 	/* turn off LED on RD1 */
WriteTimer1(0);
IFS0bits.T1IF = 0; 	/* Clear Timer interrupt flag */
} 
int main(void) 
{ 
        unsigned int match_value; TRISDbits.TRISD1 = 0; 
        PORTDbits.RD1 = 1; 	/* turn off LED on RD1 */ /* Enable Timer1 Interrupt and Priority to "1" */ 
	ConfigIntTimer1(T1_INT_PRIOR_1 & T1_INT_ON); 
	WriteTimer1(0); 
        match_value = 0xFFF; 
OpenTimer1(T1_ON & T1_GATE_OFF & T1_IDLE_STOP & T1_PS_1_1 & T1_SYNC_EXT_OFF & T1_SOURCE_INT, match_value); 
/* Wait till the timer matches with the period value */ 
	while(1) 
{ 
timer_value = ReadTimer1(); 
if(timer_value >= 0x7FF) 
{ 
PORTDbits.RD1 = 0; /* turn on LED on RD1 */
}
}
CloseTimer1();
}

thay đổi nội dung bởi: namqn, 07-08-2006 lúc 01:24 AM.
frank vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-08-2006, 01:29 AM   #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
Có lẽ bạn chưa từng đọc qua các luồng về các tutorial cho dsPIC của tôi. Tôi vừa post lên tutorial thứ 3 cho dsPIC. Tutorial 1 có lẽ không có ý nghĩa gì với những người học C30, nhưng trong tutorial 2 thì ví dụ đầu tiên chính là chớp tắt một LED bằng Timer 1.

Tôi đã thông báo rằng trong một vài ngày tới tôi sẽ post các phiên bản viết bằng C30 cho các tutorial đó. Bạn hãy chờ thêm một vài ngày nữa sẽ có các ví dụ trong C30 về LED, công tắc, LCD. Vì tôi chỉ chuyển mã nguồn từ ASM30 sang C30, với các chú thích chi tiết, nên sẽ không có tutorial cho các phiên bản viết trong C30.

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 07-08-2006, 05:01 PM   #4
frank
Nhập môn đệ tử
 
frank's Avatar
 
Tham gia ngày: Nov 2005
Bài gửi: 9
:
Mình đã đọc những bài viết của Namqn về dsPIC viết bằng hợp ngữ rồi, Namqn đúng là cao thủ trong việc tìm hiểu dsPIC .Lúc trước mình cũng đã viết thử một vài vd bằng hợp ngữ để sử dụng một số moudle chức năng của dsPIC, nên cũng hiểu đôi chút về cấu tạo các thanh ghi và cách hoạt động rồi . Bây giờ mình đang thử dủng C30 để lập trình cho dsPIC , mình đang tập viết thử những bài tập nhỏ từ Microchip.Vì mình nghĩ đối với các khối lượng lập trìnhh lớn thì dùng C30 sẽ có phần dễ chịu hơn là dùng hợp ngữ.Nhưng ko hiểu tại sao lại gặp phải vấn đề này.Vì vậy post lên cầu cứu mọi người,
frank vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-12-2006, 06:01 PM   #5
phamthaihoa
Đệ tử 3 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 56
:
Trích:
Nguyên văn bởi frank View Post
Mình đã đọc những bài viết của Namqn về dsPIC viết bằng hợp ngữ rồi, Namqn đúng là cao thủ trong việc tìm hiểu dsPIC .
Bác cứ khen con voi nó to thôi

Để bắt đầu với dsPIc, ngày trước em bắt đầu luyện công từ chỗ ni:
http://www.microchip.com/stellent/id...2126&pageId=75

Còn để lập trình với dsPIC, thì bạn có thể xem chỗ ni, tui cũng đã xem qua mấy ví dụ của anh namqn, chắc chắn đại ca Nam cũng đã đọc ở đây
http://www.microchip.com/stellent/id...GE&nodeId=2509
phamthaihoa vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-12-2006, 04:36 PM   #6
kennyha85
Nhập môn đệ tử
 
Tham gia ngày: Nov 2006
Bài gửi: 10
:
Bạn cũng có thể tham khảo những chương trình mẫu có trong trang chủ của microchip, đảm bảo có đầy đủ tính năng mà bạn cần như timer, uart, vv...
kennyha85 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
em mới học PIC, có một Project, nhờ các bác định hướng giúp! chimchichchoe Cơ bản về vi điều khiển và PIC 14 16-11-2006 12:37 PM


Múi giờ GMT. Hiện tại là 08:59 PM.


Đượ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