PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit > Câu hỏi dsPIC thường gặp

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

Câu hỏi dsPIC thường gặp Những vấn đề liên quan tới dsPIC30 và dsPIC33 và PIC24

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 31-10-2007, 02:40 PM   #1
sandro_bk
Đệ tử 4 túi
 
sandro_bk's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 66
:
khai báo ngắt trong C30 như thế nào?

tôi mới tập viết chương trình bằng C30,đang làm về ngắt,tôi thấy bác Nam viết chương trình mẩu có xài ngắt timer1,ngắt ADC nhưng tôi dịch thử mấy file này thì chương trình nó warning là
PSV model not specified for '_ADCInterrupt' đối với ngắt ADC,mấy cái ngắt này khai báo ở đâu và làm sao chương trình nó biết chương trình con này "void _ISR _ADCInterrupt(void)" là phục vụ ngắt ADC,tiện đây cho hỏi chưong trình con phục vụ ngắt PWM là "void _ISR _PWMInterrupt(void)" phải ko? trong chương trình tôi đã add đủ 30f4011.h và 30f4011.gld
sandro_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-10-2007, 05:40 PM   #2
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
Trích:
Nguyên văn bởi sandro_bk View Post
tôi mới tập viết chương trình bằng C30,đang làm về ngắt,tôi thấy bác Nam viết chương trình mẩu có xài ngắt timer1,ngắt ADC nhưng tôi dịch thử mấy file này thì chương trình nó warning là
PSV model not specified for '_ADCInterrupt' đối với ngắt ADC,mấy cái ngắt này khai báo ở đâu và làm sao chương trình nó biết chương trình con này "void _ISR _ADCInterrupt(void)" là phục vụ ngắt ADC,tiện đây cho hỏi chưong trình con phục vụ ngắt PWM là "void _ISR _PWMInterrupt(void)" phải ko? trong chương trình tôi đã add đủ 30f4011.h và 30f4011.gld
- Về PSV, các phiên bản 3.x về sau của C30 đã bổ sung thêm thuộc tính liên quan đến PSV cho dẫn hướng liên quan đến khai báo ngắt. Do đó, lấy ví dụ khai báo ngắt Timer 1 trong tập tin 'Vidu2-1.c' của tôi là
Code:
void _ISR _T1Interrupt(void)
cần được chuyển thành
Code:
void _ISR_PSV _T1Interrupt(void)
_ISR đã được định nghĩa sẵn trong C30, còn _ISR_PSV được tôi định nghĩa như sau:
Code:
#define _ISR_PSV __attribute__((interrupt, auto_psv))
- Về việc làm sao trình biên dịch biết chương trình con nào trình phục vụ ngắt cho ngắt gì, bạn mở tập tin '30f4011.gld', và kéo xuống đến phần 'Primary Interrupt Vector Table', bạn sẽ thấy các tên được định nghĩa sẵn (quy ước trước) cho các trình phục vụ ngắt.

- Chẳng hạn, ngắt cho PWM nên được đặt tên là '_PWMInterrupt'. Và bạn định nghĩa nó theo cú pháp mới mà tôi đã nói ở trên, nếu bạn đang dùng C30 phiên bản 3.x trở lên, nghĩa là
Code:
void _ISR_PSV _T1Interrupt(void)
với _ISR_PSV được định nghĩa như trên trong code của bạ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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-10-2007, 10:52 PM   #3
sandro_bk
Đệ tử 4 túi
 
sandro_bk's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 66
:
cảm ơn bác Nam đã giải thích,em đã thử dịch chương trình ví dụ 5.1 của bác,em bỏ phần biến đổi ADC chỉ xuất PWM giá trị cố định nhưng ko hiểu sao các chân PWM3H và PWM3L ko chạy,còn các chân khác xuất bình thường,có khi nào các chân I/O này đã hư, hỏi thêm bác về phần thạch anh,con 30f4011 cho chạy đến 30 MIPS,em xài thạch anh 8Mhz cho chạy chế độ XT PLL16 tính ra là over clock nhưng nó vẫn cứ chạy bình thường ko biết nếu chạy như vậy có đảm bảo pic làm việc đúng ko?

p/s :em có sửa lại cho nó chạy chế độ complementary

thay đổi nội dung bởi: sandro_bk, 31-10-2007 lúc 10:58 PM.
sandro_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-11-2007, 12:41 AM   #4
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
Trích:
Nguyên văn bởi sandro_bk View Post
cảm ơn bác Nam đã giải thích,em đã thử dịch chương trình ví dụ 5.1 của bác,em bỏ phần biến đổi ADC chỉ xuất PWM giá trị cố định nhưng ko hiểu sao các chân PWM3H và PWM3L ko chạy,còn các chân khác xuất bình thường,có khi nào các chân I/O này đã hư, hỏi thêm bác về phần thạch anh,con 30f4011 cho chạy đến 30 MIPS,em xài thạch anh 8Mhz cho chạy chế độ XT PLL16 tính ra là over clock nhưng nó vẫn cứ chạy bình thường ko biết nếu chạy như vậy có đảm bảo pic làm việc đúng ko?

p/s :em có sửa lại cho nó chạy chế độ complementary
Không rõ bạn sửa lại giá trị cho PWMCON1 như thế nào? Với cách dùng như của bạn, tôi sẽ đặt PWMCON1 là 0x00FF.

Nếu bạn chỉ dùng ít ngoại vi thì chip có thể không bị nóng lắm, khi đó bạn sẽ có thể chạy ở 32 MIPS. Tuy nhiên, chế độ làm việc này không được Microchip bảo đảm. Để học tập thì có lẽ bạn không cần Microchip đảm bảo các chỉ tiêu kỹ thuật.

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 01-11-2007, 01:26 AM   #5
sandro_bk
Đệ tử 4 túi
 
sandro_bk's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 66
:
em khai báo đúng như bác nói,còn cái này nữa,em thử khai báo cho port E là TRISE = 0xFFC3,nhưng RE0,RE1 vẫn xuất PWM ko biết sao nữa
sandro_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-11-2007, 05:04 PM   #6
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
C30 Compiler User's Guide:

Bạn xem tài liệu này chương 7, nó trình bày tất cả các cách viết hàm ngắt với C30, các vấn đề khác của C30 cũng được đề cập trong tài liệu này.

Chúc vui
falleaf 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


Múi giờ GMT. Hiện tại là 05:21 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