PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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ơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 12-11-2009, 12:10 AM   #16
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
Exclamation Lưu ý thứ tự code

Nếu bạn gửi kèm cả file mạch mô phỏng để check thì tốt!
Bạn thử chuyển hàm khoidong() lên trước ngat #int_ext xem sao!
(Để hàm ngắt ngay trên hàm main()).
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-11-2009, 12:20 AM   #17
pk178
Đệ tử 5 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 100
:
Đây là mạch mô phỏng của mình :

http://www.mediafire.com/?fkm22z3anye

Cám ơn các bạn đã giúp đỡ !!!
pk178 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-11-2009, 10:32 AM   #18
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
Wink Sorry!

Rất tiếc! Tớ dùng bản 7.4
Không mở được file của bác. :')
Bác đã tìm ra lỗi chưa zay?
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-11-2009, 04:30 PM   #19
nhanh0112
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 81
:
Trích:
Nguyên văn bởi pk178 View Post
Đây là mạch mô phỏng của mình :

http://www.mediafire.com/?fkm22z3anye

Cám ơn các bạn đã giúp đỡ !!!
Ko hiểu sao tui thử cái code của bạn với đoạn chương trình con giả lập bù vào phần thư viện còn thiếu của bạn... thì dịch ra chỉ thấy mấy warning thôi, chứ ko thấy error (cảnh báo là do các ngắt chồng chéo thôi!)
Code:
char ascii[10]={'0','1','2','3','4','5','6','7','8','9'};
void lcd_put_int(int dulieu)
{
lcd_putc(ascii[dulieu]);
}
int32 input_key()
{
return 1;
}
với cảnh báo sau
Code:
>>> Warning 216 "test1.c" Line 157(0,1): Interrupts disabled during call to prevent re-entrancy:  (@delay_ms1)
>>> Warning 216 "test1.c" Line 157(0,1): Interrupts disabled during call to prevent re-entrancy:  (lcd_send_nibble)
>>> Warning 216 "test1.c" Line 157(0,1): Interrupts disabled during call to prevent re-entrancy:  (lcd_send_byte)
>>> Warning 216 "test1.c" Line 157(0,1): Interrupts disabled during call to prevent re-entrancy:  (lcd_putc)
>>> Warning 216 "test1.c" Line 157(0,1): Interrupts disabled during call to prevent re-entrancy:  (hien_thi_thong_so)
      Memory usage:   ROM=13%      RAM=8% - 15%
      0 Errors,  5 Warnings.
có lẽ, bạn thử xem lại phần <keypad_input.c> thử xem
nhanh0112 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-11-2009, 08:56 PM   #20
pk178
Đệ tử 5 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 100
:
Cám ơn các bạn rất nhiều !!!

Mình đã thử bỏ thư viện keypad_input.c, đúng là nó chạy được thật, để mình xem lại xem cái thư viện đó sai chỗ nào, nhưng ko hiểu sao mình dùng cái thư viện chuẩn của ccs lại được nhỉ !!!
pk178 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-11-2009, 12:41 AM   #21
nhanh0112
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 81
:
Trích:
Nguyên văn bởi rikimaru87 View Post
cho em hỏi tí mọi người .
em dùng 6 kenh ADC trong pic 16f877a.
khi setup_adc_ports(AN0);
.....để đọc gia trị thì ok .
setup_adc_ports(AN1);
CCS báo lỗi không AN1 không dc định nghĩa.
nhưng khi tạo ccs em đã chọn là dùng 6 bộ ADC rùi mà ?
mọi người giúp em với
Bạn phải viết là:
Code:
setup_adc_ports(AN0_ANALOG);
setup_adc_ports(AN1_ANALOG);
.........
hoặc như bạn pk178 đã nói.

@pk178:Chắc do hàm Keypad của bạn có dụng chạm gì đó đến ngắt chính. Bạn có thể viết riêng hoặc tìm trên net về keypad 4x4 mà ko cần dùng ngắt, code cũng khá đơn giản mà. Ko nhất thiết phải dùng đúng thư viện của PIC
nhanh0112 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2009, 11:30 PM   #22
pk178
Đệ tử 5 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 100
:
Cám ơn các bạn đã giúp đỡ, vấn đề trên mình đã giải quyết được rồi, tuy ko được như ý muốn, nhưng cũng thực hiện được vấn đề.

Nguyên nhân CCS báo lỗi như vậy là do tràn stack, trong trình phục vụ ngắt dài quá, làm tràn stack, mình đã bỏ hết các hàm con gọi trong ngắt đi, thế là nó chạy ok.

Bây giờ mình lại gặp phải vấn đề này, dịch thì ok rồi, nhưng khi cho vào proteus mô phỏng thì nó cho cảnh báo sau :

"ADC conversion started before 'wait' time has expired following previous conversion or channel change"

Mình thử debug thì thấy nó cảnh báo ở dòng sau :
...
while(a > b){
a= read_adc(); // nó báo ở dòng này
while(!adc_done());
}
.....

Mình nghĩ mãi rồi, ko biết sai chỗ nào nữa, bạn nào biết thì giúp mình với, mình ko biết đưa ra mạch thật thì thế nào, nhưng mô phỏng nó báo vậy, chắc là cũng có vấn đề !

Cám ơn các bạn !
pk178 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à 04:13 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